- loop 机制:取任务 → 实现 → 验证 → 记录 → 提交 → 报告;遇设计空白停车问作者 - 八阶段:数据层与密钥 → key 管理 → 管理面其余 → 同步引擎 → 查看面数据面 → /usage-log 前端 → 管理面前端 → 收尾 - 前提已定:Docker 本地 PG · 真实 key 联调 · loop 内直接提交(作者授权)
4.7 KiB
4.7 KiB
实施计划
开发过程的推进方案:loop 模式(每轮一个可验证批次)+ 八个阶段的验收标准。任务口径全部指向
docs/design/的设计文档;本文件只回答「先做什么、怎样算做完、下一步做什么」。
| 项目 | 内容 |
|---|---|
| 状态 | 定稿(2026-09-14;进度表随 loop 持续更新) |
| 关联 | docs/design/API契约.md · docs/design/同步引擎设计.md · docs/design/交互设计.md · 四张表字段设计 · AGENTS.md(命令) |
| 范围 | 阶段划分、每批验收标准、loop 机制与停车规则;技术细节一律以设计文档为准 |
| 当前进度 | 阶段 0 已完成;下一批:阶段 1(数据层与密钥) |
1. loop 机制(每轮固定动作)
- 取任务:计划表(§3)中当前批次的第一项
- 实现:以设计文档为准,不自由发挥
- 验证:跑该批次的验收命令(type-check / 单测 / 实测 curl / 浏览器走查)
- 记录:勾选进度表(日期 + 验证方式)
- 提交:一个逻辑单元一个 commit(作者已授权 loop 内直接提交,dev 分支;
git push永远由作者手工) - 报告:一句话——做了什么 / 验证结果 / 下一项
- 停车规则:遇设计文档未覆盖的问题 → 停下问作者,不猜着往下写(已知的待定问题见 §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)必须写明;本地开发也不要起两个后端