a611acb358
CI / docs-build (push) Successful in 32s
- 15~17 社区后端纵切三单(帖子/Feed 作者链路/评论互动关注,226→310) - 18 契约冻结 v1.3.0(31 路径/43 操作,26 项修正照单全收) - 19 快照同步与全仓契约矩阵(173 格零漂移,修 allOf 校验盲区,→325) - 20 收口总表:定型语义汇总(第三波接入依据)与质量事件记录 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.8 KiB
2.8 KiB
20 M3 第二波收口:社区后端纵切与契约冻结 v1.3.0
执行日期:2026-09-08 ~ 2026-09-09 交付:community 域全部业务接口 + /internal 作者资料链路 + 契约冻结 v1.3.0 + 全仓契约矩阵扩展
0. 概要
| 工单 | 交付 | 提交(api dev) | 测试 |
|---|---|---|---|
| T3-04 帖子生命周期 | 5 端点、幂等专项、防枚举 40403、MediaAssetGateway | 101ac0f | 226→251 |
| T3-05 Feed + 作者链路 | FeedCard/AuthorSummary 定型、/internal 批量 + Feign 降级 | 40bac85 / 99a3c1f | →282 |
| T3-06/07/08 评论互动关注 | 11 端点、真并发幂等、计数同事务、三新码定型 | 19e8cba / 7f1dd33 | →310 |
| 契约冻结 | openapi v1.3.0(31 路径/43 操作/72 schema),26 项修正照单全收 | doc main@f848476 | — |
| 快照同步 + 矩阵扩展 | 四模块快照 v1.3.0、community 64 格 + media 8 格、修 allOf 校验盲区 | 0569585 | →325 |
波末状态:patbond-api 325 测试全绿(CI 直查 success)、契约矩阵 43/43 操作 173 格唯一豁免(care-reminders 并发 409)、实现-契约零漂移。
1. 定型的关键语义(第三波 Flutter 接入依据)
- 媒体:两步上传(创建→预签名 PUT 直传→confirm ready);读取一律预签名 GET(1h TTL,URL 会过期客户端不得持久化);post_image/jpeg/png/webp/10 MiB
- 帖子:发布走 PATCH draft→published;防枚举 404/40403(hidden 对作者亦不露、互动面=帖子公开面含本人草稿);Idempotency-Key 必带 + request_hash(40905 同键异 hash)
- Feed:(published_at,id) 游标;FeedCard 含 contentPreview(200 码点)/coverImage/三计数/likedByMe/bookmarkedByMe/AuthorSummary;user 服务故障时作者退 id-only、Feed 照常 200
- 互动:PUT/DELETE 语义幂等,响应权威终态 {liked,likeCount};自取关 200 no-op;42204 仅自关注
- 评论:单层;仅评论作者可删(拍板);40404/40406 新码
- 错误码 v1.3.0 新增 9 码:40301/40403/40404/40405/40406/40905/42203/42204/42205
2. 质量事件
- auth 契约测试(第一波)与本波矩阵扩展累计抓修 2 处真实漂移(events reason NON_NULL、校验器 allOf 盲区),契约测试机制持续兑现
- T3-04 agent 曾在等待测试构建时中断,SendMessage 续跑无损交付
- 快照同步 agent 报告 Monitor 出现过与 Gitea API 直查矛盾的假 success 事件(含时间戳晚于实时时钟的不可能事件),其未采信、以 API 多次直查为准——多源核验纪律有效
3. 遗留与下波
- uploading 超时清理定时任务(方案在 13 号)、429 Retry-After 分支(待后端限流)
- 第三波(Flutter 社区接入):T3-12 community feature 数据层(契约 v1.3.0 已冻结可开工)→ T3-13 媒体上传客户端 → T3-14 Feed 替换 → T3-15/16 详情互动(乐观更新 ToggleSync)→ T3-17 发布页;字典 v3 埋点白名单与挂接随页面滚动