fix(api): honor upstream docker repair success
Some checks failed
CD Pipeline / tests (push) Successful in 1m22s
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / build-and-deploy (push) Has started running
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-01 14:53:34 +08:00
parent 861894fd3a
commit 45dc7e52cf
3 changed files with 77 additions and 2 deletions

View File

@@ -46,12 +46,13 @@
- 新增安全 legacy SSH write 路由:只允許簡單 `docker restart <container>``{container}` placeholder且必須能解析出安全 container name。
- 將該路由轉進 AwoooP MCP Gateway `ssh_docker_restart/write`,注入 `trust_score=0.85`、MCP audit context、`auto_repair_executor` agent 與 deterministic run id。
- 對 write scope 先投影短效 Gate 5 key `approved:auto_repair_policy``requires_approval=true` 時仍 fail-closed不會繞過人工審批。
- 若 alert labels 已明確標示 `repair_action=restarted``repair_result=success`,視為上游 host monitor 已完成修復execute stage 記成功 no-op避免二次 Docker restart。
- 保留 read-only `ssh_diagnose` 原路徑;含 command substitution、pipe、fallback shell、systemd/prune 的複雜命令仍拒絕自動寫入。
- `apps/api/migrations/awooop_awoooi_mcp_auto_repair_executor_docker_restart_2026-06-01.sql`
- 將 `auto_repair_executor` agent contract 升到 v1.1。
- 僅新增 `ssh_docker_restart/write` grant邊界寫入 contract只允許安全 Docker container restart其他寫入工具仍不授權。
- `apps/api/tests/test_auto_repair_service.py`
- 補上 write MCP route、複雜 shell 封鎖與 Gate 5 approval projection 測試。
- 補上 write MCP route、上游已修復 no-op、複雜 shell 封鎖與 Gate 5 approval projection 測試。
**驗證**
@@ -60,7 +61,7 @@ PYTHONPATH=apps/api python -m py_compile apps/api/src/services/auto_repair_servi
DATABASE_URL=sqlite+aiosqlite:///:memory: PYTHONPATH=apps/api python -m pytest apps/api/tests/test_auto_repair_service.py -q
→ 26 passed
DATABASE_URL=sqlite+aiosqlite:///:memory: PYTHONPATH=apps/api python -m pytest apps/api/tests/test_auto_repair_service.py apps/api/tests/test_approval_execution_mcp_audit.py -q
29 passed
30 passed
production owner-fallback rollback check:
apps/api/migrations/awooop_awoooi_mcp_auto_repair_executor_docker_restart_2026-06-01.sql
→ migration rollback syntax ok with owner fallback