Files
lixi 209021e7d2 docs: 迁入第一迭代过程报告并建立进展看板
- 新增 development/iterations/iteration-1/:15 份角色报告 + 进展看板(已完成/未闭环/下一步),作为双人协作的进度事实来源
- 新增 ADR-006:测试与交付容器化策略(Testcontainers / 交付 Docker 包 / 本机库仅个人联调)
- Git 工作流规范补充:敏感信息只进忽略文件或 sample、测试数据不入库、测试代码限标准测试目录
- 门禁:mkdocs build --strict 通过(零警告)
2026-09-04 10:45:05 +08:00

14 KiB
Raw Permalink Blame History

14 第一波「工程基线」里程碑证据档案与提交清单

  • 编制人:EvidenceQA(Evidence Collector)
  • 快照时间:2026-09-04(所有 git 输出均为本刻快照)
  • 方法:patbond-api 全程只读(ls/grep/git 只读/读文件,未运行任何构建);patbond-flutter 复跑三条门禁命令做独立验证;patbond-doc 安装 mkdocs 并运行 strict 构建(产物输出到 scratchpad,仓库未落任何文件)。
  • 对照基线:06-evidence-audit.md 问题清单(B1/B2、M1-M5、m1-m4)、07-backend-baseline-report.md08-flutter-theme-report.mdpatbond-doc/docs/architecture/decisions.md(ADR-001~005)。

0. 重大事实更正:「三仓均未提交」已不成立

任务前提是三仓改动均未提交,实测不符:

仓库 分支 本地最新提交 远端(origin)最新 工作区
patbond-api dev c7ddaec 重构底层框架(2026-09-03 17:59:56 +0800,Lixi20) c7ddaec(一致,已推送) 干净(git status --porcelain 空)
patbond-doc main ca8cb72 完善开发文档(2026-09-03 18:00:52 +0800,含 decisions.md 63 行 + mkdocs.yml 2 行) ca8cb72(一致,已推送) 干净
patbond-flutter dev 2601da3 update README.md 2601da3(一致) 7 个修改 + 7 个未跟踪文件待提交(见第 3 节)

即:第一波后端改动与 ADR 文档已由某人(git 作者 Lixi20)在 2026-09-03 傍晚提交并推送;c7ddaecgit show --stat(24 个文件,+955/-99)与 07 报告的改动清单逐一吻合(4 pom、6 Java 源、2 sample、mvnw 三件套、5 个测试文件、Readme、测试专用 application.yml、.gitignore)。真正待提交的只剩 patbond-flutter。


1. 问题闭环核对(对照 06 审计清单,逐项附本刻证据)

# 问题 状态 本刻证据
B1 后端零测试、CI 门禁空转 部分闭环 三模块均有 src/test;grep -rc "@Test" 计 3+1+9+1+7=21 个用例(ApiResponseTest 3、UserApplicationTests 1、UserControllerTest 9、AuthApplicationTests 1、AuthControllerTest 7);三个 pom 均有 spring-boot-starter-test(common:30、user:40、auth:40)。07 报告附 ./mvnw clean test BUILD SUCCESS 输出(21 测试 0 失败)。仍缺:Testcontainers 集成测试、契约测试、安全测试(后续工单)
B2 内存用户 + 不可验证 token + /internal 裸奔 未动(计划内后续工单) UserService.java:21-23 仍为 AtomicLong + 两个 ConcurrentHashMap;AuthService.java:50 仍为 UUID.randomUUID();UserController.java:18 仍映射 /internal/users;全仓 grep 无 spring-boot-starter-security/SecurityFilterChain(输出:NO SECURITY CONFIG)
M1 auth→user 调用链错误状态码折叠 未动(计划内后续工单) AuthService.java:61ResponseStatusException(HttpStatus.BAD_REQUEST, ...);07 报告冒烟实测「错密码登录 → HTTP 500」,并已用 AuthControllerTest.loginPropagatesFeignExceptionUnhandled 把现状钉为基线
M2 common 强制全体引入 AMQP/Feign/LB/Nacos 已修复 patbond-common/pom.xml 依赖仅剩 jakarta.validation-api(compile)+ spring-boot-starter-test(test scope);全仓 grep -rn "nacos|amqp|loadbalancer" --include="pom.xml" 零命中(输出:NO NACOS/AMQP/LB IN POMS)
M3 无 CI 配置 + 无 Maven Wrapper 部分闭环 Wrapper 已入库:mvnwmvnw.cmd.mvn/wrapper/maven-wrapper.properties 存在且在 c7ddaec 提交内。CI 载体仍缺:ls -a 无 .github/.gitlab-ci/Jenkinsfile(输出:NO CI CONFIG)
M4 API Readme 启动步骤不完整 已修复 patbond-api/Readme.md:16 行 Wrapper 说明、21/27 行 ./mvnw clean test(含 JAVA_HOME=JDK17 指引)、32-39 行 sample→yml 复制命令、46-48 行 -pl patbond-common install + 两个 spring-boot:run、71 行禁止向 sample 提交密钥
M5 数据库 bootstrap 单文件混装 fixture 凭据 未动(后续工单) patbond-doc/docs/database/ 仍仅 patbond_postgresql.sql 单文件;第 1269 行仍有 accounts use the password: Patbond@123;Flyway 拆分(工单 T1)未启动
m1 Flutter 唯一冒烟测试断言写死演示数据 未动 test/widget_test.dart:18-19 仍断言 '北京 · 朝阳区''28°C 晴';该文件不在本次改动清单
m2 Flutter README 校验命令缺 --output=none 未修 patbond-flutter/README.md:34 仍为 dart format --set-exit-if-changed lib test(会改写文件)。注意:README 当前的未提交改动只是在运行段加了一行 flutter clean(git diff README.md 全文仅此一处),并未修此项
m3 演示数据持久化展示字符串 + 22 处 Unsplash URL 未动(计划内,逐页替换时清除) lib/data/demo_data.dart 不在改动清单,'2小时前'/'1.2km' 等仍在
m4 flutter 工作区不干净 性质变化 审计时仅 M README.md;现为第一波交付的 7 修改 + 7 新增,即本档案第 3 节要落账的对象。README 的用户自有改动仍混在其中

闭环率:任务预期应修复的 4 项全部兑现——M2 已修复、M4 已修复、M3 的 Wrapper 半边已修复、B1 已部分闭环(21 测试)。全部 11 项口径:2 项全闭(M2、M4),2 项部分(B1、M3),7 项未动——其中 B2/M1/M5/m1/m3 属已排期后续工单,m2 是一处一行即可修的文档问题,两波交付均未顺手处理,建议纳入下一波


2. 文档门禁(mkdocs build --strict):通过

  • 安装:pip install --user mkdocs → mkdocs 1.6.1(Python 3.14,~/.local/bin/mkdocs)。此前 which mkdocs / python3 -m mkdocs 均无,门禁属首次打通。
  • 执行(产物指向 scratchpad,避免污染仓库):
$ cd patbond-doc && mkdocs build --strict -d <scratchpad>/mkdocs-site
INFO    -  Cleaning site directory
INFO    -  Building documentation to directory: .../mkdocs-site
INFO    -  Documentation built in 0.08 seconds
EXIT=0
  • exit 0,零 warning,strict 模式下导航与链接均无报错;无错误清单需要移交。
  • 仓库卫生:构建后 ls -d site 确认仓库内无 site/ 目录,git status 仍为空。mkdocs.yml 三级导航(index / development-plan / decisions)与 06 审计的静态核对结论一致,本次为动态实证。
  • 注意:mkdocs 装在 ~/.local,CI 环境需自行安装;若后续文档引入主题/插件(如 material),需同步补 requirements 文件——当前 mkdocs.yml 用内置 readthedocs 主题,无额外依赖。

3. 三仓提交清单

3.1 patbond-api —— 本刻无待提交内容(快照口径,提交前必须重新生成)

git status --porcelain 为空;dev 分支与 origin/dev 同在 c7ddaec。第一波改动已随 c7ddaec 重构底层框架 提交并推送,无需再操作。

磁盘上存在但已被正确忽略(不得入库):

路径 处置 依据
patbond-auth/src/main/resources/application.ymlpatbond-user/.../application.yml 应忽略(本地真实配置,sample 模式) .gitignore 白名单规则,git status --ignored 确认 !!
patbond-{common,user,auth}/target/ 应忽略(构建产物) 同上
.idea/ 应忽略(IDE 配置) 同上,且 git ls-files 无 .idea 条目

警示:该仓有开发 agent 正在继续开发,本清单仅为快照;开发波次完成后需重新 git status 生成新清单再提交。既成事实备注:重构底层框架 这条信息无语义前缀(更贴切的应为 refactor: 升级 Spring Boot 3.5、移除 Nacos、补齐 21 个测试与 Maven Wrapper),但该提交已推送远端,不建议改写历史;后续新提交请回归中文语义前缀约定。

3.2 patbond-doc —— 本刻无待提交内容

git status --porcelain(含 --ignored)为空;main 与 origin/main 同在 ca8cb72 完善开发文档(ADR-001~005 的 decisions.md + mkdocs.yml 导航,已推送)。既成事实备注:更贴切的信息应为 docs: 新增 ADR-001~005 架构决策记录,同样不建议改写已推送历史。本次 strict 构建未在仓库产生任何文件。

3.3 patbond-flutter —— 14 个文件待处置(唯一真正待提交的仓库)

git status --porcelain -uall 全量清单与逐文件处置:

文件 状态 处置 说明
README.md M 用户自决 未提交改动仅一行:运行段新增 flutter clean(diff 已核,无其他内容)。是用户本人的改动,不并入第一波提交;若用户决定保留,建议连同 m2 的 --output=none 修复一起单独提交
lib/core/theme/app_theme.dart M 应提交 ADR-005 主题重写(珊瑚橙 token 体系)
lib/features/create/create_page.dart M 应提交 硬编码色 → token
lib/features/home/home_page.dart M 应提交 同上
lib/features/pets/pets_page.dart M 应提交 同上
lib/features/profile/profile_page.dart M 应提交 同上
lib/widgets/common.dart M 应提交 同上
lib/core/widgets/brand_mark.dart ?? 应提交 新增认证基础组件 ×5
lib/core/widgets/app_text_field.dart ?? 应提交
lib/core/widgets/primary_button.dart ?? 应提交
lib/core/widgets/inline_error_banner.dart ?? 应提交
lib/core/widgets/auth_scaffold.dart ?? 应提交
test/core/widgets/primary_button_test.dart ?? 应提交 组件 widget 测试 ×2 文件(6 用例)
test/core/widgets/app_text_field_test.dart ?? 应提交

已忽略、确认不入库:build/.dart_tool/.flutter-plugins-dependenciesandroid/local.properties、iOS/Android 生成文件等(git status --ignored 全部 !!,规则健全)。

提交前门禁已独立复跑(2026-09-04,非转述 08 报告):

$ dart format --output=none --set-exit-if-changed lib test → Formatted 22 files (0 changed), exit 0
$ flutter analyze → No issues found! (ran in 0.7s)
$ flutter test    → 00:01 +7: All tests passed!   (5 组件测试 + 1 导航冒烟 + 1)

建议提交信息(排除 README.md 后一条提交):

feat: 迁移珊瑚橙主题体系并新增认证基础组件(ADR-005)

- app_theme.dart 重写为语义 token(AppColors/AppRadius),落地 primaryStrong/error 等 AA 对比度色
- 五个页面与公共组件的旧靛蓝硬编码色值全部替换为 token,仅换色不动布局
- 新增 BrandMark/AppTextField/PrimaryButton/InlineErrorBanner/AuthScaffold 及 6 个 widget 测试
- 门禁:dart format(0 changed)/flutter analyze(0 issues)/flutter test(7 passed)

建议 api/doc 提交信息:本刻两仓无待提交内容,上表既成事实备注已给出应然写法,供后续波次遵循;api 下一波提交信息待其开发完成后按实际改动拟定(中文语义前缀 refactor/feat)。


4. 里程碑证据索引(iteration-1-reports/ 01-08)

报告 角色 核心验收证据 / 结论
01-pm-task-breakdown.md Senior Project Manager M0 + 登录纵切 8 任务的工单化分解;M0 的 Flyway 化与第 8 节任务 1 合并为工单 T1(仅 identity/media schema);明确社区/AI/预约不在本迭代
02-dev-technical-assessment.md Senior Developer 实读三仓源码的现状盘点与选型建议,是 ADR-001(升 Boot 3)/ADR-002(移除 Nacos)的技术论证来源
03-reality-check.md Reality Checker 总评 NEEDS WORK;确认文档描述诚实、无夸大;两个环境硬阻塞(无 Nacos 实例、数据库不可验证)+ 默认 JDK 26 与基线 17 不符——前者已被 ADR-002 从根上消除,后者由 07 报告以 JAVA_HOME=/usr/lib/jvm/java-17-openjdk 方案落地
04-ui-login-design-spec.md UI Designer 登录/注册 UI 规范;裁决双视觉分歧、定义 token 体系与 primaryStrong #D6431Aerror #D0342C(AA 对比度),即 ADR-005 补充规范的正文
05-experiment-tracking-plan.md Experiment Tracker 身份漏斗(注册→登录→me→退出)埋点事件规范与实验规划;实现依赖后端契约冻结,尚未落码
06-evidence-audit.md EvidenceQA 开工前基线:B1/B2 两 Blocker、M1-M5、m1-m4 共 11 项问题(全部附文件+行号证据);第 5 节给出登录纵切验收所需的完整证据清单(测试输出/curl transcript/psql/截图),仍是 M1 里程碑验收的执行标准
07-backend-baseline-report.md Senior Developer 第一波后端交付:Boot 2.7.18→3.5.16、Cloud 2025.0.3、移除 Nacos(ADR-001/002)、common 瘦身(M2)、Maven Wrapper(M3 半)、README 重写(M4);21 测试 BUILD SUCCESS 原始输出;两服务干净配置启动 + 端到端冒烟(注册/登录/internal 均通,错密码 500 为已知 M1 遗留);进程已清理。→ 已作为 c7ddaec 提交并推送
08-flutter-theme-report.md Frontend Developer 第一波 Flutter 交付:ADR-005 主题迁移(旧→新 token 映射表)、5 个认证基础组件、6 个组件测试;门禁三命令全绿(format 0 changed / analyze 0 issues / flutter test +7)——本档案 2026-09-04 复跑复现同样结果。→ 尚未提交,见 3.3 清单

里程碑口径:第一波「工程基线」的两份交付(07/08)验收证据齐全且经独立复核;ADR 文档门禁(mkdocs --strict)本次首次实证通过。里程碑归档条件已满足,唯一未落账动作是 patbond-flutter 的提交。


5. 移交后续波次的未闭环清单

  1. B2 三件套(数据库持久化 + JWT + /internal 鉴权)——M1 里程碑主体,验收按 06 报告第 5 节证据清单执行。
  2. M1 错误状态码折叠——统一异常契约工单;现有 loginPropagatesFeignExceptionUnhandled 测试在改造时按新契约改写。
  3. M3 后半:CI 载体——./mvnw clean test 与 Flutter 三命令已可直接作为门禁命令,缺执行载体;文档门禁可加 pip install mkdocs && mkdocs build --strict
  4. M5 / 工单 T1——bootstrap SQL 拆 Flyway baseline 与种子数据,验收含 grep -c "Patbond@123" = 0。
  5. m2——patbond-flutter/README.md:34--output=none,一行改动,建议随用户 README 自决一并处理。
  6. m1/m3——widget_test 演示数据断言与 demo 展示字符串,随登录页/真实数据接入清除。
  7. AuthTokenResponse.expiresAt 无时区 LocalDateTime(07 报告遗留 4),随 token 重构处理。

  • 本次动作留痕:安装 mkdocs 至 ~/.local(pip --user);mkdocs 产物写入 scratchpad(mkdocs-site/,会话级临时目录);flutter 门禁复跑仅触碰 git 忽略的构建缓存。三仓的受跟踪文件零修改、零提交、无遗留进程。