diff --git a/apps/api/src/services/decision_manager.py b/apps/api/src/services/decision_manager.py index 54854818f..b313ad3b8 100644 --- a/apps/api/src/services/decision_manager.py +++ b/apps/api/src/services/decision_manager.py @@ -347,19 +347,9 @@ class DecisionManager: # READY 或 EXECUTING 狀態: 直接返回 if existing_token.state in (DecisionState.READY, DecisionState.EXECUTING): return existing_token - # COMPLETED 狀態: 只有 incident 也已解決才返回,否則創建新 decision - # 修復: 避免 incident 未解決但 decision 已完成導致 Y/n 按鈕永久禁用 + # COMPLETED 狀態: 直接返回,避免重複建立 decision 導致 Telegram 轟炸 if existing_token.state == DecisionState.COMPLETED: - from src.models.incident import IncidentStatus - if incident.status in (IncidentStatus.RESOLVED, IncidentStatus.CLOSED): - return existing_token - # incident 仍在處理中,需要新的 decision - logger.info( - "decision_reset_for_active_incident", - token=existing_token.token, - incident_id=incident.incident_id, - incident_status=incident.status.value, - ) + return existing_token # 2. 建立新 token token = DecisionToken( @@ -780,17 +770,9 @@ class DecisionManager: # READY 或 EXECUTING 狀態: 直接返回 if existing_token.state in (DecisionState.READY, DecisionState.EXECUTING): return existing_token - # COMPLETED 狀態: 只有 incident 也已解決才返回 + # COMPLETED 狀態: 直接返回,避免重複建立 decision 導致 Telegram 轟炸 if existing_token.state == DecisionState.COMPLETED: - from src.models.incident import IncidentStatus - if incident.status in (IncidentStatus.RESOLVED, IncidentStatus.CLOSED): - return existing_token - logger.info( - "decision_reset_for_active_incident_consensus", - token=existing_token.token, - incident_id=incident.incident_id, - incident_status=incident.status.value, - ) + return existing_token # 建立新 token token = DecisionToken(