docs: 第三波交付收口——认证契约与两端实现报告入档
- 新增 API 契约:docs/api/openapi.yaml(T6a 正式化)与契约说明页(契约先行原则) - 入档报告 16(后端 JWT 会话,37→73 测试)与 17(Flutter 登录纵切,7→30 测试) - 进展看板更新至第三波完成,第四波为联调 E2E → CI → 编排 → 埋点 - 门禁:mkdocs build --strict 通过
This commit is contained in:
@@ -1,15 +1,15 @@
|
||||
# 第一迭代进展看板
|
||||
|
||||
> 目标:真实登录纵切(注册 → 登录 → 获取当前用户 → 退出),依据[开发实施计划](../../development-plan.md)第 8 节。
|
||||
> 更新日期:2026-09-04。本页是团队共享的进度事实来源,每波工作交付后更新。
|
||||
> 更新日期:2026-09-04(第三波交付后)。本页是团队共享的进度事实来源,每波工作交付后更新。
|
||||
|
||||
## 当前状态一览
|
||||
|
||||
| 状态 | 内容 |
|
||||
| --- | --- |
|
||||
| ✅ 已完成 | 开工分析(报告 01-06)、工程基线(第一波)、持久化纵切(第二波)、Git 工作流建章 |
|
||||
| 🔜 下一步 | 第三波:JWT + refresh 会话 → `/internal` 鉴权 → OpenAPI 冻结 → Flutter 登录页拼装 → 端到端用例 |
|
||||
| ⚠️ 未闭环 | token 仍为随机串(表已就绪)、`/internal` 无鉴权、CI 载体缺失、UI 待修 FIX-1/FIX-2、Flutter README 门禁参数(m2) |
|
||||
| ✅ 已完成 | 开工分析(01-06)、工程基线(第一波)、持久化纵切(第二波)、JWT 会话 + Flutter 登录纵切 + OpenAPI 契约(第三波)、ADR-001~008 |
|
||||
| 🔜 下一步 | 第四波:真实前后端联调与端到端验证 → CI 载体 → 本地编排(compose)→ 埋点落地 |
|
||||
| ⚠️ 未闭环 | access token 无主动吊销(≤15 分钟窗口)、/internal 为静态密钥、auth_sessions 无过期清理任务、前端全链路仅 mock 验证未联调、CI 载体缺失、TagPill 设计债 |
|
||||
|
||||
## 已完成(附提交)
|
||||
|
||||
@@ -21,18 +21,22 @@
|
||||
|
||||
**第二波:持久化纵切**
|
||||
|
||||
- Flyway V1 baseline(identity/media)、用户 UUIDv7 持久化到 PostgreSQL、统一异常与错误码透传(修复错误码折叠),测试 21 → 37,全部经 Testcontainers 验证(`patbond-api@bd20adc`,报告 10)。
|
||||
- 独立复核确认第一波声明属实(报告 11);UI 设计 QA + 登录/注册/Splash 组装稿(报告 12);埋点工程规范含 OpenAPI/DDL 草案(报告 13);mkdocs 门禁打通(报告 14)。
|
||||
- Git 工作流规范入档(`patbond-doc@027876a`,见 [Git 工作流规范](../../git-workflow.md)),报告 15。
|
||||
- Flyway V1 baseline(identity/media)、用户 UUIDv7 持久化到 PostgreSQL、统一异常与错误码透传,测试 21 → 37,全部经 Testcontainers 验证(`patbond-api@bd20adc`,报告 10)。
|
||||
- 独立复核确认第一波声明属实(报告 11);UI 设计 QA + 登录/注册/Splash 组装稿(报告 12);埋点工程规范(报告 13);mkdocs 门禁打通(报告 14);Git 工作流规范入档(`patbond-doc@027876a`,报告 15)。
|
||||
- ADR-006/007/008 入档:测试与交付容器化、部署形态、PostgreSQL 18 基线(Testcontainers 镜像切换 `patbond-api@43ab6c5`)。
|
||||
|
||||
## 下一步(第三波,未启动)
|
||||
**第三波:认证纵切两端交付**
|
||||
|
||||
1. **T4 JWT + refresh 会话**:按 ADR-003(access 15 分钟 / refresh 30 天轮换 / 多设备),`identity.auth_sessions` 表已随 V1 就绪;同时保护 `/internal/**`、整改 `expiresAt` 时区。
|
||||
2. **T6a OpenAPI 冻结**:错误码契约(报告 10)+ token 字段定型后出契约文档。
|
||||
3. **Flutter 登录页拼装**:照报告 12 组装稿实现,顺带修 FIX-1(促销卡渐变对比度)、FIX-2(helperStyle)、m2(README 门禁参数);接入 `--dart-define` 注入 API 地址。
|
||||
4. **端到端用例**:注册 → 登录 → 获取当前用户 → 退出,进 CI。
|
||||
- 后端 T4 + T6a(`patbond-api@4dc3dcd`,报告 16):JWT RS256(15m/30d 配置项)、refresh 轮换会话(auth_sessions 摘要 + token_family + 重用撤销全族)、多设备并行、登录锁定(42300)、`/api/v1` 前缀、`/internal` 共享密钥鉴权;测试 37 → 73,含双服务真实 HTTP E2E。附带修复两个存量缺陷:Feign 错误解码器被子上下文遮蔽、JDK HttpURLConnection 读不到 401 错误体(此前下游错误在真实链路折叠为 503)。
|
||||
- Flutter 登录纵切(`patbond-flutter@8d890c0` + 42300 映射 `da25804`,报告 17):dio 网络层(`--dart-define=PATBOND_API_BASE_URL`)、单飞 TokenRefresher、secure storage 会话、Splash/登录/注册三页照组装稿实现、真实退出入口;测试 7 → 30;契约零偏差;FIX-1/FIX-2/m2 一并修复。
|
||||
- OpenAPI 契约正式化:[docs/api/openapi.yaml](../../../api/openapi.yaml),契约先行原则见 [API 契约说明](../../../api/index.md)。
|
||||
|
||||
启动条件已满足(持久化纵切完成 + 复核无否决)。
|
||||
## 下一步(第四波,未启动)
|
||||
|
||||
1. **真实联调 + E2E(T8)**:起后端双服务 + compose postgres:18,Flutter 连真实 API 走通注册 → 登录 → me → 刷新 → 退出;按报告 14 的验收证据清单收集证据。前置:本地编排(T0-4,compose 拉起 postgres:18 与两个服务)。
|
||||
2. **CI 载体**:三仓门禁进 CI(命令表在 [Git 工作流规范](../../git-workflow.md))。
|
||||
3. **埋点落地**:按报告 13 实现 `/api/v1/events` + `platform.product_events` 迁移 + Flutter `lib/analytics/`。
|
||||
4. **杂项**:auth_sessions 过期清理任务、Flutter 版本锁定(T0-2)、TagPill 设计债(DEBT-1)。
|
||||
|
||||
## 环境与构建(新成员必读)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user