From 587d745a508455b81cbfcda43a1030aa00035f25 Mon Sep 17 00:00:00 2001 From: OG T Date: Sun, 12 Apr 2026 17:52:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(km):=20=E4=BF=AE=E8=A3=9C=20KMConversionSer?= =?UTF-8?q?vice=20=E5=85=A9=E5=80=8B=E5=B1=AC=E6=80=A7=E9=8C=AF=E8=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - incident.title → getattr(incident, 'title', None) or alertname (Incident model 無 title 欄位) - km_entry.entry_id → km_entry.id (KnowledgeEntry model 主鍵為 id 非 entry_id) - 補跑後 KM entries 714 → 821 (+107), incidents.vectorized 全部歸零 Co-Authored-By: Claude Sonnet 4.6 --- apps/api/src/services/km_conversion_service.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/api/src/services/km_conversion_service.py b/apps/api/src/services/km_conversion_service.py index cd5b3808e..fe3c7a3d8 100644 --- a/apps/api/src/services/km_conversion_service.py +++ b/apps/api/src/services/km_conversion_service.py @@ -132,7 +132,8 @@ class KMConversionService: resolution_time=resolution_time, ) - title = f"{alertname} @ {affected_services[:40]} — {incident.title[:60] if incident.title else '未知'}" + _inc_title = getattr(incident, "title", None) or alertname + title = f"{alertname} @ {affected_services[:40]} — {_inc_title[:60]}" tags = [alertname, affected_services, severity, notification_type] if alert_category != "unknown": @@ -157,10 +158,10 @@ class KMConversionService: event_type="KM_CONVERTED", incident_id=incident.incident_id, actor="km_conversion_service", - action_detail=f"KM entry created: {km_entry.entry_id}", + action_detail=f"KM entry created: {km_entry.id}", success=True, context={ - "km_entry_id": km_entry.entry_id, + "km_entry_id": km_entry.id, "quality_level": target_status.value, "notification_type": notification_type, }, @@ -187,7 +188,7 @@ class KMConversionService: logger.info( "km_incident_vectorized_flagged", incident_id=incident.incident_id, - km_entry_id=km_entry.entry_id, + km_entry_id=km_entry.id, ) except Exception as _ve: logger.warning( @@ -226,13 +227,13 @@ class KMConversionService: logger.info( "km_converted", incident_id=incident.incident_id, - km_entry_id=km_entry.entry_id, + km_entry_id=km_entry.id, quality_level=target_status.value, notification_type=notification_type, ) return { - "km_entry_id": km_entry.entry_id, + "km_entry_id": km_entry.id, "quality_level": target_status.value, } @@ -312,7 +313,7 @@ class KMConversionService: f"- 觸發時間: {created_at_str}\n" f"- 解決時間: {resolved_at_str}\n" + (f"- 即時情境: {context_summary}\n" if context_summary else "") - + f"\n## 根因分析\n{root_cause or incident.title or '未知'}\n" + + f"\n## 根因分析\n{root_cause or getattr(incident, 'title', None) or '未知'}\n" + ( f"\n## 執行動作\n" f"- 類型: {action_type}\n"