Files
new-api-key-usage/docs/design/实施计划.md
T
skycurtain 30e71beb09 docs: 实施计划(loop 模式 + 八阶段验收标准)
- loop 机制:取任务 → 实现 → 验证 → 记录 → 提交 → 报告;遇设计空白停车问作者
- 八阶段:数据层与密钥 → key 管理 → 管理面其余 → 同步引擎 → 查看面数据面 → /usage-log 前端 → 管理面前端 → 收尾
- 前提已定:Docker 本地 PG · 真实 key 联调 · loop 内直接提交(作者授权)
2026-09-15 00:03:46 +08:00

4.7 KiB
Raw Blame History

实施计划

开发过程的推进方案:loop 模式(每轮一个可验证批次)+ 八个阶段的验收标准。任务口径全部指向 docs/design/ 的设计文档;本文件只回答「先做什么、怎样算做完、下一步做什么」。

项目 内容
状态 定稿(2026-09-14;进度表随 loop 持续更新)
关联 docs/design/API契约.md · docs/design/同步引擎设计.md · docs/design/交互设计.md · 四张表字段设计 · AGENTS.md(命令)
范围 阶段划分、每批验收标准、loop 机制与停车规则;技术细节一律以设计文档为准
当前进度 阶段 0 已完成;下一批:阶段 1(数据层与密钥)

1. loop 机制(每轮固定动作)

  1. 取任务:计划表(§3)中当前批次的第一项
  2. 实现:以设计文档为准,不自由发挥
  3. 验证:跑该批次的验收命令(type-check / 单测 / 实测 curl / 浏览器走查)
  4. 记录:勾选进度表(日期 + 验证方式)
  5. 提交:一个逻辑单元一个 commit(作者已授权 loop 内直接提交,dev 分支;git push 永远由作者手工)
  6. 报告:一句话——做了什么 / 验证结果 / 下一项
  7. 停车规则:遇设计文档未覆盖的问题 → 停下问作者,不猜着往下写(已知的待定问题见 §4)

2. 前提(2026-09-14 定)

  • 开发库:Docker 本地 PostgreSQL(docker-compose.yml 随阶段 1 落地;连接串走 .env,不入库)
  • 上游联调:真实 sk-key(作者提供,放 .env;文件不入库)——阶段 2 / 4 依赖它
  • 提交:loop 内直接提交已授权;push 由作者手工(仓库有两个远端)

3. 阶段与验收标准

批次 内容 验收标准 状态
0 脚手架 + 契约类型 + 501 骨架 命令链全绿(type-check / test / build) ✅ 2026-09-14
1 数据层与密钥:crypto(HKDF 派生 / HMAC-SHA256 / AES-256-GCM)· 时间工具(+08:00 序列化、UTC 秒转换)· docker-compose.yml · 建表 单测:哈希确定性 + 加解密往返;db:push 后四张表在库 ☐
2 上游客户端 + key 管理(GET / POST / PATCH 三端点) curl 实测:登记 → 清单 → 停用/启用;三类错误码分支正确(key_rejected / already_registered / upstream_unavailable) ☐
3 管理面其余:purchases 五端点 + qpu 一端点 curl 实测:CRUD 全流程 + 观测聚合(matched_purchase_id 判定正确) ☐
4 同步引擎:tick(5 分钟 + 防重入 + 启动即跑)· 日志整批事务入库 · 额度采集 · QPU 采样 · 401 状态机(N=3) 库中出现真实数据;[sync] 日志符合引擎设计;连续 401 触发摘除且 disabled_source = auto_401 ☐
5 查看面数据面:logs/query + summary + 折算链(按购买期间分段取尺) curl 实测:字段齐全、meta.data_until 取最慢、金额按购买分段累加正确 ☐
6 前端 /usage-log:筛选区(key 标签 + datetimerange + 快捷项)· 卡片 · 表格 + 展开行 · 分页器 · 六种状态模式 浏览器实测:真实数据走一遍;六态逐一可见(加载 / 初始 / 未收录 / 无记录 / 同步中 / 失败) ☐
7 前端管理面:口令门帘 + 侧边栏 + 三页(key 管理 / 购买记录含核对提示与补录 / 换算参数) 浏览器实测:登记、启停、CRUD、补录、时间线全操作 ☐
8 收尾:部署文档(docs/delivery/)· 端到端走查 · 文档状态更新(设计文档 → 已实现) 一条命令链可部署(前后端独立 + 后端单实例注记);走查无阻 ☐

4. 实现中的待定问题(遇到即停车问作者)

# 问题 归属批次
1 amount_rmb 在「日志无归属购买记录」时取什么值(0 / 退化为额度美元 / 前端显示「—」) 5
2 充值(wallet)路径的折算近似(设计文档标「后议」) 5(遇到再说)
3 dedupe_key 内容指纹的拼接细节(request_id 为空时) 4
4 上游对同账号请求的态度(限流 / 并发被拒时的表现) 4(遇到再说)

5. 风险

  • 真实上游联调依赖作者提供的 key 与网络可达;不可用时临时以假上游过渡(不改变验收口径)
  • 折算链(阶段 5)依赖已登记的购买记录——无记录时的退化行为即待定问题 #1
  • 后端必须单实例(同步引擎前提):部署文档(阶段 8)必须写明;本地开发也不要起两个后端