# 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` 末尾植入一行 > `` → 命中;删除后 → 无输出。 > ⚠️ 注意这些 `.md` 多为 **CRLF** —— 用脚本批量删除/替换时**必须按 `\r?\n` 处理**, > 否则会漏改(我第一次就踩了:`\n` 正则配不上 `\r\n`,以为删干净了其实残留)。 4. **改 `AGENTS.md` 的链接**:`AGENTS.md` 里所有 `docs/...` 链接都必须是**分类后**的路径 (`docs/protocol/...`、`docs/tech/...`)。 5. **过时就删,不要设归档**:被删内容在 git 历史里完整可查,归档只会制造 "这文件还算不算依据"的歧义。仍有价值的**归到正确的类**,规范要写进 `AGENTS.md` 或 `tech/`。