From ae9780837d026722d6280cdc24094ae256824aeb Mon Sep 17 00:00:00 2001 From: OG T Date: Thu, 9 Apr 2026 18:13:22 +0800 Subject: [PATCH] =?UTF-8?q?fix(proposal):=20action=20=E5=84=AA=E5=85=88?= =?UTF-8?q?=E7=94=A8=20kubectl=5Fcommand=EF=BC=8C=E4=BF=AE=E5=BE=A9?= =?UTF-8?q?=E6=89=B9=E5=87=86=E5=BE=8C=E6=B0=B8=E9=81=A0=20skip=20?= =?UTF-8?q?=E5=9F=B7=E8=A1=8C=E7=9A=84=E6=A0=B9=E6=9C=AC=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根本問題: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 --- apps/api/src/services/proposal_service.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/api/src/services/proposal_service.py b/apps/api/src/services/proposal_service.py index d6dbe34f..9a3e3120 100644 --- a/apps/api/src/services/proposal_service.py +++ b/apps/api/src/services/proposal_service.py @@ -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()