feat(doubao): implement challenge handling and monitoring improvements
Desktop Client Build / Resolve Build Metadata (push) Successful in 26s
Frontend CI / Frontend (push) Successful in 3m12s
Backend CI / Backend (push) Failing after 10m8s
Desktop Client Build / Build Desktop Client (push) Successful in 23m53s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 26s

- Added classification for `doubao_challenge_required` as a challenge in platform-auth-adapters.
- Enhanced account action summaries to include specific messages for Doubao human verification.
- Introduced monitoring functions to filter out blocked platforms based on account health.
- Updated task leasing to support platform-specific filtering for monitor tasks.
- Refined issue aggregation in HomeView to consolidate Doubao challenge failures into a single actionable item.
- Improved backend logic to handle platform IDs in task leasing requests and responses.
- Added tests for new functionality, ensuring proper handling of Doubao challenges and task leasing logic.
This commit is contained in:
Xu Liang
2026-06-24 02:31:35 +08:00
parent a406971187
commit 0afd082d96
11 changed files with 2456 additions and 272 deletions
@@ -420,6 +420,11 @@ func (s *MonitoringCallbackService) handleTaskResultForInstallation(
}, nil
}
if response := idempotentDesktopMonitoringResultResponse(task); response != nil {
_ = s.touchInstallation(ctx, installation.ID)
return response, nil
}
if task.ExecutionOwner == "desktop_tasks" {
if err := s.validateDesktopMonitorExecutionLease(ctx, task, installation.ID, req.LeaseToken); err != nil {
return nil, err
@@ -3538,6 +3543,24 @@ func validateMonitoringTaskResultSubmission(platformID string, runStatus string,
return nil
}
func idempotentDesktopMonitoringResultResponse(task *monitoringCollectTask) *MonitoringTaskResultResponse {
if task == nil || task.ExecutionOwner != "desktop_tasks" || !task.CallbackReceivedAt.Valid {
return nil
}
switch task.Status {
case "received", "failed", "skipped":
return &MonitoringTaskResultResponse{
TaskID: task.ID,
TaskStatus: task.Status,
CitationSourceCount: 0,
ContentCitationCount: 0,
}
default:
return nil
}
}
func normalizeMonitoringLeaseLimit(value int) int {
if value <= 0 {
return defaultMonitoringLeaseLimit