12451 401f84bda6 chore: 清掉误入库的 agent 工具记忆目录与 Vite 模板 README(内容先按主题归位)
## 起因

用户问"现在确定所有文档都是按分类存放没重复和过期内容了吧" ——
**不能凭感觉答"是"**,于是做了一次针对**已跟踪文件**的体检(重复/断链/过期陈述三维度)。
第一轮体检结果:重复 0 组、断链 0 处,但**又扫出 3 处该处理的东西**。

## 一、`.workbuddy/memory/` —— 另一个 agent 工具的记忆目录被误入库

3 个文件(`MEMORY.md` / `2026-07-02.md` / `2026-07-07.md`),**全仓零引用**,
最后一次"提交"是搭车进 `feat(protocol): TCP v1.1 协议对齐` 这类无关提交 ——
与之前那几张误提交的图片同一模式。

- ⚠️ `2026-07-02.md` 里含一处**生图 API Key 片段**(`sk-ib7i...M2z`);
- `.gitignore` 里 `.codebuddy/` 早有,但 `.workbuddy/` **漏了** ⇒ 才被顺手提交进来。

### 处理:内容先归位,再删目录(不是一删了之)

按 `docs/README.md` 已确立的原则"**过时就删;仍有价值的归到正确的类**",
把 `MEMORY.md` 里仍有价值的三类内容分别落位:

| 内容 | 归到哪 | 为什么 |
|---|---|---|
| UI 颜色系统 / 背景容器 / 36 仓通道卡布局 | **`docs/tech/小程序用户端.md`** 新增「附:UI 设计规范(视觉口径,改动界面前必读)」 | 这是页面视觉口径,属小程序文档 |
| Ardot `batch_edit` 的 `fills`/`strokes`/`cornerRadius` 写法坑 + 设计稿 7 屏 ID | **`docs/compound-notes/2026-07-ardot-batch-edit-属性写法.md`** | 工具特有的单点教训,正是 compound-notes 的定义 |
| "开发前必须确认需求"、"生产环境须授权"、落地页明亮风格偏好 | **`AGENTS.md` 新增「操作规则」小节** | 项目级规则,须常驻加载 |

然后把 `.workbuddy/` 从版本控制移除并**加入 `.gitignore`**(连同 `.opencode/`、`.codegraph/`),
堵住同一个坑再犯。

## 二、`software/web/README.md` —— 建站模板残留

23 行里 9 行是 Vite/plugin-react/Oxlint 的模板话术(英文、与项目无关)。
`api-server` / `device-server` / `h5-uniapp` 三个工程**都没有** README —— 构建方式统一在
`AGENTS.md` 与 `docs/tech/部署手册.md` 里。⇒ **删除**。

## 三、一个我自己的误判(已纠正,记录以免后人重复)

我一度怀疑 `docs/tech/API.md` 接口表"少 12 行"(我数出 68 行,而 `mod.rs` 有 80 个 `.route(`)。
复核发现 **`API.md` 自己写明了计数约定**:"一行 = 一次 `.route(...)` 注册,共 80 行;
展开后 93 对" —— 而我的正则 `^\|\s*(GET|POST)\s*\|` **漏掉了 `| GET / POST |` 这种链式写法**。
用能匹配链式的正则重数 = **正好 80** ⇒ **`API.md` 是准确的,我的怀疑是错的**。

## 校验(只扫 git 已跟踪文件)

- 已跟踪文件 **217**(原 221 → 删 3 个工具记忆 + 1 个模板 README);
- 文档内容重复:**0 组**;
- 已跟踪 md 的本地链接:**0 断链**;
- `.workbuddy` 已跟踪文件数 = 0、工作区已不存在。

## 仍**刻意保留**的(不是遗漏)

- `生产环境.txt`:**唯一凭据清单**且被 `docs/tech/小程序用户端.md` 引用为密钥记录处 ——
  上一提交已把"不入代码仓库"这句与事实矛盾的表述改准;是否改走 `.gitignore`+密码管理器由你定。
- `docs/README.md` 的「旧名→现名映射」表 / 处置记录 / 自证方法:**必须**出现旧名,属预期。
- `docs/compound-notes/TEMPLATE.md`(94 B):新建笔记的模板,给该目录提供格式约束。
- `tasks/002-未结待办-*.md`:两项未结(`energy` 等硬件答复、长函数重构),
  `tasks/` 本身已 gitignore、不入库。
2026-09-20 05:04:53 +08:00

146 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# docs/ 文档地图
> **本文件是 `docs/` 的分类索引。** 新增、移动或改名任何文档后,**必须回来更新本文件**
> 并同步全仓引用(见文末「维护约定」)。
## 一、分类总览
| 目录 | 定位 | 权威性 | 谁该读 |
|------|------|--------|--------|
| [`protocol/`](#protocol设备协议) | **平台设备协议**(TCP,冻结,对硬件工程师交付) | ⭐ **唯一权威** | 硬件工程师、固件、平台 TCP 相关开发 |
| [`tech/`](#tech平台技术文档) | **平台技术文档**(开发/运维必读) | ⭐ 权威(各自领域内) | 后端/前端/运维 |
| [`hardware/`](#hardware硬件侧总线协议) | **硬件侧总线协议**(RS485,**不是**平台 TCP 协议) | 硬件事实依据 | 硬件工程师、对接电源/BMS 的人 |
| [`contract/`](#contract合同与规格) | **合同、规格、验收标准**(商务依据) | 事实依据,但不描述实现 | PM、验收方、新人了解范围 |
| [`compound-notes/`](#compound-notes经验沉淀) | **单点经验笔记**(踩坑/技法) | 参考,非权威 | 遇到同类问题的人 |
## 二、谁是权威(口径优先级,避免"两份文档谁对"的扯皮)
> ### ⚠️ 关于"到底有几份 TCP 协议文档"
>
> **全仓只有一份**:`docs/protocol/柜控板固件对接文档.md`。
> `docs/protocol/` 目录下**有且仅有这一个文件** —— 这是刻意的,便于一眼确认。
>
> 历史上曾有三份内部件,已在协议 v1.1 前后删除(用户指示:只保留一份权威):
> `docs/tcp-protocol.md`、`docs/TCP报文交互示例.md`、`docs/柜控板-平台TCP接口文档.md`。
>
> 若你看到的"另一份 TCP 协议"是下面这些,它们**都不是平台 TCP 协议**:
> - `docs/hardware/1TN协议标准_*` —— **RS485 总线协议**(仓控板 ↔ 翌工电源),另一条物理链路;
> - `docs/tech/API.md` 的「TCP 设备通讯协议」章节 —— 只有一句**指回权威文档的链接**,不重复内容;
> - `tasks/*.md` —— 任务草稿(**`tasks/` 已 gitignore,不入库**),文件名可能含"TCP协议"
> 但那是任务记录,不是规格。
1. **`protocol/柜控板固件对接文档.md`** —— 设备协议(帧格式 / `act` / 字段名 / 签名 / `id` 规则)
的**唯一权威**。协议**冻结**,设备端固件不可改。
2. **根目录 `AGENTS.md`** —— **平台侧实现口径**的权威:Redis 键与字段、接口行为、库结构、
验收流程、部署注意事项。与 `tech/API.md` 的平台存储/行为描述冲突时,**以 `AGENTS.md` 为准**
(它的每一条都按代码契约与库实测核对过)。
3. **`tech/API.md`** —— **HTTP 接口清单与响应结构**的权威(含数据单位规范)。
4. **代码与文档冲突时**:先确认是不是代码错;确认代码对就**改文档**并在报告里点出。
## 三、逐目录说明
### protocol/ —— 平台设备协议(**只有一份**)
| 文件 | 说明 |
|------|------|
| `柜控板固件对接文档.md` | **唯一权威 TCP 文档**(v1.1.1)。帧格式、通用规则(`act`/`suc`/`msg_id`/60 秒超时/登录门控)、指令清单、签名算法与自测向量、安全码自愈、带注释报文示例(附 A)、变更记录(附 B)。**既是内部文档也可直接对外交付。** |
⛔ **不要在这里放第二份协议文档**(哪怕是"内部稿""示例集""补充说明")——
历史上正是这样分叉出三份,最后对不上。要补充内容就**改这一份并升版本号**(记入它的「附 B」)。
### hardware/ —— 硬件侧总线协议
| 文件 | 说明 |
|------|------|
| `1TN协议标准_YG20240118-1_V1.0.md` | 仓控板 ↔ 电源(苏州翌工)1TN RS485 协议,文本版 |
| `1TN协议标准_苏州翌工电源_V1.0.pdf` | 同上,厂家原始 PDF |
| `硬件与系统设计文档.md` | **硬件与系统设计原文**(46 KB):硬件架构、仓控/柜控主板设计、指示灯状态机、充电控制逻辑(握手/双模式/动态调整/无协议模式)、BMS 协议适配、安全防护联动、性能指标、第三方服务配置。**硬件侧的主规格文档。** |
> ⚠️ `1TN协议标准_*` 是**另一条物理链路**(柜内 485 总线),**与平台 TCP 协议无关** ——
> 别把它当成"第二份 TCP 协议"。硬件侧的其它总线协议(BMS:星恒 Modbus / 天能 485)如需入库,也放这里。
>
> ⚠️ `硬件与系统设计文档.md` **早于现行实现**:其中**硬件设计部分仍是权威参考**,
> 但**软件平台部分(第 7 章)已被 `AGENTS.md` + `docs/tech/` 取代** ——
> 两者冲突时,软件口径一律以 `AGENTS.md` 为准(它按代码契约与库实测核对过)。
### tech/ —— 平台技术文档
| 文件 | 说明 | 入口 |
|------|------|------|
| `API.md` | HTTP 接口清单与响应结构 + **数据单位规范**(整数存储,禁浮点) | PC/小程序前端、后端 |
| `数据模型.md` | 21 张表的逐列语义、外键/唯一键、建表依赖顺序 | **改表结构前必读** |
| `部署手册.md` | 完整部署步骤、nginx 两份 conf.d 全文、**全部 11 条部署注意事项** | 运维、发版 |
| `小程序用户端.md` | 小程序页面清单、逐页职责、状态位分层展示、RSSI 分档口径 | 小程序开发 |
> 这四份是 `AGENTS.md` 的**详细参考篇**:`AGENTS.md` 只保留"判据 + 链接"
> (因为 `AGENTS.md` 超出工作区指令预算 65,536 B 时会被**按头部截断**,尾部根本不加载)。
### contract/ —— 合同与规格
`开发合同` / `附件一-硬件规格` / `附件二-软件规格` / `附件三-交付与验收标准` /
`附件-开发需求规格说明书`,各含 `.md` + 原始格式(`.docx` / `.pdf` / `.html`)双份。
> 另有 `营业执照.jpg`(主体资质,小程序/备案用)。
>
> 用途:**范围与验收的事实依据**。描述"要做什么 / 达到什么标准",**不描述当前实现**
> ——实现现状一律以 `AGENTS.md` + 代码为准。
### compound-notes/ —— 经验沉淀
单点问题的笔记:`2026-08-15-sql-injection-format-param-binding.md`(SQL 注入成因与修法)、
`2026-07-ardot-batch-edit-属性写法.md`(设计稿批量编辑的属性坑)、
`TEMPLATE.md`(新建笔记的模板)。**参考性**内容,
遇到同类问题时查;结论若上升为通用规范,应回写进 `AGENTS.md` 的「踩过的坑」。
### ~~archive/~~ —— 已取消(2026-09-20)
**不再设归档目录。** 曾经的 `archive/` 三份文件已按下述依据处置:
| 原文件 | 处置 | 依据 |
|---|---|---|
| `开发文档.md` | **移出归档** → `hardware/硬件与系统设计文档.md` | 它**不是过时文档而是归错类**:含硬件设计(主板、指示灯状态机、充电控制、BMS 适配、防护联动),这些在 `AGENTS.md`/`tech/` 里**没有**。仅第 7 章软件部分被取代。 |
| `审查报告-数据单位一致性-2026-07-06.md` | **删除** | 一次性审查报告,**发现的问题全部已解决**(SOC/SOH 单位标注早已重写;该报告以已不存在的 `tcp-protocol.md` 为基准)。 |
| `项目深度分析报告-2026-07-06.md` | **删除** | 同上。其 4 项"发现的问题"均已失效:明文密码已成**明示豁免**、"可能用 taro"已确认是 `h5-uniapp`、`test/` 已存在、温度单位已统一。 |
> 💡 **为什么不设归档**:被删除的内容**在 git 历史里完整可查**(`git log -- <原路径>`),
> 归档目录的"留痕"价值因此为零,却会持续制造"这文件还算不算依据"的歧义。
> 结论:**过时就删,历史交给 git**;仍有价值的内容应当**归到正确的类**而不是塞进 archive/。
## 四、旧名 → 现名映射(查旧链接时用)
| 旧路径(已不存在) | 现路径 |
|---|---|
| `docs/tcp-protocol.md` | `docs/protocol/柜控板固件对接文档.md` |
| `docs/柜控板-平台TCP接口文档.md` | 已于协议 v1.1 删除(内部重复文档,内容并入上者) |
| `docs/柜控板固件对接文档.md` | `docs/protocol/柜控板固件对接文档.md` |
| `docs/API.md` | `docs/tech/API.md` |
| `docs/数据模型.md` · `docs/部署手册.md` · `docs/小程序用户端.md` | 同名,移到 `docs/tech/` |
| `docs/开发文档.md` | `docs/hardware/硬件与系统设计文档.md`(**不是过时,是归错类**) |
| 根目录 `换电柜用锂电池充电器1TN标准通信协议 - RS485 V1.0(1).pdf` | `docs/hardware/1TN协议标准_苏州翌工电源_V1.0.pdf`(**同一文件,根目录那份是重复,已删**) |
| `docs/审查报告-数据单位一致性-2026-07-06.md` · `docs/项目深度分析报告-2026-07-06.md` | **已删除**(问题全部已解决;git 历史可查) |
| 其余合同/规格/验收/协议标准 | 见上表,分别归入 `contract/`、`hardware/` 与 `protocol/` |
## 五、维护约定(新增/移动文档时必做)
1. **归位**:按"协议 / 技术 / 硬件 / 合同 / 经验"分类放入对应目录,**不要再平铺在 `docs/` 根**。
2. **更新本索引**:在对应章节的表格里加一行(文件 + 一句话定位 + 谁该读)。
3. **同步全仓引用**:文档路径散落在 `AGENTS.md`、`README.md`、**Rust/TS/Vue 源码注释**、
`test/`、`tools/`、`tasks/` 里;移动后必须全仓替换。
校验方法(**应无输出**):
```bash
# 找仍指向旧平铺路径的活引用
# · 排除 docs/README.md —— 本文件的「旧名 → 现名映射」表**必须**出现旧名
grep -rn --exclude-dir={.git,node_modules,target,dist} \
-e 'docs/API\.md' -e 'docs/数据模型\.md' -e 'docs/部署手册\.md' \
-e 'docs/小程序用户端\.md' -e 'docs/开发文档\.md' . \
| grep -v '^\./docs/README\.md:'
```
> 已实测该命令**能抓到问题**:往 `docs/tech/API.md` 末尾植入一行
> `<!-- probe: docs/API.md -->` → 命中;删除后 → 无输出。
> ⚠️ 注意这些 `.md` 多为 **CRLF** —— 用脚本批量删除/替换时**必须按 `\r?\n` 处理**,
> 否则会漏改(我第一次就踩了:`\n` 正则配不上 `\r\n`,以为删干净了其实残留)。
4. **改 `AGENTS.md` 的链接**:`AGENTS.md` 里所有 `docs/...` 链接都必须是**分类后**的路径
(`docs/protocol/...`、`docs/tech/...`)。
5. **过时就删,不要设归档**:被删内容在 git 历史里完整可查,归档只会制造
"这文件还算不算依据"的歧义。仍有价值的**归到正确的类**,规范要写进 `AGENTS.md` 或 `tech/`。