feat(api): 添加安全上传 Skill 和 COS 图片归一化

This commit is contained in:
yuzhe
2026-07-22 18:12:23 +08:00
parent e7e268d4eb
commit b8b4d7a11c
17 changed files with 997 additions and 18 deletions

View File

@@ -10,6 +10,18 @@ Authorization: Bearer dd_live_xxx
平台级 Key 可跨组创建和查询项目。项目级 Key 只能操作绑定项目,包括在该项目中新建作品和验收轮次。密钥明文只在创建时返回一次。
## Agent 安全上传 Skill
项目内置 `.agents/skills/upload-delivery-desk-work`,用于引导 Agent 精确定位运营组、项目和作品后创建作品或提交新验收轮次。它强制执行“发现 → 生成计划 → 操作者确认 → 单次提交 → 回读验证”,不允许根据名称猜测目标。
更新 Skill 后重新生成分发包:
```powershell
powershell -ExecutionPolicy Bypass -File scripts/package-upload-skill.ps1
```
压缩包输出到 `skill-packages/upload-delivery-desk-work.zip`。API Key 只能通过 `DELIVERY_DESK_API_KEY` 环境变量提供,不应写入 Skill、计划文件或命令参数。
## 发现资源
```bash
@@ -37,7 +49,11 @@ curl -X POST http://localhost:3010/api/projects \
## 创建作品
JSON 请求中的 `images` 为 130 个公开 HTTP/HTTPS URL。服务只保存 URL不下载也不转存 COS数组顺序就是展示顺序,第一张为封面。
JSON 请求中的 `images` 为 130 个公开 HTTP/HTTPS URL,且平台必须已有活动 COS 配置。数组顺序就是展示顺序,第一张为封面。
- URL 与活动 COS 的公开域名或 CDN 域名同源时直接保存,不重复上传。
- 其他域名的图片会由服务端下载并转存到活动 COS最终入库 URL 来自该 COS。
- 外部图片单张不得超过 20 MB必须返回受支持的图片类型本机、内网、保留地址和非标准端口会被拒绝。
```bash
curl -X POST http://localhost:3010/api/projects/1/works \
@@ -52,7 +68,7 @@ curl -X POST http://localhost:3010/api/projects/1/works \
}'
```
相同 `projectId + externalId` 的重试不会重复创建,响应包含 `idempotent: true`调用方负责保证外部图片 URL 长期公开可用。
相同 `projectId + externalId` 的重试不会重复创建,响应包含 `idempotent: true`异源图片成功转存后不再依赖原地址长期可用。
## 创建新验收轮次
@@ -125,4 +141,4 @@ curl -X POST http://localhost:3010/api/review/july-content/works/12/decision \
旧的 `/api/notes``/api/notes/:id/versions``/api/notes/:id/review-rounds``/api/projects/:id/collections` 暂保留一个兼容周期。旧交付集 URL 会跳转到项目页;旧多候选稿请求会返回 `400`,不会再创建多方案轮次。新接入必须使用项目、作品和轮次接口。
错误统一为 `{ "error": "错误说明" }`。常见状态码:`400` 输入无效、`401` 未认证、`403` 越权、`404` 不存在、`409` 状态冲突。
错误响应均包含 `{ "error": "错误说明" }`。常见状态码:`400` 输入无效或地址被安全策略拒绝`401` 未认证、`403` 越权、`404` 不存在、`409` 状态冲突或未启用 COS、`413` 图片超过 20 MB、`422` 外部图片无法下载或内容无效、`502` 转存 COS 失败