From 7c7ad67d810c2a61a4c9523d21ee79d6c417a721 Mon Sep 17 00:00:00 2001 From: iomgaa Date: Tue, 14 Jul 2026 06:08:52 -0400 Subject: [PATCH] fix(pipeline): move extra_gates after standard gate pass check Co-Authored-By: Claude Opus 4.6 (1M context) --- app/question_gen/pipeline_v2.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/question_gen/pipeline_v2.py b/app/question_gen/pipeline_v2.py index cc015bf..faec0bf 100644 --- a/app/question_gen/pipeline_v2.py +++ b/app/question_gen/pipeline_v2.py @@ -487,14 +487,10 @@ async def _process_one_slot( continue store.update_gates(item_id, report) - # 题型专属额外 gate - extra_results = strategy.extra_gates(candidate) - if any(r.verdict == GateVerdict.FAIL for r in extra_results): - prev_reason = "; ".join( - r.reason for r in extra_results if r.verdict == GateVerdict.FAIL - ) + if not report.passed: + prev_reason = report.reject_reason logger.info( - "slot {} 额外 gate 失败 (attempt {}/{}): {}", + "slot {} 门控失败 (attempt {}/{}): {}", slot.slot_id, attempt, config.retry_limit, @@ -502,10 +498,14 @@ async def _process_one_slot( ) continue - if not report.passed: - prev_reason = report.reject_reason + # 题型专属额外 gate(仅标准门通过后才执行) + extra_results = strategy.extra_gates(candidate) + if any(r.verdict == GateVerdict.FAIL for r in extra_results): + prev_reason = "; ".join( + r.reason for r in extra_results if r.verdict == GateVerdict.FAIL + ) logger.info( - "slot {} 门控失败 (attempt {}/{}): {}", + "slot {} 额外 gate 失败 (attempt {}/{}): {}", slot.slot_id, attempt, config.retry_limit,