停止持久化 provider 原始响应、兼容响应快照、attempt/event/outbox 重复 JSON,并由标准任务结果动态生成 Kling/Keling/Volces 兼容响应。 增加事件去重与预算、极简 callback 投递、7/30 天分批清理、安全删除条件、并发迁移索引及可实际恢复的任务域排除备份。历史清理默认关闭,待兼容协议和异步恢复在线验证后单独启用。 验证:Go 全量测试与 go vet、PostgreSQL 18 集成与实际备份恢复、迁移安全测试、bash -n、ShellCheck、Compose 配置和人工发布脚本测试均通过。
38 lines
1.6 KiB
Go
38 lines
1.6 KiB
Go
package httpapi
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/easyai/easyai-ai-gateway/apps/api/internal/store"
|
|
)
|
|
|
|
func TestVolcesCompatibleTaskBuildsProtocolResponseFromCanonicalResult(t *testing.T) {
|
|
now := time.Date(2026, 7, 18, 8, 0, 0, 0, time.UTC)
|
|
task := store.GatewayTask{
|
|
ID: "gateway-task-1", Kind: "videos.generations", Status: "succeeded", Model: "doubao-seedance-2-0-mini-260615",
|
|
RemoteTaskID: "cgt-upstream-1", CreatedAt: now, UpdatedAt: now.Add(time.Second),
|
|
Result: map[string]any{
|
|
"id": "cgt-upstream-1", "model": "doubao-seedance-2-0-mini-260615", "status": "succeeded",
|
|
"data": []any{map[string]any{"url": "https://example.com/out.mp4", "type": "video"}},
|
|
"future_official_field": "not-whitelisted",
|
|
},
|
|
Usage: map[string]any{"totalTokens": 9},
|
|
Billings: []any{map[string]any{"amount": 3}}, BillingSummary: map[string]any{"currency": "resource"}, FinalChargeAmount: 3,
|
|
Attempts: []store.TaskAttempt{{Provider: "volces"}},
|
|
}
|
|
got := volcesCompatibleTask(task)
|
|
if got["id"] != task.RemoteTaskID || got["status"] != "succeeded" || got["future_official_field"] != nil {
|
|
t.Fatalf("unexpected compatibility identity/status: %+v", got)
|
|
}
|
|
content, _ := got["content"].(map[string]any)
|
|
if content["video_url"] != "https://example.com/out.mp4" || got["usage"] == nil {
|
|
t.Fatalf("official fields were lost: %+v", got)
|
|
}
|
|
for _, forbidden := range []string{"gateway_task_id", "gateway_status", "billings", "billing_summary", "final_charge_amount", "upstream_task_id"} {
|
|
if _, ok := got[forbidden]; ok {
|
|
t.Fatalf("compatibility response contains gateway extension %q: %+v", forbidden, got)
|
|
}
|
|
}
|
|
}
|