Files

152 lines
15 KiB
Markdown
Raw Permalink 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.
# PRD 模块需求文件
本目录把 [`../Continental-Retail-APP-PRD.md`](../Continental-Retail-APP-PRD.md) 第 4 章的 14 个业务模块拆成独立文件,便于分模块维护、分模块评审、分模块指派负责人。
## ⚠️ 同步契约(必读)
| 项 | 约定 |
| --- | --- |
| **谁为准** | **本目录为准。** 需求变更一律改本目录的模块文件 |
| 主文件第 4 章 | **不要直接编辑,改动会在下次回灌时被覆盖。** 已于 2026-08 完成首次回灌,主文件升至 V1.1,与本目录一致 |
| 主文件其余章节 | 第 1–3、5–10 章与附录 A/B/C/D 仍以主文件为准,本目录只做**只读引用** |
| 回灌方式 | 跑 `scripts/build_prd.py backfill`(先 `--dry-run` 看差异)。范围仅限各模块文件 `## 附:本模块归拢信息` 分界线**以上**的部分,分界线以下不回灌 |
| 回灌时机 | 需要出 Word / PDF 交付件时,或模块文件改完想让主文件跟上时。脚本是幂等的,多跑无害 |
| 派生数据 | 附录 D.2、头部规模声明、附录 C.3 首句、10.2 图例计数、各模块头部信息表的「需求条数」行——**这五处由脚本重算,不要手改** |
| 仍需手工维护 | **附录 A / B / C.2 与 10.2 的条目正文**。脚本只校验数目对不对(对不上会在 `verify` 里报出来),不替你写条目 |
| 编号规则 | 沿用主文件 1.7`REQ-<模块码>-<3位序号>`,**一经分配不再复用**,删除时保留编号并标注「已废弃」 |
| 待确认标记 | 沿用 `TODO(REQ-xxx-nnn)`**禁止使用 `tbd`** |
三条命令,都用仓库根目录的 `.venv`(自带 pandoc 与 Pillow,系统 Python 跑不了):
```bash
.venv/Scripts/python.exe scripts/build_prd.py verify # 只校验,不改文件
.venv/Scripts/python.exe scripts/build_prd.py backfill --dry-run # 看回灌会改什么
.venv/Scripts/python.exe scripts/build_prd.py backfill # 回灌,末尾自动跑 verify
.venv/Scripts/python.exe scripts/build_prd.py export # 压缩配图 + 出 docx
```
`export` 做两件事:把 `prd/` 下三个图源目录的 PNG **就地**调色板量化(首次跑:**23.4 MB → 9.7 MB**;已量化的跳过,日后新加的截图会自动压掉,免得仓库又长胖),再用 pandoc 生成 `prd/Continental-Retail-APP-PRD.docx`(约 9.8 MB,含全部 173 张图与三级目录)。**PDF 不由脚本生成**——pandoc 转 PDF 要 LaTeX,本机没装,用 Word 打开 docx 另存。
> 量化是有损的(256 色)。这批截图是扁平 UI 图,实测中位 RMS 误差 0.82/255、最差一张 3.10(延保「扫描车牌」,取景框里有实拍照片),文字与控件肉眼无差别。**原图都在 git 历史里**,要取回某张跑 `git checkout <commit> -- prd/xxx.png`。
版式模板是 `scripts/reference.docx`,首次 `export` 时自动生成(pandoc 默认模板 + 把东亚字体钉成标题「微软雅黑」/ 正文「等线」,否则换台机器 Word 会自挑中文字体)。**已存在就原样使用**,在 Word 里改过的版式不会被脚本覆盖;想重置就删掉它再跑一次。
> 主文件与本目录并存,漂移风险真实存在。降低漂移的唯一手段是:**只在本目录改需求**,主文件第 4 章当只读产物看待。
## 模块索引
「需求 / 待确认」两列是**本目录各模块文件的现值**;括号内是逐图核对前的 2026-08 基线,两者的差额就是核图时新增的条目。**主文件[附录 D.2](../Continental-Retail-APP-PRD.md#d2-模块级追溯汇总) 与[第 10.2 节](../Continental-Retail-APP-PRD.md#102-待确认项清单)已按括号外的现值同步**,下次改需求后须再同步一次。
| 序 | 文件 | 章节 | 模块码 | 粒度 | 需求 | 待确认 | 完成度 | 图 | 现状承载系统 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 01 | [账号登录](./01-LGN-账号登录.md) | 4.1 | LGN | 14 维 | 11 | 7 | 36% | 1 | O2O(用户主数据) |
| 02 | [APP 首页与导航](./02-HOM-APP首页与导航.md) | 4.2 | HOM | 14 维 | 1615 | 1110 | 31% | 5 | ROOS / O2O / 延保 |
| 03 | [销售](./03-SAL-销售.md) | 4.3 | SAL | 14 维 | 3714 | 116 | 70% | 28 | F6 + O2O |
| 04 | [提醒](./04-RMD-提醒.md) | 4.4 | RMD | 14 维 | 7 | 2 | 71% | 3 | F6PC 端,App 内嵌 H5 |
| 05 | [延保](./05-WTY-延保.md) | 4.5 | WTY | 14 维 | 3810 | 65 | 84% | 43 | 延保门店端 |
| 06 | [采购](./06-PUR-采购.md) | 4.6 | PUR | 14 维 | 1813 | 127 | 33% | 9 | ROOS(马牌)+ F6(非马牌) |
| 07 | [库存](./07-INV-库存.md) | 4.7 | INV | 6 维 | 117 | 95 | 18% | 12 | O2O + ROOS |
| 08 | [我的 / 个人中心](./08-MIN-我的.md) | 4.8 | MIN | 6 维 | 206 | 136 | 35% | 16 | ROOS + O2O + 延保 |
| 09 | [门店管理](./09-STM-门店管理.md) | 4.9 | STM | 6 维 | 147 | 136 | 7% | 14 | O2O |
| 10 | [财务与对账](./10-FIN-财务与对账.md) | 4.10 | FIN | 6 维 | 147 | 125 | 14% | 11 | O2O + ROOS |
| 11 | [返利中心](./11-RBT-返利中心.md) | 4.11 | RBT | 6 维 | 116 | 73 | 36% | 10 | O2O + 延保 |
| 12 | [经营业绩与报表](./12-PRF-经营业绩与报表.md) | 4.12 | PRF | 6 维 | 96 | 74 | 22% | 8 | O2O + ROOS + 延保 |
| 13 | [营销与会员](./13-MKT-营销与会员.md) | 4.13 | MKT | 6 维 | 85 | 74 | 13% | 7 | O2O |
| 14 | [福利兑换(MSIP](./14-MSP-福利兑换.md) | 4.14 | MSP | 6 维 | 86 | 4 | 50% | 0 | MSIP |
| | **合计** | | | | **222**121 | **121**74 | **46%** | **167** | |
模块索引。完成度 =(需求条数 − 待确认)÷ 需求条数。
> **括号内的 D.2 基线曾有一处错**:STM 行原记「需求条数 8」,但当时 4.9 正文只有 REQ-STM-001~007 共 7 条且无空号,上表括号内按实际的 7 记(故基线合计 121 实为 120)。根因是 V1.0 的 STM-006/007 挂错了 TODO 编号,已在回灌时连同 FIN、MKT 的同类错位一并修正,主文件 10.2 各行标注了原编号以便追溯。详见 [09-STM 的附-5](./09-STM-门店管理.md#附-5-本次拆分新增发现)。
>
> 逐图核对把需求条数从 121 提到 222(+101)、待确认从 74 提到 121(+47 净增:新增 49 条、裁决关闭 2 条)。**增量全部来自逐张核看 167 张配图**:现状截图里实际存在、而 2026-08 版正文一字未提的机制(如门店本地化服务项目价目表、消费券额度按补货率累积、延保生效的两段式确认、扫码出库的「去延保」分支),以及设计稿与现状互相冲突、必须裁决的口径。各模块文件的 `附-5` 逐条列明了触发证据。
**需求依据**(主文件 4.0 模块总览):LGN 业务需求 + 设计稿;HOM 业务需求 + 设计稿 3 版;SAL 业务需求 + 原型图 + O2O 订单截图;RMD 业务需求 + 原型图;WTY 业务需求 + 延保小程序 44 张截图;PUR 业务需求 + ROOS 截图 + 设计稿;INV / FIN / RBT / PRF / MKT 现状截图反推;MIN / STM 业务需求 + 现状截图 + 设计稿;MSP 现状入口 + 设计稿 + 业务确认(页面待补)。
> 第 4 章共 173 张图中的 167 张归属这 14 个模块;其余 6 张分布在主文件 2.7 现状小程序功能全景(4 张)与 6.1 / 6.2 后台管理(2 张),不在本目录范围内。
## 模块文件结构
每个文件以 `## 附:本模块归拢信息` 为分界线:
- **分界线以上** —— 1:1 对应主文件 4.x 正文,保留原有小节编号(如 `4.7.1`)。回灌主文件时只处理这部分。
- **分界线以下** —— 从主文件其它章节归拢来的本模块分片:业务数据字典(附录 A)、权限矩阵(附录 B)、待确认项(10.2)、配图清单(附录 C)。这部分**不回灌**,主文件的附录仍是全局视图。
> **文件标题必须与主文件 4.x 标题逐字一致**(如 `# 4.9 门店管理`,**不要**加模块码写成 `# 4.9 门店管理(STM)`)。两个原因:一是回灌时只需把 `#` 降为 `##`,不改标题文字;二是主文件附录 C 用 `[4.9 门店管理](#49-门店管理)` 这类锚点自引,各模块之间的互链也复用同一套 slug —— 标题一改,**上百条链接同时静默失效**。模块码写在下方信息表的「模块码」行和文件名里,标题里不重复。
## 配图说明规范(四段式)
每张图正下方接四段,段名加粗 + 破折号,与主文件 1.8.1 的写法一致:
```markdown
![现状-O2O 扫码入库](../mini-program-images/O2O/扫码入库.png)
**页面内容** —— 一句话:这是什么页、有哪些主要区块
**关键交互** —— ①控件 → 结果 ②控件 → 结果
**可用角色** —— 店长 …;技工 …
**需求关联** —— REQ-xxx-nnn、REQ-xxx-nnn
```
硬性规则:
1. **页面内容只写一句话**,说清「这是什么页 + 有哪些主要区块」即可,**不逐个控件描述文案、颜色、位置**。一句写不下的,说明细节该放到别处:交互过程写进「关键交互」,结论与推断写进图下的 `>` 引用块,冗长的取值清单与脏数据明细写进 `附-5` 的证据列 —— **不在图下重复**
2. **写之前必须实际打开该 PNG**,不得据文件名臆造。空态、测试数据、已选中的筛选值属于会误导读者的关键信息,须用一句点明(如「**本图为空态**,记录行字段无法确认」)。看不清或无法判断的写「本图无法确认 xxx」,**不猜**。
3. **关键交互**用 ①②③ 编号,每条写成「控件 → 结果」。纯静态展示图写「无交互,仅作内容佐证」。
4. **可用角色**沿用主文件附录 B 图例:✅ 完整权限 · 🔸 受限 · ⚙️ 需店长/后台显式授权 · ✗ 无权限 · ❓ 待确认。有待确认的就地带 `TODO(REQ-xxx-nnn)`
5. **需求关联**列 REQ 编号并锚到本文件的业务规则小节;不支撑任何编号需求的写「—(仅作现状佐证)」。
6. 图片一律用**相对路径**引用,从本目录出发要多一层 `../``../app-design-images/``../mini-program-images/{O2O,ROOS,Warranty}/``../images/`
## 链接写法
| 目标 | 写法 |
| --- | --- |
| 本模块内小节 | `[4.7.4](#474-业务规则)` |
| 其它模块整节 | `[4.9 门店管理](./09-STM-门店管理.md#49-门店管理)` |
| 其它模块内小节 | `[4.2.5](./02-HOM-APP首页与导航.md#425-导航收敛与角色化配置)` |
| 主文件其它章节 / 附录 | `[痛点 2.3](../Continental-Retail-APP-PRD.md#23-进销存--erp-数据)` |
锚点按 GitHub 规则从标题生成:转小写、去掉标点(含中文全角 `()、,`)、空格换 `-`。所以 `## 4.14 福利兑换(MSIP` 的锚点是 `#414-福利兑换msip``## 2.3 进销存 / ERP 数据` 的是 `#23-进销存--erp-数据``/` 被删除后留下两个空格,成为双连字符)。**写完链接要点开验证**——锚点错了不会报错,只是不跳转。
主文件本身仍须满足 CLAUDE.md 的「自包含、只用锚点、不引用其它 md」约束;本目录是仓库内部工作副本,不受该约束限制。
## 状态与待办
**14 个模块文件已全部建成**,167 张配图逐张核看后写了四段式说明,主文件 10.2 与附录 A/B/C 的本模块分片已归拢到各文件的 `附-1` ~ `附-4`,逐图核对中新增的需求与待确认项记在各文件的 `附-5`。**2026-08 已完成首次回灌**,主文件升至 V1.1。
拆分完成后跑过的一致性核对(结果均为通过):
| 核对项 | 结果 |
| --- | --- |
| 图片路径可解析 | 167 处引用,磁盘缺失 **0** |
| 图不丢 | 主文件第 4 章 167 张 ∩ 本目录 167 张,双向差集**均为空** |
| 每张图都有说明 | 缺四段式说明的图 **0**(拆分前的基线是 173 张里 94 张裸图) |
| REQ 不丢不重 | 主文件第 4 章 121 个编号,每个**恰好**归属一个模块文件;本目录现有 222 个 |
| 待确认项 | 主文件 10.2 共 97 条 = 第 4 章 74 条 + 章外 23 条;74 条**全部**落到对应模块的 `附-3`,本目录现为 121 条 |
| 链接可达 | 全仓 md 共 1784 条带锚点/跨文件链接,失效 **0** |
> 最后一项曾一次性失效 139 条:模块文件的一级标题当初写成了 `# 4.9 门店管理(STM)`,多出的模块码改变了 slug,而上百条互链是按主文件的 `## 4.9 门店管理` 生成的。已把 14 个 H1 全部对齐主文件标题,另修正 `#d2-模块覆盖度`→`#d2-模块级追溯汇总`(主文件实为「D.2 模块级追溯汇总」)等 10 处失效目标。规则见上文[模块文件结构](#模块文件结构)与[链接写法](#链接写法)。
回灌后在**主文件一侧**另跑过一轮(结果均为通过):
| 核对项 | 结果 |
| --- | --- |
| 图片路径可解析 | 173 处引用,磁盘缺失 **0** |
| 站内锚点 | 1289 条,失效 **0**;正文无跨文件链接(满足 CLAUDE.md 的自包含约束,`modules/` 的指引只写在 HTML 注释里) |
| REQ 编号 | 全文 296 个不同编号,正文重复定义 **0** |
| TODO ↔ 10.2 | 正文 146 个 `TODO(...)` 与 10.2 的 144 条 + 2 条已关闭**双向对齐**,无孤儿 |
| 计数三处联动 | 头部规模声明 / 附录 C / 附录 D.2 / 10.2 均为 296 需求、144 待确认、173 图、44 表;D.2 逐行累加与合计行一致,各行完成度按公式复算无误 |
| `tbd` | 全文 **0**(唯一一处出现在 1.8 的「本文档不使用 `tbd`」这句禁令本身) |
待办:
- [x] **回灌主文件**(2026-08 完成)—— 需求条数 121 → 222、待确认 74 → 121(全文 97 → 144、296 条需求),主文件的规模声明、附录 B / C / D.2 与第 10.2 节已同步,第 4 章开头加了指向本目录的 HTML 横幅
- [x] **构建脚本 [`scripts/build_prd.py`](../../scripts/build_prd.py)**2026-08 完成)—— `backfill` / `verify` / `export` 三个子命令,见上文[同步契约](#-同步契约必读)。首次机器回灌顺带修好了主文件里 10 处被早前一次编辑误删字符的句子(模块文件留着完好原文)
- [x] **`prd-export/` 已删除**(2026-08)—— 那是一整套与 `prd/` 一模一样的图片副本,仓库白背 31 MB。改成配图就地量化,docx 直接出到 `prd/Continental-Retail-APP-PRD.docx`
- [ ] **PDF 待重出**:原 `prd-export/Continental-Retail-APP-PRD.pdf` 是 2026-08-21 的 V1.0 版,内容已过时,已随目录删除。脚本不生成 PDF,须用 Word 打开新 docx 另存到 `prd/Continental-Retail-APP-PRD.pdf`
- [ ] 主文件附录 A 缺 INV / RBT / MKT / MSP 四个模块的字段清单,需业务补(已记为 `TODO(REQ-INV-011)` 等,见各文件 `附-1`
- [ ] 补采两张截图:延保「待补充装车视频」tab(附录 C 第 6、7 行指向的两个文件截图像素一致,该 tab 实际未拍到)、O2O「交易手续费说明」的抖音团购段(被底部按钮遮挡)
- [ ] 人工抽查:用 VS Code 的 Markdown 预览打开任一模块文件,确认图片经 `../` 正常渲染、四段式说明与图上所见一致(路径已机器校验,渲染效果需肉眼确认)