把远程对象存储的第一步从“实现远程写入”调整为“固定对象布局和测试骨架”。
本轮只做下面这些内容:
- 固定索引对象与 shard 对象的最小布局
- 固定读取顺序
- 补 fixture
- 补一个只验证布局形状的系统测试骨架
- 真实 S3/OSS 读写
- provider SDK 接入
- 凭证加载
- 重试与回退逻辑
当前先做“对象布局设计”,而不是先做 mock adapter。
原因:
- 先设计布局,后续 mock 和真实实现都能复用同一契约
- 如果直接做 mock adapter,容易把错误的 key 设计过早固化
- 当前仓库更缺的是可复查的远程存储边界,而不是一个看似可跑但契约不稳的假实现
docs/contracts/storage-remote-layout.mdfixtures/system/storage/remote-layout-s3.jsontests/system/remote_storage_contract.rs
完成这一步后,下一轮再做:
- mock adapter 或内存远程仓储原型
- 读取 / 写入错误路径测试
- 再评估真实 provider 接入
crates/storage已新增MockRemoteNewsRepository- 当前 mock 只用于契约演进,不接入
app正式运行路径 - 已补最小去重 / 稳定排序 / 读写错误路径测试