# 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 埋点白名单与挂接随页面滚动