背景
Console / Mobile / Harmony 端需要能看到 session 产生的文件(截图、日志、生成物等),并支持上传 / 下载。已有契约脚手架:
src/Shared/CortexTerminal.Contracts/Sessions/ArtifactDtos.cs(ArtifactInfo / CreateArtifactRequest / UploadUrlResponse 等)
src/Shared/CortexTerminal.Contracts/Streaming/ArtifactSyncFrames.cs(NotifyArtifactUploadedFrame / ArtifactSyncedFrame / ArtifactChangedEvent)
范围
In:
- 把现有 DTO 接入 Gateway:
POST /sessions/{id}/artifacts(创建 + 拿签名上传 URL)、POST /artifacts/{id}/complete(上报 SHA256 完成 ack)、GET /artifacts/{id}/download(签名下载 URL)
- artifact 元数据持久化(Postgres / 现有 storage)
- S3 兼容存储后端(MinIO / R2 / AWS S3),生命周期(ExpiresAt)与状态机(pending → ready → deleted)
- artifact 变更通过 SignalR 推送
ArtifactChangedEvent 给已订阅 session 的客户端
- 删除 artifact(soft delete,标记 deleted,触发 S3 清理)
Out:
验收
- 客户端能拿到签名 URL 并直传 S3
- Gateway 能校验 SHA256 并把 artifact 状态从 pending → ready
- SignalR
ArtifactChangedEvent 正确推送
- 单元测试覆盖状态机、签名 URL 生成、SHA256 校验
背景
Console / Mobile / Harmony 端需要能看到 session 产生的文件(截图、日志、生成物等),并支持上传 / 下载。已有契约脚手架:
src/Shared/CortexTerminal.Contracts/Sessions/ArtifactDtos.cs(ArtifactInfo / CreateArtifactRequest / UploadUrlResponse 等)src/Shared/CortexTerminal.Contracts/Streaming/ArtifactSyncFrames.cs(NotifyArtifactUploadedFrame / ArtifactSyncedFrame / ArtifactChangedEvent)范围
In:
POST /sessions/{id}/artifacts(创建 + 拿签名上传 URL)、POST /artifacts/{id}/complete(上报 SHA256 完成 ack)、GET /artifacts/{id}/download(签名下载 URL)ArtifactChangedEvent给已订阅 session 的客户端Out:
验收
ArtifactChangedEvent正确推送