3ebe562ab7
CI / docs-build (push) Successful in 38s
- 28 E2E 烟囱:14/14 场景、契约偏差 0、M3 四条验收标准逐条取证 (两次不同 limit 全量翻页有序 id 逐位相等、删除前后差集验证、psql 库层互证) - 29 收官总结:终态对照开工基线(测试 191/272→334/502、契约 18→31 路径冻结、 ADR 001~021、四容器→六容器 + MinIO)、遗留清单与 M4 方向输入 - iteration-3/index.md 进展看板补建;feature-checklist 新增 M3 第 10~12 节 - 另登记 2 项 E2E 观察项:widthPx/heightPx 恒 null、eventVersion 口径未定型 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
29 M3 收官总结:社区
迭代周期:2026-09-08 ~ 2026-09-10(开工分析 + 四波交付) 验收结论:PASSED——E2E 烟囱 14/14、契约偏差 0、M3 四条验收标准逐条取证通过;真机四项按既定方案挂起待设备
0. 终态对照开工基线(07 号基线快照)
| 维度 | 开工基线(2026-09-08) | 收官终态(2026-09-10) |
|---|---|---|
| patbond-api 测试 | 191 | 334(+143) |
| patbond-flutter 测试 | 272 | 502(+230) |
| openapi.yaml | v1.2.0,18 路径/24 操作/45 schema | v1.3.0 冻结,31 路径/43 操作/72 schema |
| 契约一致性矩阵 | 43 格(pets+auth 部分) | 173 格,43/43 操作,零漂移 |
| Flyway | V1~V4 | V1~V5(community 8 表 + pg_trgm) |
| 后端模块/端口 | common/auth:8081/user:8082/pet:8083 | + patbond-community:8084 |
| 部署形态 | 四容器 | 六容器(+MinIO 对象存储) |
| 媒体能力 | 有表无代码 | 两步上传闭环(预签名直传 + 私有桶签名读) |
| 事件白名单 | 22 事件 | 42 事件(+19 community 域 + experiment_exposed) |
| ADR | 001~015 | 001~021 |
| 社区功能 | Flutter demo 数据 | 三页全真实后端(home/详情/发布),demo 消亡 |
| 凭证防泄漏 | 无 | 9 规则两层检查三仓在线 |
1. 交付主线回顾
- 开工分析(报告 01
08):8 角色并行;Reality Checker 给出其设立以来首个 CERTIFIED 无条件放行(M2 收官声称全部亲验命中、E2E 冷启动复跑 11/11);Evidence 证据链 100%;ADR-016021 拍板 - 第一波(09~14):V5 迁移(剪 2 条跨 schema FK) + community 骨架 + MinIO 媒体闭环 + 埋点队列三项加固 + 凭证防泄漏三仓 + auth 契约测试补齐
- 第二波(15~20):社区后端纵切 16 端点(帖子/Feed/评论/互动/关注) + 契约冻结 v1.3.0 + 快照同步与矩阵扩展(零漂移)
- 第三波(21~27):Flutter 五单接入(数据层/媒体上传/Feed/详情互动/发布页) + 字典 v3;社区 demo 三页消亡
- 第四波(28~29):E2E 烟囱 14 场景收官取证 + 文档收口
2. M3 四条验收标准证据索引(28 号报告)
| 标准 | 结论 | 取证强度 |
|---|---|---|
| 发布后另一客户端可见 | ✓ | B token 拉 Feed 首位即 A 帖;FeedCard 11 必填键逐项断言 + 6 类裁剪字段确认缺席;另有 T3-17 双 App 实例真 UI 实测 |
| 重复点赞不重复计数 | ✓ | 3 次 PUT 均返权威终态 {liked:true,likeCount:1};psql post_likes 恰 1 行库层互证;后端另有 4 线程真并发测试 |
| 分页不丢不重 | ✓ | 同一 Feed 以 limit=7(10 页)与 limit=100(1 页)两次全量翻页,有序 id 列表逐位相等;psql 谓词行数交叉核对 |
| 删除内容不出公共 Feed | ✓ | 删除前后各全量翻页(66→65,差集恰为该帖);B 与作者 A 直读均 404/40403 逐字节一致 |
3. 质量机制的兑现
- 契约测试累计抓修 3 处真实问题:events 的 reason 字段误序列化 null(第一波 auth 矩阵)、校验器对
nullable + allOf静默跳过的盲区(第二波矩阵扩展)、CreatePetRequest.sex 必填漂移(M2 期) - compose 实测抓出跨服务接线缺陷:T3-13 发现 media 端点在 user:8082 而 T3-12 误挂 community:8084(真链路必 404),单测无法覆盖此类装配错误
- widget 测试抓出两处真 bug:Feed 尾部失败态被滚动自动重试冲掉、回前台不开新曝光段
- 多源核验:一个 agent 识破 Monitor 的假 success 事件(时间戳晚于实时时钟),坚持以 Gitea API 多次直查为准
- 量级测算否决设计:逐卡 Feed 曝光被埋点角色以「7~14 个月击穿分区阈值 + 接收端无限流背压」否决,改聚合
feed_viewed,并在后端字典层把post_impression等 7 事件锁死为 unknown
4. 遗留与 M4 建议
真机挂起四项(步骤已在 真机验证清单 备齐):媒体上传弱网、乐观更新手感、Feed 图片加载、社区事件落库。时限提醒:埋点角色建议 2026-09-21(北极星首次出数日)前完成 M2 两项,否则首批读数只能标未验收。
M3 范围内遗留:
- 完整草稿列表与自动保存(26 号 §7);大图「下滑关闭」手势待 photo_view 复评
widthPx/heightPx恒 null(28 号观察项 1):契约描述称 confirm 后回填,实现无尺寸探测——单图帖一律回落 4:3,不呈现真实宽高比;补实现或改契约描述二选一eventVersion口径未定型(28 号观察项 2):契约描述可两读、服务端不校验、客户端硬编码 1;需定型为「事件 schema 版本」并写入字典纪律- uploading 超时未确认 asset 的清理定时任务(13 号已有方案未实现)
- 429 限流未实现,连带客户端 Retry-After 精细分支挂起(承自 09 号出入清单)
- 话题功能(ADR-018 剪出)、关注列表/作者主页(裁剪项)
跨迭代遗留(承自 M1/M2,未变化):access token 黑名单、/internal 改 mTLS。
M4 方向输入(开发计划 M4:AI 创作):
- 模型/风格目录、生成任务创建/查询/取消、Worker 队列消费(租约/重试/幂等键)、输出写媒体表后一键建社区草稿——媒体链路与社区草稿两端已在 M3 就位,M4 可直接复用
- V5 已为
posts.generation_job_id留裸列,M4 迁移补回该外键即可打通 AI 产出→社区发布 - create 页的 AI 生成模拟(M3 刻意零改动)是 M4 的替换目标
- A/B 前置 8 项:M3 末 6 项全绿 + 1 项部分绿(feature flag 随社区发布开关落地),M4 可启动首个实验;北极星「7 日回访记录率」复评点为 H7 读数
5. 收官提交索引
| 仓库 | 收官 HEAD | 测试 |
|---|---|---|
| patbond-api | dev@8089c06 | 334 |
| patbond-flutter | dev@0e87413 | 502 |
| patbond-doc | 本收口提交 | strict 通过 |