From e2b32fe9b7efd77cdf7751a329fa382b6eeb902c Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Fri, 24 Apr 2026 12:33:12 +0900 Subject: [PATCH] =?UTF-8?q?fix(ai):=20B-1=20R2=20risk=5Fflag=5Frequires=5F?= =?UTF-8?q?26b=20=EB=A5=BC=20hard=20escalate=20=EB=A1=9C=20=EC=8A=B9?= =?UTF-8?q?=EA=B2=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 실측 발견 (safety 8건 재분류): - 10574 KRAS (safety_operational) → escalate=true (guard 전 pass) - 10568 JSA (safety_operational) → escalate=false suppressed=True - 10570 PPE (safety_operational) → escalate=false suppressed=True - 동일 도메인인데 4건 중 1건만 26B 처리. 같은 질의 종류 문서가 누구는 깊이 있고 누구는 짧음 → 사용자 관점 일관성 붕괴. 원인: risk_flag_requires_26b 가 soft escalate 분류 → R2 backlog guard 의 ratio 임계치(0.3) 에 걸림. 방금 classify 8건 enqueue 중 앞선 건들이 deep_summary 큐 채우자 뒤 건들이 전부 suppress. 수정: HARD_ESCALATE_REASONS 에 risk_flag_requires_26b 추가. safety/ health/chemical 등 도메인 정책 기반 escalate 는 절대 억제하지 않음. soft 영역은 여전히 남아있음: self_declare (4B 자가선언), deep_requested (recommend_deep_summary). 이 둘만 backlog guard 가 억제 대상. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/workers/classify_worker.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/workers/classify_worker.py b/app/workers/classify_worker.py index 1533b02..723adc6 100644 --- a/app/workers/classify_worker.py +++ b/app/workers/classify_worker.py @@ -56,8 +56,14 @@ LIBRARY_SUGGESTION_DOCTYPES = {"발주서", "세금계산서", "명세표"} # PR-B prompt_version task 이름 SUMMARY_TRIAGE_TASK = "p3a_short_summary" -# R2 — hard escalate 사유 (suppress 되지 않는 critical reason) -HARD_ESCALATE_REASONS = {"long_context", "triage_json_invalid", "low_confidence"} +# R2 — hard escalate 사유 (suppress 되지 않는 critical reason). +# 'risk_flag_requires_26b' 는 PR-A domain_policy 가 "이 문서 유형은 26B 필수" 로 지정한 +# 신호 (safety_legal_interpretation / chemical_hazard / incident_causation 등). backlog +# 가 많아도 억제하지 말 것 — safety 도메인 전수 coverage 보장. +HARD_ESCALATE_REASONS = { + "long_context", "triage_json_invalid", "low_confidence", + "risk_flag_requires_26b", +} # ───────────────────────── TriageOutput (R1) ─────────────────────────