Files
patbond-doc/docs/development/iterations/iteration-3/29-m3-summary.md
T
lixi c830799fa0
CI / docs-build (push) Successful in 42s
docs: 北极星首次出数改触发条件,09-21 时限作废(iteration-4/06 §0.4 档 A)
用户拍板采纳档 A。09-21 经算术判定不可能达成:它是 W37 队列
(首记落在 09-07~09-13)+8 天的成熟日,而该队列入队窗口已于
09-13 结束——今日起产生的首记一律归入 W38,无任何补救能为 W37
增加分母。继续挂该日期只会持续生产假红线。

- device-verification.md(常设页,权威改动):时限提醒改为触发条件
  表述。T0 = 首个满足「≥1 名真实移动端用户产生生命周期首条
  health_record_create_succeeded」的 ISO 周;首次出数 = T0+8 天后的
  首个周一,此后每周一滚动。保留「本清单完成时点决定 T0 到来」的
  前置定位;补记模拟器自播种最早 09-28 的路径及其两个约束
  (分子不含首记当日需跨两天;须标注非产品读数、分账登记)。
- iteration-3/29-m3-summary.md(迭代存档):原文按存档惯例不改写,
  追加带日期的修正注记,同时标注「挂起四项」为当时口径(实际 10 项)。

未改:iteration-3/06 尚有 5 处 09-21 表述(含 :343 把「09-21 起自然
达成」当作 A/B 前置条件 2 判绿的依据),按 §723「迭代报告存档豁免」
暂留,待定是否追加注记。ADR-023 待其余打包决策拍定后再一次成文。

验证:secret-scan exit 0;mkdocs build --strict exit 0。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:59:46 +08:00

81 lines
6.4 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.
# 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-016~021 拍板
- **第一波**(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 建议
**真机挂起四项**(步骤已在 [真机验证清单](../../device-verification.md) 备齐):媒体上传弱网、乐观更新手感、Feed 图片加载、社区事件落库。**时限提醒**:埋点角色建议 2026-09-21(北极星首次出数日)前完成 M2 两项,否则首批读数只能标未验收。
> **⚠️ 后续修正(2026-09-14,依据 iteration-4/06 §0 与 iteration-4/07 §专项 A)**——本段原文按迭代报告存档惯例保留,但两处已不成立:
> ① **「2026-09-21 前完成」时限已失效**:09-21 是 W37 队列(首记落在 09-07~09-13)+8 天的成熟日,该队列入队窗口已于 09-13 结束,无任何补救能为其增加分母。现改为触发条件表述,见 [真机验证清单](../../device-verification.md) 顶部与 iteration-4/06 §0.4 档 A。
> ② **「挂起四项」是当时口径**:截至 2026-09-14 实际挂起 **10 项**M2 两项 + M3 四项 + M3.5 四项)。本段的「四项」仅指 M3 引入的那四项。
**M3 范围内遗留**:
1. 完整草稿列表与自动保存(26 号 §7);大图「下滑关闭」手势待 photo_view 复评
2. `widthPx/heightPx` 恒 null(28 号观察项 1):契约描述称 confirm 后回填,实现无尺寸探测——单图帖一律回落 4:3,不呈现真实宽高比;补实现或改契约描述二选一
3. `eventVersion` 口径未定型(28 号观察项 2):契约描述可两读、服务端不校验、客户端硬编码 1;需定型为「事件 schema 版本」并写入字典纪律
4. uploading 超时未确认 asset 的清理定时任务(13 号已有方案未实现)
5. 429 限流未实现,连带客户端 Retry-After 精细分支挂起(承自 09 号出入清单)
6. 话题功能(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 通过 |