fix(proposal): action 優先用 kubectl_command,修復批准後永遠 skip 執行的根本 bug

根本問題:approval_records.action 存的是 LLM action_title(中文標題,如「重啟 sentry 服務」),
parse_operation_from_action() 無法解析,導致 execute_approved_action() 每次都 skip。

修正:action 優先取 llm_proposal["kubectl_command"](可執行的 kubectl 指令),
僅在沒有 kubectl_command 時才 fallback 到 action_title。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-09 18:13:22 +08:00
parent 49a15e1ac9
commit ae9780837d

View File

@@ -169,7 +169,11 @@ class ProposalService:
# 使用 LLM 結果或 fallback 到模板
if llm_success and llm_proposal:
action = llm_proposal["action"]
# 2026-04-09 Claude Sonnet 4.6: action 優先用 kubectl_command可執行
# fallback 到 action_title中文標題無法被 parse_operation_from_action 解析)
# 根本問題: action="未知操作 | " 導致批准後永遠 skip 執行
_kubectl = llm_proposal.get("kubectl_command", "").strip()
action = _kubectl if _kubectl else llm_proposal["action"]
description = f"{llm_proposal['description']}\n\n**AI 推理**: {llm_proposal['reasoning']}"
action_type = llm_proposal.get("primary_responsibility", "default").lower()