206 lines
8.9 KiB
Markdown
206 lines
8.9 KiB
Markdown
# Fonrey ADR 动态决策记录(Architecture & Requirement Decision Records)
|
||
|
||
> 目的:沉淀 Vibe Coding 过程中的**技术决策**与**需求决策**,避免跨会话后方案漂移。
|
||
> 适用范围:全项目(TECH_STACK / DATA_MODEL / PRD / TEST_CASES / 开发流程)。
|
||
> 维护原则:新增决策只追加,不覆盖历史;若决策被替代,必须新增 supersede 记录。
|
||
|
||
---
|
||
|
||
## 变更历史
|
||
|
||
| 日期 | 变更人 | 变更内容 |
|
||
|---|---|---|
|
||
| 2026-04-30 | Atlas | 初始化 ADR 动态决策记录;补录当日关键技术与需求决策 |
|
||
|
||
## 一、记录规范(必须遵守)
|
||
|
||
### 1.1 决策ID规则
|
||
- 格式:`ADR-YYYYMMDD-XXX`
|
||
- 例:`ADR-20260430-001`
|
||
|
||
### 1.2 决策类型
|
||
- `TECH`:技术决策(架构、接口、数据、测试、流程规范)
|
||
- `REQ`:需求决策(范围、术语、优先级、验收口径)
|
||
|
||
### 1.3 状态枚举
|
||
- `accepted`:已生效
|
||
- `superseded`:已被替代(需指向新 ADR)
|
||
- `deprecated`:废弃(不再执行)
|
||
|
||
### 1.4 最小字段
|
||
每条 ADR 必须包含:
|
||
1. 决策ID
|
||
2. 日期
|
||
3. 模块
|
||
4. 类型(TECH/REQ)
|
||
5. 状态
|
||
6. 背景
|
||
7. 决策内容
|
||
8. 影响范围
|
||
9. 关联文档
|
||
10. 备注(可选)
|
||
|
||
---
|
||
|
||
## 二、按日期记录(主索引)
|
||
|
||
## 2026-04-30
|
||
|
||
### ADR-20260430-001
|
||
- **类型**:REQ
|
||
- **模块**:测试治理(全局)
|
||
- **状态**:accepted
|
||
- **背景**:测试文档与沟通中存在“业务旅程/测试用例”术语混用,易导致执行偏差。
|
||
- **决策**:全项目统一使用“测试用例”术语,不再以“业务旅程”作为执行口径。
|
||
- **影响范围**:`TECH_STACK/测试规范.md`、`TEST_CASES/*`
|
||
- **关联文档**:`TECH_STACK/测试规范.md`
|
||
|
||
### ADR-20260430-002
|
||
- **类型**:TECH
|
||
- **模块**:测试治理(全局)
|
||
- **状态**:accepted
|
||
- **背景**:多模块并行时测试编号易重复、不可追溯。
|
||
- **决策**:采用全局唯一测试用例编号:`TC-FON-XXXXXX`,并建立注册表,禁止复用废弃编号。
|
||
- **影响范围**:所有测试用例文档与测试报告系统
|
||
- **关联文档**:
|
||
- `TEST_CASES/TEST_CASE_ID_SPEC.md`
|
||
- `TEST_CASES/TEST_CASE_REGISTRY.md`
|
||
|
||
### ADR-20260430-003
|
||
- **类型**:TECH
|
||
- **模块**:测试执行与报告
|
||
- **状态**:accepted
|
||
- **背景**:失败定位粒度不足,无法快速定位到具体步骤。
|
||
- **决策**:测试报告必须支持 `test_case_id + step_id` 级追踪,并记录 `expected/actual/error_message` 与证据路径。
|
||
- **影响范围**:CI 报告、自动化测试框架
|
||
- **关联文档**:`TECH_STACK/测试规范.md`
|
||
|
||
### ADR-20260430-004
|
||
- **类型**:REQ
|
||
- **模块**:登录管理
|
||
- **状态**:accepted
|
||
- **背景**:登录 PRD v2.0 与技术方案存在接口命名漂移。
|
||
- **决策**:登录模块接口路径以 PRD v2.0 为唯一权威,技术方案与测试用例全部对齐 PRD 路径。
|
||
- **影响范围**:登录模块 API 设计、自动化测试调用路径
|
||
- **关联文档**:
|
||
- `PRD/登录管理/用户登录管理模块PRD.md`
|
||
- `TECH_STACK/登录管理技术方案.md`
|
||
- `TEST_CASES/TEST_CASES_LOGIN_MODULE.md`
|
||
|
||
### ADR-20260430-005
|
||
- **类型**:REQ
|
||
- **模块**:登录管理
|
||
- **状态**:accepted
|
||
- **背景**:Story 边界存在历史遗留混淆。
|
||
- **决策**:登录模块范围冻结为:短信验证码登录为 MVP 正式能力;“找回用户名”废弃;微信扫码保留为预留。
|
||
- **影响范围**:实现范围、测试覆盖边界
|
||
- **关联文档**:
|
||
- `PRD/登录管理/用户登录管理模块PRD.md`
|
||
- `TECH_STACK/登录管理技术方案.md`
|
||
|
||
### ADR-20260430-006
|
||
- **类型**:TECH
|
||
- **模块**:客户端发布管理
|
||
- **状态**:accepted
|
||
- **背景**:发布模块缺少可执行技术方案,无法指导实现与测试。
|
||
- **决策**:新增独立技术方案文档,明确 Electron 壳层边界、EV 签名、Heartbeat、自动更新、完整性校验、R2 版本管理、官网分发、便携版策略。
|
||
- **影响范围**:`apps/release` 设计与落地
|
||
- **关联文档**:
|
||
- `TECH_STACK/客户端发布管理技术方案.md`
|
||
- `PRD/发布管理/客户端发布管理模块PRD.md`
|
||
|
||
### ADR-20260430-007
|
||
- **类型**:TECH
|
||
- **模块**:客户端发布管理 / 数据模型
|
||
- **状态**:accepted
|
||
- **背景**:统计口径需支撑跨租户版本分布与活跃安装数。
|
||
- **决策**:以 `public.client_heartbeats` 作为心跳事实表,使用 `(tenant_id, device_id)` 为 Upsert 锚点,活跃定义为最近 24h。
|
||
- **影响范围**:统计接口、看板与聚合查询
|
||
- **关联文档**:`DATA_MODEL/DATA_MODEL_PUBLIC.md`
|
||
|
||
### ADR-20260430-008
|
||
- **类型**:TECH
|
||
- **模块**:客户端发布管理 / 安全
|
||
- **状态**:accepted
|
||
- **背景**:下载链路存在篡改与损坏风险。
|
||
- **决策**:客户端更新包必须进行 SHA256 完整性校验,校验失败禁止安装并保留当前版本可用。
|
||
- **影响范围**:客户端更新器、发布接口响应字段
|
||
- **关联文档**:
|
||
- `TECH_STACK/客户端发布管理技术方案.md`
|
||
- `PRD/发布管理/客户端发布管理模块PRD.md`
|
||
|
||
### ADR-20260430-009
|
||
- **类型**:TECH
|
||
- **模块**:客户端发布管理 / API
|
||
- **状态**:accepted
|
||
- **背景**:历史文档存在 `/api/client/updates/*` 与 `/api/release/updates/*` 双口径。
|
||
- **决策**:发布模块统一采用 `/api/release/...` 命名空间。
|
||
- **影响范围**:服务端路由、客户端调用、测试用例
|
||
- **关联文档**:
|
||
- `PRD/发布管理/客户端发布管理模块PRD.md`
|
||
- `TECH_STACK/TECH_STACK.md`
|
||
- `TECH_STACK/客户端发布管理技术方案.md`
|
||
|
||
### ADR-20260430-010
|
||
- **类型**:TECH
|
||
- **模块**:文档治理(全局)
|
||
- **状态**:accepted
|
||
- **背景**:多目录文档缺少统一变更追溯入口。
|
||
- **决策**:`TECH_STACK / DATA_MODEL / TEST_CASES` 下文档统一添加“变更历史”章节,并规范位置:**头部元信息之后、正文主章节(## 一/## 1)之前**。
|
||
- **影响范围**:全量技术文档与测试文档
|
||
- **关联文档**:
|
||
- `TECH_STACK/*.md`
|
||
- `DATA_MODEL/*.md`
|
||
- `TEST_CASES/*.md`
|
||
|
||
---
|
||
|
||
## 三、按模块分类记录(视图索引)
|
||
|
||
## 3.1 测试治理(全局)
|
||
- `ADR-20260430-001`:术语统一为“测试用例”(REQ)
|
||
- `ADR-20260430-002`:全局唯一测试编号机制(TECH)
|
||
- `ADR-20260430-003`:报告粒度到 step_id(TECH)
|
||
|
||
## 3.2 登录管理
|
||
- `ADR-20260430-004`:接口路径以 PRD 为准(REQ)
|
||
- `ADR-20260430-005`:MVP 范围冻结(REQ)
|
||
|
||
## 3.3 客户端发布管理
|
||
- `ADR-20260430-006`:新增独立技术方案(TECH)
|
||
- `ADR-20260430-008`:SHA256 完整性校验强制(TECH)
|
||
- `ADR-20260430-009`:API 命名空间统一 `/api/release/...`(TECH)
|
||
|
||
## 3.4 数据模型(public schema)
|
||
- `ADR-20260430-007`:`client_heartbeats` Upsert + 24h 活跃口径(TECH)
|
||
|
||
## 3.5 文档治理(全局)
|
||
- `ADR-20260430-010`:变更历史章节统一规则(TECH)
|
||
|
||
---
|
||
|
||
## 四、历史记录(Append-Only Log)
|
||
|
||
> 说明:本节为机器可检索的历史流水,不删改旧记录。
|
||
|
||
| ADR ID | 日期 | 模块 | 类型 | 状态 | 摘要 | 关联 |
|
||
|---|---|---|---|---|---|---|
|
||
| ADR-20260430-001 | 2026-04-30 | 测试治理 | REQ | accepted | 术语统一为“测试用例” | `TECH_STACK/测试规范.md` |
|
||
| ADR-20260430-002 | 2026-04-30 | 测试治理 | TECH | accepted | 测试编号全局唯一 `TC-FON-XXXXXX` | `TEST_CASES/TEST_CASE_ID_SPEC.md` |
|
||
| ADR-20260430-003 | 2026-04-30 | 测试执行 | TECH | accepted | 报告必须定位到 `test_case_id+step_id` | `TECH_STACK/测试规范.md` |
|
||
| ADR-20260430-004 | 2026-04-30 | 登录管理 | REQ | accepted | 登录接口路径全部按 PRD v2.0 | `TECH_STACK/登录管理技术方案.md` |
|
||
| ADR-20260430-005 | 2026-04-30 | 登录管理 | REQ | accepted | 登录模块范围冻结(含废弃/预留) | `PRD/登录管理/用户登录管理模块PRD.md` |
|
||
| ADR-20260430-006 | 2026-04-30 | 客户端发布 | TECH | accepted | 新建独立技术方案文档 | `TECH_STACK/客户端发布管理技术方案.md` |
|
||
| ADR-20260430-007 | 2026-04-30 | 数据模型 | TECH | accepted | `client_heartbeats` Upsert + 24h 活跃 | `DATA_MODEL/DATA_MODEL_PUBLIC.md` |
|
||
| ADR-20260430-008 | 2026-04-30 | 客户端发布安全 | TECH | accepted | SHA256 校验失败禁止安装 | `TECH_STACK/客户端发布管理技术方案.md` |
|
||
| ADR-20260430-009 | 2026-04-30 | 客户端发布 API | TECH | accepted | 统一 `/api/release/...` 路径 | `TECH_STACK/TECH_STACK.md` |
|
||
| ADR-20260430-010 | 2026-04-30 | 文档治理 | TECH | accepted | 变更历史章节位置统一规范 | `TECH_STACK/*.md` `DATA_MODEL/*.md` `TEST_CASES/*.md` |
|
||
|
||
---
|
||
|
||
## 五、后续维护约定
|
||
|
||
1. 每当接受新技术或需求决策,**当天必须新增 ADR 条目**。
|
||
2. 若新决策替代旧决策,在新 ADR 中写明 `supersedes: ADR-xxxx`,并将旧条目标记 `superseded`。
|
||
3. PRD / TECH_STACK / DATA_MODEL / TEST_CASES 发生关键口径变化时,必须同步更新本文件。
|
||
4. 本文件是跨 Session 的决策权威输入之一,和 PRD 一起喂给 Agent。 |