diff --git a/apps/api/src/api/v1/signoz_webhook.py b/apps/api/src/api/v1/signoz_webhook.py index 3602c282..a4cca676 100644 --- a/apps/api/src/api/v1/signoz_webhook.py +++ b/apps/api/src/api/v1/signoz_webhook.py @@ -313,16 +313,28 @@ async def create_signoz_approval( action = f"[AI 建議] {analysis_result.action_title}" else: action = f"SignOz Alert: {alert_name}" - approval_request = ApprovalRequestCreate( - action=action, - description=description, - risk_level=analysis_result.risk_level if analysis_result else risk_level, - blast_radius=analysis_result.blast_radius if analysis_result else BlastRadius( + # 轉換 AIBlastRadius → BlastRadius (兩者欄位相同,enum 型別不同) + if analysis_result and analysis_result.blast_radius: + ai_br = analysis_result.blast_radius + blast_radius = BlastRadius( + affected_pods=ai_br.affected_pods, + estimated_downtime=ai_br.estimated_downtime, + related_services=ai_br.related_services, + data_impact=DataImpact(ai_br.data_impact.value), + ) + else: + blast_radius = BlastRadius( affected_pods=1, estimated_downtime="0", related_services=[service_name], data_impact=DataImpact.READ_ONLY, - ), + ) + + approval_request = ApprovalRequestCreate( + action=action, + description=description, + risk_level=analysis_result.risk_level if analysis_result else risk_level, + blast_radius=blast_radius, kubectl_command=command, dry_run_checks=[], requested_by="signoz-webhook",