Files
patbond-doc/docs/development/iterations/iteration-1/index.md
T
lixi 8e0e1c5c42 docs: 第一迭代收官——进展看板/功能清单更新 + 迭代总结
第一迭代已完成(2026-09-03 → 2026-09-04):
- 后端:82 测试(JWT 会话、compose 编排、埋点系统)
- 前端:34 测试(登录纵切、埋点模块)
- 真机联调 E2E 7/7 通过,契约偏差 0 个
- OpenAPI 契约正式化,ADR-001~008 落地
- 报告 18(E2E)、19(埋点)、20(迭代总结)入档
- 进展看板标注「第一迭代已完成」+ 交付总结
- 功能清单更新:compose 、联调 、测试数 82/34

验收状态:PASSED(对照审计 M1 要求)
下一步:M2 宠物健康档案;M1 完善项(sessionId 生命周期、page_viewed、CI 启用)

门禁:mkdocs build --strict 通过
2026-09-04 17:31:15 +08:00

73 lines
5.7 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(第一迭代收官)。本页是团队共享的进度事实来源,每波工作交付后更新。
## 当前状态一览
| 状态 | 内容 |
| --- | --- |
| ✅ 第一迭代已完成 | 认证纵切两端(JWT + Flutter 登录)+ 真机联调 E2E + 埋点系统 + Docker Compose 编排 + Git 工作流 + ADR-001~008,后端 82 测试、前端 34 测试 |
| 🔜 下一步 | M2 宠物健康档案(下一迭代主线);M1 完善项:sessionId 生命周期、页面浏览埋点、Gitea CI 启用(可选) |
| ⚠️ 遗留 | access token 无主动吊销(≤15 分钟窗口)、/internal 为静态密钥、auth_sessions 过期清理默认 30 天、埋点 7 项完善(报告 19 §3 已优先级排序) |
## 已完成(附提交)
**第一波:工程基线**
- 后端升级 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` 及后续 5 提交,报告 16):JWT RS25615m/30d)、refresh 轮换会话(auth_sessions 摘要 + token_family + 重用撤销全族)、多设备并行、登录锁定(42300)、`/api/v1` 前缀、`/internal` 共享密钥鉴权、Docker Compose 编排、Gitea CI 工作流、会话清理任务;测试 37 → 75。附带修复两个存量缺陷(Feign 错误解码 + HttpURLConnection 401 读取)。
- Flutter 登录纵切(`patbond-flutter@8d890c0` + `da25804` + `845e92f`,报告 17):dio 网络层(`--dart-define=PATBOND_API_BASE_URL`)、单飞 TokenRefresher、secure storage 会话、Splash/登录/注册三页、真实退出、UserProfile.phone 可空修复;测试 7 → 30;契约零偏差;FIX-1/FIX-2/m2 修复。
- OpenAPI 契约正式化:[docs/api/openapi.yaml](../../../api/openapi.yaml),真机联调验证 100% 一致。
**第四波:收官战(E2E + 埋点)**
- 真机联调 E2E(报告 18):compose 三容器(postgres:18 + auth + user)启动成功,烟囱测试 7/7 全绿(注册 → me → 刷新 → 退出 → 锁定),契约偏差 0 个,验收证据齐全(对照审计 M1),Flutter 门禁全绿。
- 埋点系统落地(`patbond-api@6d47c5a` + `patbond-flutter@60d67a3`,报告 19):后端 `/api/v1/events` 批量端点 + Flyway V2 `product_events` 表(测试 75 → 82);前端 `lib/analytics/` 模块 + 3 个挂接点(登录/注册/退出,测试 30 → 34);7 项完善留 M1/M2(报告 19 §3 已优先级排序)。
## 第一迭代交付总结
**测试数演进**
- 后端:0 → 21 → 37 → 73 → 75 → **82**
- 前端:0 → 7 → 30 → **34**
**功能里程碑**
- 认证流程:注册 / 登录 / me / refresh 轮换 / 退出 / 多设备并行 / 登录锁定,全链路测试通过 ✅
- 基础设施:Flyway 迁移(V1 identity/media + V2 product_events)、UUID 持久化、统一异常、Docker Compose 编排、Gitea CI 工作流(暂未启用) ✅
- 客户端:珊瑚橙主题、5 个认证组件、登录/注册/Splash 页、网络层与 token 管理、埋点模块(3 挂接点) ✅
- 契约与文档:OpenAPI 正式化(真机验证 100% 一致)、ADR-001~008、Git 工作流规范、功能清单、19 份过程报告 ✅
**验收状态**(对照审计 M1):
- ✓ 后端集成测试 82 个(Testcontainers postgres:18
- ✓ 前端 widget 测试 34 个
- ✓ 真机 E2E 烟囱测试 7/7 通过
- ✓ OpenAPI 契约冻结且验证一致
- ✓ 数据库迁移可执行且可回滚
**遗留与下一步**
- M1 完善项:埋点 sessionId 生命周期 / 页面浏览埋点 / Gitea CI runner 启用(可选)
- M2 主线:宠物健康档案(`health_record_action` 埋点挂接点、档案 CRUD、照片管理)
- 后端长期项:access token 黑名单策略、/internal 改 mTLS、清理任务调优
## 环境与构建(新成员必读)
- 后端构建:`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 第二波交付与复核。文件名编号即时间顺序,各报告首节均有摘要。