feat(ai-router): DIAGNOSE intent override 升級至 Nemotron (P0)

This commit is contained in:
OG T
2026-04-04 17:41:45 +08:00
parent c94cf5ac68
commit 8056be5847
2 changed files with 18 additions and 3 deletions

View File

@@ -260,9 +260,9 @@ class AIRouter:
IntentType.RESTART: None, # 依複雜度
IntentType.SCALE: None, # 依複雜度
IntentType.CONFIG: None, # 依複雜度 (但 HIGH 會升級)
# 2026-04-04 ogt: Phase 25 P0 — DIAGNOSE 改為 NEMOTRON (NIM 188)
# 原因: 零費用本地 NIM + 高能力; 搭配 _local_fallback_chain 保證不觸碰雲端
IntentType.DIAGNOSE: AIProviderEnum.NEMOTRON, # 診斷優先 NIM 本地 (隱私)
# P0 2026-04-04 Claude Code: DIAGNOSE 升級至 Nemotron高能力雲端
# 注意: FORCE_LOCAL 情境由 require_local=True + privacy 過濾保護Nemotron 會被正確跳過
IntentType.DIAGNOSE: AIProviderEnum.NEMOTRON,
# 輔助意圖
IntentType.DELETE: AIProviderEnum.CLAUDE, # CRITICAL → 強制 Claude
IntentType.ROLLBACK: None, # 依複雜度

View File

@@ -136,3 +136,18 @@ class TestLocalFallbackChain:
assert result.success is False
assert result.error == "local_providers_unavailable"
class TestDiagnoseIntentOverride:
"""DIAGNOSE intent 應優先路由至 Nemotron非 FORCE_LOCAL 情境)"""
def test_diagnose_override_is_nemotron(self):
"""_intent_provider_overrides[DIAGNOSE] 應為 NEMOTRON"""
from src.services.ai_router import AIRouter, AIProviderEnum
from src.services.intent_classifier import IntentType
router = AIRouter()
override = router._intent_provider_overrides.get(IntentType.DIAGNOSE)
assert override == AIProviderEnum.NEMOTRON, (
f"DIAGNOSE 應路由至 NEMOTRON實際為 {override}"
)