perf(storage): 极简化任务历史并增加保留治理
停止持久化 provider 原始响应、兼容响应快照、attempt/event/outbox 重复 JSON,并由标准任务结果动态生成 Kling/Keling/Volces 兼容响应。 增加事件去重与预算、极简 callback 投递、7/30 天分批清理、安全删除条件、并发迁移索引及可实际恢复的任务域排除备份。历史清理默认关闭,待兼容协议和异步恢复在线验证后单独启用。 验证:Go 全量测试与 go vet、PostgreSQL 18 集成与实际备份恢复、迁移安全测试、bash -n、ShellCheck、Compose 配置和人工发布脚本测试均通过。
This commit is contained in:
@@ -169,35 +169,24 @@ Idempotency-Key: ${groupKey}:${version}
|
||||
|
||||
### 1.6 任务进度回调到 server-main
|
||||
|
||||
AI Gateway 不直接替换原业务前端 WebSocket 通道。Gateway 配置任务进度回调地址,所有任务中间状态先写入 Gateway 本地事件表和 callback outbox,再回调给 `server-main`,由 `server-main` 内部推送流程复用原 WebSocket 网关推送给业务前端。
|
||||
AI Gateway 不直接替换原业务前端 WebSocket 通道。Gateway 仅在真实任务状态变化时写入本地事件表和 callback outbox,再回调给 `server-main`,由 `server-main` 内部推送流程复用原 WebSocket 网关推送给业务前端。
|
||||
|
||||
```http
|
||||
POST /internal/platform/task-progress-callbacks
|
||||
Authorization: Bearer ${SERVER_MAIN_INTERNAL_TOKEN}
|
||||
Content-Type: application/json
|
||||
Idempotency-Key: ${taskId}:${seq}
|
||||
X-EasyAI-Event-Type: task.progress
|
||||
X-EasyAI-Event-Type: task.completed
|
||||
```
|
||||
|
||||
请求体:
|
||||
|
||||
```json
|
||||
{
|
||||
"eventId": "uuid",
|
||||
"taskId": "gateway-task-id",
|
||||
"externalTaskId": "server-main-task-id",
|
||||
"userId": "user-id",
|
||||
"tenantId": "tenant-id",
|
||||
"apiKeyId": "optional",
|
||||
"kind": "images.generations",
|
||||
"model": "gpt-image-1",
|
||||
"seq": 12,
|
||||
"event": "progress",
|
||||
"status": "running",
|
||||
"phase": "polling",
|
||||
"progress": 0.42,
|
||||
"message": "Generating video frames",
|
||||
"payload": {},
|
||||
"seq": 3,
|
||||
"eventType": "task.completed",
|
||||
"status": "succeeded",
|
||||
"createdAt": "2026-05-09T12:00:00Z"
|
||||
}
|
||||
```
|
||||
@@ -205,7 +194,7 @@ X-EasyAI-Event-Type: task.progress
|
||||
`server-main` 处理要求:
|
||||
|
||||
- 使用 `Idempotency-Key` 或 `taskId + seq` 幂等去重。
|
||||
- 根据 `externalTaskId` / `taskId` / `userId` / `tenantId` 定位原业务频道。
|
||||
- 根据 `taskId` 定位原业务频道;需要完整结果时调用 task detail。
|
||||
- 复用现有 WebSocket 网关事件格式推给前端,尽量不改业务前端订阅协议。
|
||||
- 只负责推送与必要状态同步,不重新执行任务、不重新计算计费。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user