fix(api): 產生 MCP PlayBook 修復候選
This commit is contained in:
@@ -130,6 +130,11 @@ def approval_request_to_record_data(
|
||||
"""
|
||||
Convert ApprovalRequestCreate to dict for ApprovalRecord creation
|
||||
"""
|
||||
metadata = dict(request.metadata or {})
|
||||
preallocated_approval_id = str(metadata.pop("preallocated_approval_id", "") or "").strip()
|
||||
if preallocated_approval_id:
|
||||
UUID(preallocated_approval_id)
|
||||
|
||||
blast_radius_dict = None
|
||||
if request.blast_radius:
|
||||
blast_radius_dict = {
|
||||
@@ -151,7 +156,7 @@ def approval_request_to_record_data(
|
||||
})
|
||||
|
||||
now = datetime.now(UTC)
|
||||
return {
|
||||
record_data = {
|
||||
"action": request.action,
|
||||
"description": request.description,
|
||||
"status": ApprovalStatus.APPROVED if risk_level == RiskLevel.LOW else ApprovalStatus.PENDING,
|
||||
@@ -163,7 +168,7 @@ def approval_request_to_record_data(
|
||||
"dry_run_checks": dry_run_checks_list,
|
||||
"requested_by": request.requested_by,
|
||||
"expires_at": request.expires_at,
|
||||
"extra_metadata": request.metadata,
|
||||
"extra_metadata": metadata or None,
|
||||
"resolved_at": now if risk_level == RiskLevel.LOW else None,
|
||||
# 戰略 B: 告警風暴收斂
|
||||
"fingerprint": fingerprint,
|
||||
@@ -177,6 +182,9 @@ def approval_request_to_record_data(
|
||||
# 原本缺失 → Playbook 人工審核後 trust score 永遠不更新(學習閉環斷鏈)
|
||||
"matched_playbook_id": getattr(request, "matched_playbook_id", None),
|
||||
}
|
||||
if preallocated_approval_id:
|
||||
record_data["id"] = preallocated_approval_id
|
||||
return record_data
|
||||
|
||||
|
||||
def _record_value(value: Any) -> str:
|
||||
|
||||
Reference in New Issue
Block a user