fix(api): 產生 MCP PlayBook 修復候選
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
Code Review / ai-code-review (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-11 15:42:11 +08:00
parent ab1ee29638
commit cc6140230d
4 changed files with 791 additions and 84 deletions

View File

@@ -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: