Files
nexus/Project/fonrey/ADR.md
2026-04-30 20:33:51 +08:00

8.9 KiB
Raw Blame History

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/测试规范.mdTEST_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_idTECH

3.2 登录管理

  • ADR-20260430-004:接口路径以 PRD 为准REQ
  • ADR-20260430-005MVP 范围冻结REQ

3.3 客户端发布管理

  • ADR-20260430-006新增独立技术方案TECH
  • ADR-20260430-008SHA256 完整性校验强制TECH
  • ADR-20260430-009API 命名空间统一 /api/release/...TECH

3.4 数据模型public schema

  • ADR-20260430-007client_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。