补齐 AGC 项目快照的回收、配额、可见性与一致性校验
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Successful in 6m50s
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Successful in 6m18s
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Successful in 6m37s
Project CI / Backend tests (pull_request) Failing after 10s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m51s
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Successful in 4m0s
Project CI / Repository checks (pull_request) Failing after 11s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m56s
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled

- 服务端在清单写入成功后回收上一版清单不再引用的对象,单次最多 2000 个,上一版不可读时整轮跳过
- 服务端新增单项目 2 GiB 上限(413)、同一项目 5 秒最小清单间隔与用户小时配额(429 + Retry-After)
- 客户端新增单项目上限预判,并把单次同步预算改名为 MAX_SYNC_BYTES,避免与项目上限混淆
- 客户端在读取摘要后与上传前各复核一次文件元数据,同步期间被改写的文件不上传、不推进索引、也不被误判成删除
- 客户端新增 file-changed 与 throttled 两类可重试失败,429 计入可重试而不是终态失败
- 新增工作区「项目快照」面板:显示上传状态、上次同步时间、同步序号、已纳管文件数与最近一次同步计数,支持刷新与立即同步
- 新增面板前端测试,并把两条快照命令从 check-config 的 native-only 白名单移入前端 invoke 名单
- 部署模板补充 AGC 项目快照 OSS 变量,api-server 启动时打印启用状态与凭据来源
- 同步主规范、里程碑、开发运维文档
This commit is contained in:
kdletters
2026-09-17 16:51:31 +08:00
parent c722fd844b
commit e8a723c04e
19 changed files with 921 additions and 36 deletions
@@ -22,9 +22,10 @@ AGC 在项目打开期间按周期把用户项目增量上传到 OSS `agc-dev`
## 不做
- 不做云端下载/恢复、跨设备合并、版本回滚。
-做远端多余对象清理与生命周期策略下发
-保留多版本历史:清单写入成功后回收不再被引用的旧对象,同一路径只保留当前内容
- 不下发 bucket 生命周期策略;不做跨节点的用户级总量配额与计费口径。
- 不新增 SpacetimeDB 表或 procedure,不修改 `/api/external/v1` 与 External OpenAPI。
- 不新增面向用户的上传设置面板与进度 UI
- 不新增上传设置与进度条;界面只提供状态与手动触发
## 验收标准
@@ -37,6 +38,10 @@ AGC 在项目打开期间按周期把用户项目增量上传到 OSS `agc-dev`
7. 工作区窗口关闭与应用退出都会触发一次同步,且关闭路径不因同步失败而阻塞退出超过超时上限。
8. 服务端拒绝越界 `projectId`、相对路径与摘要;相同摘要重复提交走跳过分支且不写入新对象。
9. 新增日志与错误文案不含 Access Token、AccessKey、绝对路径与项目内容。
10. 清单写入成功后,上一版清单里不再被引用的对象被回收;上一版清单不可读时整轮不删除任何对象。
11. 单项目超过 2 GiB 时客户端明确失败、服务端按 413 拒绝;超过服务端小时配额或 5 秒最小间隔时返回 429 且带 `Retry-After`
12. 同步期间被改写的文件既不上传也不推进索引,沿用上一轮记录,且不会被误判成删除。
13. 工作区「项目快照」面板能显示上传状态、上次同步时间、同步序号与已纳管文件数,并能手动触发同步与显示失败原因。
## 依赖