fix(signoz_webhook): AIBlastRadius → BlastRadius 型別轉換
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
blast_radius 欄位傳入 AIBlastRadius 物件導致 Pydantic validation error, approval 無法存進 DB(Telegram 仍送出但無法批准)。 修法:明確轉換 AIBlastRadius → BlastRadius,data_impact enum 用 .value 橋接。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user