docs(logbook): 記錄 no-action 處置包部署 [skip ci]

This commit is contained in:
Your Name
2026-06-18 11:57:35 +08:00
parent 7342c738a8
commit ade596d2ce

View File

@@ -1,3 +1,38 @@
## 2026-06-18Telegram no-action 批准轉人工處置包與資產沉澱契約
**背景**:使用者指出 Telegram 告警批准後仍常顯示「AI 選擇不執行修復,需人工判斷」,而且沒有真正進入可操作的 AI 自動化閉環KM、PlayBook、腳本、排程與自動化機制也沒有在告警、頁面與工作項目形成可查證沉澱。程式碼盤點後確認舊契約會把 `NO_ACTION - REPAIR_CANDIDATE_MISSING` 類批准回成 `ApprovedWithoutExecution`,並刻意不排 executor導致 operator 體感是「批准後無事發生」。
**完成內容**
- `apps/api/src/api/v1/telegram.py` 新增 `ApprovedForManualHandoff` 回應契約:當批准的 action 是 `NO_ACTION` / `REPAIR_CANDIDATE_MISSING` 時,仍禁止排 executor但 API 回應必須帶出 `manual_handoff_required``manual_handoff_scheduled``manual_handoff_kind=repair_candidate_draft``next_action``work_item_id``work_item_href``repair_candidate_blocker``required_fields``required_writebacks``automation_asset_requirements`
- `apps/api/src/services/telegram_gateway.py` 的批准後卡片文案改為「已轉人工處置包;請按處置包或重診補修復候選,這不是執行中」,避免再把 no-action 類批准誤解成執行中或完成。
- Telegram 人工處置包新增資產沉澱要求KM、PlayBook、腳本 / Ansible、排程 / 監控規則、Verifier 結果;並要求 Runs、Work Items、Knowledge Base 顯示資產 ID、owner、狀態與下一步。
- `apps/api/src/services/repair_candidate_service.py``repair_candidate_draft_package_v1` 新增 `automation_asset_requirements``required_writebacks`,讓 AwoooP Work Item / API / Telegram 共用同一份沉澱契約,而不是只有文字提醒。
- 修復候選草案必填欄位從 PlayBook 基礎欄位擴充為:`script_or_ansible_ref``schedule_or_monitoring_rule_ref``km_update_plan``automation_asset_record`,並把 `automation_asset_record` / `dashboard_visibility_refs` 納入 coverage gap 模板欄位。
**本地驗證**
- `DATABASE_URL=postgresql+asyncpg://ci:ci@localhost/ci PYTHONFAULTHANDLER=1 /Users/ogt/.pyenv/shims/pytest tests/test_telegram_webhook_execution_handoff.py tests/test_telegram_message_templates.py tests/test_telegram_ai_automation_block.py tests/test_repair_candidate_service.py -q -p no:cacheprovider``71 passed`
- `python3 -m py_compile apps/api/src/api/v1/telegram.py apps/api/src/services/telegram_gateway.py apps/api/src/services/repair_candidate_service.py` 通過。
- `git diff --check` 通過。
- `python3 scripts/security/source-control-owner-response-guard.py --root .``SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`
- `python3 scripts/security/security-mirror-progress-guard.py --root .``SECURITY_MIRROR_PROGRESS_GUARD_OK`
- 舊死結字串掃描:`ApprovedWithoutExecution``此卡沒有可執行修復``等待補修復候選``apps/api/src` / `apps/api/tests` 命中 `0`
**正式部署與 readback**
- Code commit`c1c20656 fix(api): 將無修復批准轉入處置包`
- Deploy marker`3c6b9865 chore(cd): deploy c1c2065 [skip ci]`
- Gitea Actionscode-review `3108` 成功CD `3107` 已產生 deploy markerActions list 顯示 `c1c20656` 已進 success 清單。
- Production API`GET https://awoooi.wooo.work/api/v1/health``healthy / prod / mock_mode=false`PostgreSQL、Redis、Ollama GCP-A、OpenClaw、SigNoz 皆為 `up`
- Production Telegram health`GET https://awoooi.wooo.work/api/v1/telegram/health``status=configured``mode=long_polling``polling_active=true``bot_token_set=true``chat_id_set=true``sre_group_chat_id_set=true`、whitelist `10`
- Production AwoooP smoke`/zh-TW/awooop?_v=3c6b9865-ai-handoff-prod-desktop` 桌機 `1440x1000``/zh-TW/awooop?_v=3c6b9865-ai-handoff-prod-mobile` 手機 `390x844` 皆可見 `AwoooP``操作決策圖譜``告警 / 來源``證據鏈``學習回寫``來源到 Run`console error `0`、HTTP failed `0`、頁面水平溢位 `0`、敏感工作視窗片語命中 `0`
- 截圖:`/tmp/awoooi-awooop-ai-handoff-prod-desktop-3c6b9865.png``/tmp/awoooi-awooop-ai-handoff-prod-mobile-3c6b9865.png`
**仍待處理**
- 手機 AwoooP 深層舊區塊仍有少量長 span 元素局部 overflow頁面層沒有水平捲動但仍屬於 D2 文字牆 / 舊區塊元件化問題。
- 本輪沒有偽造正式 Telegram callback不亂打 production nonceno-action 批准契約以單元測試、部署 marker、Telegram health 與頁面 smoke 作為本段證據。
- 下一段必須把 Work Items / Knowledge Base / Runs 的資產沉澱顯示整併,讓 KM、PlayBook、腳本、排程、Verifier 的 asset record 在頁面上可查,否則仍會落入「做了但使用者看不到」。
**邊界**:本輪沒有把 `NO_ACTION` 偷改成直接執行命令,沒有打開 runtime gate沒有讀 secret沒有發送測試 Telegram沒有呼叫 Bot API 發正式訊息,沒有 SSH / kubectl / host write / active scan。此修正只把「無安全修復候選」從批准死結改成可追蹤處置包與資產沉澱契約真正自動修復仍必須經修復候選、owner review、approval gate、executor、verifier 與 KM / PlayBook writeback。
## 2026-06-18重啟 Plan B 機讀 baseline 與 readiness audit guard 補強
**背景**:前一段已把 Plan B 寫進 `FULL-STACK-COLD-START-SOP.md`,但如果只有 Markdown未來仍可能在重構或同步時漂移。這輪把 Plan B 升成機讀 baseline 與 readiness audit 必檢項,讓「有沒有 Plan B」可以被工具檢查。