Files
lixi f17e6f1215
CI / docs-build (push) Successful in 34s
docs: M3 第一波收口——报告 09~14 与契约草案入档挂导航
- 09 V5+community 骨架(191→206)、10 埋点队列三项(272→286)、
  11 契约草案(13 路径/19 操作)、12 防泄漏三仓落地、
  13 media MinIO 闭环 + auth 契约测试(→226,抓修 1 漂移)、14 收口总表
- backend-modules.md 更新五模块/六容器口径
- 媒体凭据形态已定型(契约冻结输入),剩余待定型点在 T3-04/05

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-08 17:13:49 +08:00

2.1 KiB
Raw Permalink Blame History

14 M3 第一波收口:地基、媒体闭环与防泄漏

执行日期:2026-09-08 交付:V5 迁移 + community 骨架、MinIO 媒体最小闭环、埋点队列加固、契约草案、凭证防泄漏三仓、auth 契约测试补齐


0. 概要

工单 交付 提交 测试
T3-01 V5 迁移 community 8 表 + pg_trgm,剪 2 条跨 schema FKM4/M5 补回) api dev@a97814a 191→199
T3-02 community 骨架 :8084 五容器、骨架期即接 RS256 校验 api dev@3c671fc →206
T3-03 media 闭环 MinIO 适配层 + 两步上传 + 私有桶签名读(ADR-016/017 api dev@10a43f8 →218
T3-19 auth 契约测试 6 操作 19 单元格全矩阵,抓修 1 真实漂移(reason NON_NULL api dev@263cd88 →226
T3-19 队列三项 30s 定时冲刷 + 指数退避 + anonymousId 持久化 flutter dev@4d40c38 272→286
T3-10 起草态 community/media 契约草案 13 路径/19 操作 + 4 待定型点 草案在 iteration-3/
ADR-021 防泄漏 9 规则两层检查三仓落地,零误报 + 拦截自测全命中 api@8330885 flutter@66f983d doc@8e1fe2f CI 全绿

波末状态:patbond-api 226 测试 / patbond-flutter 286 测试全绿;compose 六容器(postgres+minio+auth+user+pet+community)实测健康;三仓 CI 绿。

1. 契约冻结输入已定型(T3-03 部分)

媒体凭据形态:创建上传返回 {assetId, uploadUrl(预签名 PUT), method, requiredHeaders, expiresAt(10min)};读取一律私有桶预签名 GET1h TTL);purpose=post_image、mime 白名单 jpeg/png/webp、单文件 10 MiB。与草案偏差 7 项见 13 号报告 §4。剩余待定型:Feed 卡片字段与公开资料形态(T3-05)、权限/错误语义(T3-04)。

2. 遗留与下波

  • uploading 超时清理:方案已记录(13 号报告),定时任务另排。
  • 401 去 Authorization 重试、429 Retry-After 精细分支:待后端限流(10 号报告记录)。
  • 第二波:T3-04 帖子生命周期 → T3-05 Feed → T3-06/07 评论互动 → 契约冻结闸门;D3-9 方案 B 的 /internal 批量公开资料接口随 T3-05 落地。