AGC 项目定时快照上传(目标 OSS agc-dev) #400
Reference in New Issue
Block a user
Delete Branch "codex/agc-project-snapshot-upload"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
交付内容
project_snapshot模块:项目扫描与排除口径、增量索引、差异对比、上传编排、状态查询。CloseRequested);应用退出只在有界预算内等待在途同步收尾,不重复发起。POST /api/agc/project-snapshots/files与/manifest,由 api-server 用服务端凭据写入私有前缀agc/project-snapshots/v1/{user}/{project}/;客户端不持有 OSS 凭据、不直连 OSS。platform-oss新增内部对象精确写入与探测、项目快照对象键构造;修复head_internal_object读 HEAD 响应长度恒为 0(会导致服务端"已存在即跳过"永不生效)。shared-contracts新增agc_project_snapshotsDTO 与项目 ID、相对路径、摘要校验。#[ignore],env 驱动)。check-config.mjs的 native-only 命令白名单,恢复npm run agc可启动。验证证据
cargo run -p platform-oss --example agc_project_snapshot_live_smoke对真实agc-dev完成写入 → 读回(contentLength 32)→ 清单写入 → 探针清理。synced uploaded=6 uploadedBytes=36694 remoteSkipped=6,紧接着第二次no-op uploaded=0。trigger=periodic ... uploaded=6;把周期设为 600 秒排除干扰、改一个文件后关窗得到trigger=project-close ... revision=2 uploaded=1,索引摘要由28d837cd84f8ab62推进到bff34e2e336d901f(同步在进程退出前完成)。project_snapshot14 passed(+1 ignored live)、api-serverproject_snapshots3 passed、platform-oss 39 passed、shared-contracts 87 passed、cargo fmt --check(两处)、check:encoding、check:doc-index、git diff --check、check-config.mjs全部通过。已知未决(不阻塞本里程碑)
GENARRATIVE_AGC_PROJECT_SNAPSHOT_OSS_*或回退的ALIYUN_OSS_*具备目标 bucket 私有前缀的PutObject权限;未配置时接口返回 503、客户端失败关闭(不推进索引)。read_local_project_snapshot_state已注册但未接 UI,失败只写本机日志。不做
/api/external/v1与 External OpenAPI,不新增 SpacetimeDB 表。