fix(api): resolve db-only stale incidents
This commit is contained in:
@@ -1168,12 +1168,14 @@ class IncidentService:
|
||||
from src.utils.timezone import now_taipei
|
||||
|
||||
# 1. 從 Working Memory 讀取;Redis TTL 過期時退回 PostgreSQL。
|
||||
hydrated_from_episodic = False
|
||||
incident = await self.get_from_working_memory(incident_id)
|
||||
if incident is None:
|
||||
incident = await self.get_from_episodic_memory(incident_id)
|
||||
if incident is None:
|
||||
logger.warning("incident_not_found_for_resolve", incident_id=incident_id)
|
||||
return None
|
||||
hydrated_from_episodic = True
|
||||
logger.info(
|
||||
"incident_resolve_hydrated_from_episodic_memory",
|
||||
incident_id=incident_id,
|
||||
@@ -1197,11 +1199,15 @@ class IncidentService:
|
||||
incident.resolved_at = now_taipei()
|
||||
incident.updated_at = now_taipei()
|
||||
|
||||
# 3. 寫入 Working Memory
|
||||
redis_success = await self.save_to_working_memory(incident)
|
||||
if not redis_success:
|
||||
logger.error("resolve_redis_write_failed", incident_id=incident_id)
|
||||
return None
|
||||
# 3. 寫入 Working Memory。Redis TTL 已過的歷史 DB-only 事件只更新 DB,
|
||||
# 不重新灌回 Redis working memory,避免舊事件回流成 active workload。
|
||||
if hydrated_from_episodic:
|
||||
logger.info("resolve_db_only_incident", incident_id=incident_id)
|
||||
else:
|
||||
redis_success = await self.save_to_working_memory(incident)
|
||||
if not redis_success:
|
||||
logger.error("resolve_redis_write_failed", incident_id=incident_id)
|
||||
return None
|
||||
|
||||
# 4. 同步到 Episodic Memory
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user