feat(api): ActionType.SSH_COMMAND + auto_repair_service SSH分支 (Task 12)

- playbook.py: 新增 SSH_COMMAND ActionType
- auto_repair_service._execute_step: SSH_COMMAND 分支,格式 layer/component

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-04-05 11:47:00 +08:00
parent e7d8da85f6
commit bf4f81412c
2 changed files with 15 additions and 0 deletions

View File

@@ -47,6 +47,7 @@ class ActionType(str, Enum):
KUBECTL = "kubectl" # Kubernetes 命令
SCRIPT = "script" # 腳本執行
MANUAL = "manual" # 需人工操作
SSH_COMMAND = "ssh_command" # 2026-04-05 Claude Code: 主機層 SSH 修復 (Sprint 3)
class RiskLevel(str, Enum):

View File

@@ -497,6 +497,20 @@ class AutoRepairService:
logger.warning("action_executor_not_available")
return "SKIPPED (executor not available)"
# 2026-04-05 Claude Code: SSH_COMMAND — 主機層修復 (Sprint 3 Host Auto-Repair)
if step.action_type == ActionType.SSH_COMMAND:
from src.services.host_repair_agent import HostRepairAgent
agent = HostRepairAgent()
# step.command 格式: "<layer>/<component>" 例如 "docker-110/sentry"
try:
layer, component = step.command.split("/", 1)
except ValueError:
return f"FAILED: invalid ssh_command format '{step.command}' (expected layer/component)"
result = await agent.repair(layer=layer, component=component)
if result.success:
return f"SUCCESS: {result.output}"
return f"FAILED: {result.error}"
return "UNKNOWN_ACTION_TYPE"
# === ADR-037: Tier-based Repair (2026-03-29) ===