Files
patbond-doc/docs/development/iterations/iteration-1/index.md
T
lixi 273064c10d docs: 第三波交付收口——认证契约与两端实现报告入档
- 新增 API 契约:docs/api/openapi.yaml(T6a 正式化)与契约说明页(契约先行原则)
- 入档报告 16(后端 JWT 会话,37→73 测试)与 17(Flutter 登录纵切,7→30 测试)
- 进展看板更新至第三波完成,第四波为联调 E2E → CI → 编排 → 埋点
- 门禁:mkdocs build --strict 通过
2026-09-04 12:18:29 +08:00

51 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第一迭代进展看板
> 目标:真实登录纵切(注册 → 登录 → 获取当前用户 → 退出),依据[开发实施计划](../../development-plan.md)第 8 节。
> 更新日期:2026-09-04(第三波交付后)。本页是团队共享的进度事实来源,每波工作交付后更新。
## 当前状态一览
| 状态 | 内容 |
| --- | --- |
| ✅ 已完成 | 开工分析(01-06)、工程基线(第一波)、持久化纵切(第二波)、JWT 会话 + Flutter 登录纵切 + OpenAPI 契约(第三波)、ADR-001~008 |
| 🔜 下一步 | 第四波:真实前后端联调与端到端验证 → CI 载体 → 本地编排(compose)→ 埋点落地 |
| ⚠️ 未闭环 | access token 无主动吊销(≤15 分钟窗口)、/internal 为静态密钥、auth_sessions 无过期清理任务、前端全链路仅 mock 验证未联调、CI 载体缺失、TagPill 设计债 |
## 已完成(附提交)
**第一波:工程基线**
- 后端升级 Spring Boot 3.5.16 / JDK 17,移除 NacosADR-001/002),common 瘦身,Maven Wrapper,测试 0 → 21`patbond-api@c7ddaec`,报告 07)。
- Flutter 迁移珊瑚橙主题(ADR-005),新增 5 个认证组件 + 6 个 widget 测试(`patbond-flutter@af002ed`,报告 08)。
- ADR-001~005 入档(`patbond-doc@ca8cb72`,见[技术决策记录](../../../architecture/decisions.md))。
**第二波:持久化纵切**
- Flyway V1 baselineidentity/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`)。
**第三波:认证纵切两端交付**
- 后端 T4 + T6a`patbond-api@4dc3dcd`,报告 16):JWT RS25615m/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. **真实联调 + E2ET8**:起后端双服务 + compose postgres:18Flutter 连真实 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)。
## 环境与构建(新成员必读)
- 后端构建:`JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./mvnw clean test`(本机默认 JDK 版本过高,必须显式指 17;需 Docker 供 Testcontainers 起 postgres:18,见 ADR-008)。
- Flutter 门禁:`dart format --output=none --set-exit-if-changed lib test` / `flutter analyze` / `flutter test`
- 文档门禁:`mkdocs build --strict`
- 测试数据库策略见 ADR-006:自动化测试一律 Testcontainers,个人手动联调用本机 PostgreSQL(环境变量注入连接信息)。
## 报告目录
01-06 为开工前六角色分析(任务分解/技术评估/现状核实/UI 规范/埋点规划/质量审计),07-08 第一波交付,09-15 第二波交付与复核。文件名编号即时间顺序,各报告首节均有摘要。