feat: publish sanitized custom.97 source

This commit is contained in:
cneicy committed 2026-10-27 20:43:39 +08:00
1 parent 8e6ed0317b
commit 86c0276156
1022 files changed
+69903 -19207

No files matched your search

+52 -8
View File
@@ -24,6 +24,7 @@ import (
type taskPollingFetchAdaptor struct {
mu sync.Mutex
initInfo *relaycommon.RelayInfo
taskIDs []string
fetched chan string
blockTaskID string
@@ -59,7 +60,19 @@ func (a *batchPollingAdaptor) ParseBatchResult(_ []*model.Task, _ *http.Response
return results, nil
}
func (a *taskPollingFetchAdaptor) Init(_ *relaycommon.RelayInfo) {}
func (a *taskPollingFetchAdaptor) Init(info *relaycommon.RelayInfo) {
a.mu.Lock()
defer a.mu.Unlock()
a.initInfo = info
}
func (a *taskPollingFetchAdaptor) initChannelMeta() *relaycommon.ChannelMeta {
a.mu.Lock()
defer a.mu.Unlock()
if a.initInfo == nil {
return nil
}
return a.initInfo.ChannelMeta
}
func (a *taskPollingFetchAdaptor) FetchTask(_ string, _ string, task *model.Task, _ string) (*http.Response, error) {
taskID := ""
@@ -225,6 +238,37 @@ func TestUpdateVideoTasksDefaultSleepWaitsBetweenTasks(t *testing.T) {
assert.Equal(t, 1, adaptor.fetchCount())
}
func TestPollingPassesExecutingChannelTypeToAdaptor(t *testing.T) {
truncate(t)
const channelID = 112
baseURL := "https://gateway.example"
gateway := &model.Channel{Id: channelID, Type: constant.ChannelTypeNewAPI, Name: "gateway", Key: "sk-gateway", Status: common.ChannelStatusEnabled, BaseURL: &baseURL}
gateway.SetOtherSettings(dto.ChannelOtherSettings{DisableTaskPollingSleep: true})
require.NoError(t, model.DB.Create(gateway).Error)
task := seedPollingTask(t, channelID, "task_gateway", "upstream_gateway")
taskChannels := map[int][]string{channelID: {task.GetUpstreamTaskID()}}
tasks := map[string]*model.Task{task.GetUpstreamTaskID(): task}
perTask := &taskPollingFetchAdaptor{}
previousFactory := GetTaskAdaptorFunc
GetTaskAdaptorFunc = func(constant.TaskPlatform) TaskPollingAdaptor { return perTask }
t.Cleanup(func() { GetTaskAdaptorFunc = previousFactory })
require.NoError(t, UpdateVideoTasks(context.Background(), constant.TaskPlatform("kling"), taskChannels, tasks))
meta := perTask.initChannelMeta()
require.NotNil(t, meta, "per-task polling initializes the adaptor with channel metadata")
assert.Equal(t, constant.ChannelTypeNewAPI, meta.ChannelType, "the adaptor derives the upstream kind from the channel type")
assert.Equal(t, channelID, meta.ChannelId)
assert.Equal(t, baseURL, meta.ChannelBaseUrl)
batch := &batchPollingAdaptor{}
require.NoError(t, UpdateBatchTasks(context.Background(), batch, taskChannels, tasks))
meta = batch.initChannelMeta()
require.NotNil(t, meta, "batch polling initializes the adaptor with channel metadata")
assert.Equal(t, constant.ChannelTypeNewAPI, meta.ChannelType)
assert.Equal(t, channelID, meta.ChannelId)
assert.Equal(t, baseURL, meta.ChannelBaseUrl)
}
func TestDispatchPlatformUpdateUsesFetchMode(t *testing.T) {
truncate(t)
const channelID = 109
@@ -722,8 +766,8 @@ func TestSweepTimedOutTasksHonorsRefundRolloutBoundary(t *testing.T) {
assert.EqualValues(t, model.TaskStatusFailure, reloadedModern.Status)
assert.Zero(t, reloadedLegacy.Quota)
assert.Zero(t, reloadedModern.Quota)
assert.Contains(t, reloadedLegacy.FailReason, "旧系统遗留任务")
assert.Contains(t, reloadedModern.FailReason, "任务超时")
assert.Contains(t, reloadedLegacy.FailReason, "old system")
assert.Equal(t, "Task timed out", reloadedModern.FailReason)
assert.Equal(t, initialQuota+modernTaskQuota, getUserQuota(t, userID))
assert.Equal(t, int64(1), countLogs(t))
}
@@ -802,7 +846,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
statusCode: http.StatusNotFound,
wantStatus: model.TaskStatusFailure,
wantRefund: true,
wantReason: "upstream task not found (HTTP 404)",
wantReason: "Upstream task not found",
wantUnchanged: false,
},
{
@@ -820,7 +864,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
wantStatus: model.TaskStatusFailure,
wantFailures: 3,
wantRefund: true,
wantReason: "poll failed: transient (HTTP 429)",
wantReason: "Failed to query the upstream task status",
},
{
name: "UNKNOWN increments",
@@ -904,7 +948,7 @@ func TestUpdateVideoSingleTaskPollClassification(t *testing.T) {
assert.Empty(t, persisted.FailReason)
}
if testCase.wantReason != "" {
assert.Contains(t, persisted.FailReason, testCase.wantReason)
assert.Equal(t, testCase.wantReason, persisted.FailReason)
}
if testCase.wantState != "" {
assert.JSONEq(t, testCase.wantState, string(persisted.PrivateData.PluginState))
@@ -939,7 +983,7 @@ func TestUpdateBatchTasksPollClassification(t *testing.T) {
statusCode: http.StatusNotFound,
wantStatus: model.TaskStatusFailure,
wantRefund: true,
wantReason: "upstream task not found (HTTP 404)",
wantReason: "Upstream task not found",
},
{
name: "401 increments every task",
@@ -986,7 +1030,7 @@ func TestUpdateBatchTasksPollClassification(t *testing.T) {
assert.EqualValues(t, testCase.wantStatus, persisted.Status)
assert.Equal(t, testCase.wantFailures, persisted.PrivateData.PollFailures)
if testCase.wantReason != "" {
assert.Contains(t, persisted.FailReason, testCase.wantReason)
assert.Equal(t, testCase.wantReason, persisted.FailReason)
}
if testCase.wantRefund {
assert.Equal(t, initialQuota+preConsumed, getUserQuota(t, userID))