diff --git a/apps/api/src/main.py b/apps/api/src/main.py index 5a86089a..28928a8d 100644 --- a/apps/api/src/main.py +++ b/apps/api/src/main.py @@ -276,6 +276,9 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]: closed_at=record.closed_at, ttl_days=record.ttl_days, vectorized=record.vectorized, + # ADR-073: 分類欄位必須還原,否則 KM 寫入時全為 "unknown" + notification_type=record.notification_type, + alert_category=record.alert_category, ) if await incident_service.save_to_working_memory(incident): restored += 1 diff --git a/apps/api/src/services/approval_execution.py b/apps/api/src/services/approval_execution.py index 4a45f362..e0ddb8ac 100644 --- a/apps/api/src/services/approval_execution.py +++ b/apps/api/src/services/approval_execution.py @@ -628,7 +628,11 @@ class ApprovalExecutionService: if approval.incident_id: try: from src.services.incident_service import get_incident_service - _inc = await get_incident_service().get_incident(approval.incident_id) + _svc = get_incident_service() + # get_from_working_memory (Redis) → fallback get_from_episodic_memory (PG) + _inc = await _svc.get_from_working_memory(approval.incident_id) + if _inc is None: + _inc = await _svc.get_from_episodic_memory(approval.incident_id) if _inc: if _inc.signals: alertname = _inc.signals[0].labels.get("alertname", "unknown") or "unknown" diff --git a/apps/api/src/services/incident_service.py b/apps/api/src/services/incident_service.py index 5b176a49..faa81a16 100644 --- a/apps/api/src/services/incident_service.py +++ b/apps/api/src/services/incident_service.py @@ -680,6 +680,9 @@ class IncidentService: ttl_days=record.ttl_days, persisted_to_pg=True, # 從 PG 讀取,必為 True vectorized=record.vectorized, + # ADR-073: 分類欄位必須從 DB 還原,否則 KM 寫入時全為 "unknown" + notification_type=record.notification_type, + alert_category=record.alert_category, ) # =========================================================================