From 76bb730b137cf2fb378aa9b695e784558b8fac10 Mon Sep 17 00:00:00 2001 From: wangbo Date: Mon, 3 Aug 2026 12:33:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(routing):=20=E5=B0=86=20admission=20?= =?UTF-8?q?=E6=8E=92=E9=98=9F=E8=AE=A1=E5=85=A5=E5=B9=B3=E5=8F=B0=E8=B4=9F?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 候选路由此前只统计 River 队列和历史尝试,未统计尚未生成 River Job 的异步 admission 等待任务,突发提交会集中绑定同一高优先级平台,导致其他平台容量闲置。\n\n将等待中的 gateway_task_admissions 纳入平台模型排队负载,并通过 task_id 去重保留原有统计语义,使候选路由可以在集群 admission 阶段按并发利用率分流。\n\n验证:\n- go test ./internal/store ./internal/runner -count=1\n- go vet ./internal/store ./internal/runner\n- gofmt -l internal/store/candidates.go --- apps/api/internal/store/candidates.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/apps/api/internal/store/candidates.go b/apps/api/internal/store/candidates.go index a14ce34..085b139 100644 --- a/apps/api/internal/store/candidates.go +++ b/apps/api/internal/store/candidates.go @@ -104,9 +104,17 @@ LEFT JOIN ( AND expires_at > statement_timestamp() GROUP BY scope_key ) con ON con.scope_key = $5::text || m.id::text -LEFT JOIN ( + LEFT JOIN ( SELECT queued_sources.platform_model_id, COUNT(DISTINCT queued_sources.task_id) AS waiting FROM ( + SELECT admission.task_id::text AS task_id, + admission.platform_model_id::text AS platform_model_id + FROM gateway_task_admissions admission + JOIN gateway_tasks admission_task ON admission_task.id = admission.task_id + WHERE admission.status = 'waiting' + AND admission_task.status = 'queued' + AND admission_task.next_run_at <= now() + UNION ALL SELECT t.id::text AS task_id, qm.id::text AS platform_model_id FROM gateway_tasks t JOIN integration_platforms qp ON TRUE