外观
Day 8:Moments、媒体与后台发布
当日成果
完成动态 feed、个人动态、图片、点赞、评论、社交通知和移动端 durable publishing,使媒体发布在断网、后台、重启和重试后仍能收敛。
能力边界
包括动态与通用图片媒体。聊天附件沿用 Day 6 合同;视频媒体和复杂编辑器不进入当前 Teaching Baseline。
能力合同
| Capability ID | API | Admin | iOS | Android | 关键证据 |
|---|---|---|---|---|---|
| SOCIAL-001 Feed/Profile posts | ✓ | ✓ | ✓ | ✓ | visibility |
| SOCIAL-002 Like/Comment | ✓ | ✓ | ✓ | ✓ | idempotency |
| SOCIAL-003 Notification | ✓ | ✓ | ✓ | ✓ | unread/repair |
| MEDIA-001 Image storage | ✓ | ✓ | ✓ | ✓ | ownership/lifecycle |
| SOCIAL-004 Durable publish | ✓ | ✓ | ✓ | ✓ | background/restart |
调查提示
text
进入 MOMENTS-MEDIA。调查 SocialPost、Media、Like、Comment、Notification、
StoredAsset、visibility、block/friend filter、clientPostId、本地 optimistic snapshot
和后台上传生命周期。列出孤儿资产、重复发布、旧网络响应覆盖本地 pending 和账号切换泄漏风险。1
2
3
2
3
学员决策
- feed visibility 和交互权限。
- clientPostId 的幂等范围。
- 媒体先上传还是先原子写入本地 outbox。
- pending/failed post 如何展示、重试和删除。
- 评论删除和通知审计语义。
Feature Goal
text
/goal 完成 MOMENTS-MEDIA,使 feed、个人动态、点赞评论、通知和图片发布在权限、
分页、重复提交、后台上传、断网与重启后正确收敛。以 visibility/block 测试、
clientPostId 幂等、孤儿资产清理、iOS background URLSession 和 Android WorkManager
恢复证据为完成标准。1
2
3
4
2
3
4
跨端实施面
- API:feed filters、post transaction、media ownership、notification events。
- Admin:动态/举报/通知的安全观测和治理。
- iOS:GRDB feed projection、pending snapshot、operation-owned media、后台续传。
- Android:Room feed projection、transactional outbox、WorkManager 上传和进度。
Mandatory gates
- [ ] visibility、friendship、block 和 interaction permission 正确。
- [ ]
(authorUserId, clientPostId)幂等。 - [ ] feed replace 不覆盖 pending post。
- [ ] 断网、后台和重启后上传继续。
- [ ] 失败项可重试或删除。
- [ ] 不存在跨账号 pending media 泄漏。
- [ ] StoredAsset purpose 与真实写入链路一致。
- [ ] 通知已读和分页可 repair。
常见假完成
- 页面先乐观插入,但 outbox 与 snapshot 不在同一事务。
- 先传图后落任务,崩溃产生孤儿资产。
- 较晚返回的旧 cache 覆盖新 network/Room 数据。
- 客户端过滤 visibility,API 返回越权数据。
Checkpoint
冻结 visibility matrix、asset lifecycle、后台发布故障证据和 moments-media-green。