fix: preserve monitor unknown and adapt doubao references
Desktop Client Build / Resolve Build Metadata (push) Successful in 32s
Backend CI / Backend (push) Successful in 15m37s
Desktop Client Build / Build Desktop Client (push) Successful in 22m53s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 30s

This commit is contained in:
2026-06-22 13:16:38 +08:00
parent 8c6789dca6
commit 365a41597e
4 changed files with 271 additions and 31 deletions
@@ -947,7 +947,7 @@ func (s *DesktopTaskService) Complete(ctx context.Context, client *repository.De
return nil, response.ErrUnauthorized(40108, "desktop_client_missing", "desktop client context is required")
}
finalStatus := normalizeDesktopTaskTerminalStatus(req.Status)
finalStatus := normalizeDesktopTaskCompletionStatus(req.Status)
resultJSON, err := marshalOptionalJSON(req.Payload)
if err != nil {
return nil, response.ErrBadRequest(40086, "invalid_desktop_task_payload", "payload must be serializable")
@@ -1520,7 +1520,7 @@ func scanDesktopTaskRows(rows pgx.Rows) ([]DesktopTaskView, error) {
Platform: platform,
Kind: kind,
Payload: json.RawMessage(payload),
Status: normalizeDesktopTaskTerminalStatus(status),
Status: normalizeDesktopTaskViewStatus(kind, status),
PublishJobStatus: publishJobStatus,
ComplianceBlockedRecordID: complianceBlockedRecordID,
ComplianceBlockedAt: complianceBlockedAt,
@@ -1598,7 +1598,7 @@ func buildDesktopTaskView(task *repository.DesktopTask) DesktopTaskView {
Platform: task.Platform,
Kind: task.Kind,
Payload: json.RawMessage(task.Payload),
Status: normalizeDesktopTaskTerminalStatus(task.Status),
Status: normalizeDesktopTaskViewStatus(task.Kind, task.Status),
DedupKey: task.DedupKey,
ActiveAttemptID: activeAttemptID,
LeaseExpiresAt: task.LeaseExpiresAt,
@@ -1637,6 +1637,22 @@ func normalizeDesktopTaskTerminalStatus(status string) string {
}
}
func normalizeDesktopTaskCompletionStatus(status string) string {
switch strings.TrimSpace(status) {
case "succeeded", "failed", "unknown":
return strings.TrimSpace(status)
default:
return strings.TrimSpace(status)
}
}
func normalizeDesktopTaskViewStatus(kind string, status string) string {
if strings.TrimSpace(kind) == "publish" {
return normalizeDesktopTaskTerminalStatus(status)
}
return strings.TrimSpace(status)
}
type desktopTaskRecoveryMode string
const (
@@ -138,6 +138,25 @@ func TestResolvePublishRecoveryOutcome(t *testing.T) {
}
}
func TestNormalizeDesktopTaskCompletionStatusPreservesUnknown(t *testing.T) {
t.Parallel()
if got := normalizeDesktopTaskCompletionStatus("unknown"); got != "unknown" {
t.Fatalf("normalizeDesktopTaskCompletionStatus(unknown) = %q, want unknown", got)
}
}
func TestNormalizeDesktopTaskViewStatusOnlyMapsPublishUnknownToFailed(t *testing.T) {
t.Parallel()
if got := normalizeDesktopTaskViewStatus("monitor", "unknown"); got != "unknown" {
t.Fatalf("monitor unknown view status = %q, want unknown", got)
}
if got := normalizeDesktopTaskViewStatus("publish", "unknown"); got != "failed" {
t.Fatalf("publish unknown view status = %q, want failed", got)
}
}
func TestIsComplianceInvalidArticleVersionError(t *testing.T) {
t.Parallel()