diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index ae67cf7ae..b5d4a0df7 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -4529,3 +4529,86 @@ docker-health-monitor.sh / pg-backup.sh scp 同步出現 unknown option -- n; ``` 判讀:Gateway 內部直送收斂已進正式 image。下一個工作項目應切到「同一 firing alert fingerprint 聚合」與 AwoooP Timeline UI,不再把完整執行細節堆到 Telegram。 + +### 01:10 Telegram 告警卡片格式收斂 + +**背景**: + +- Telegram 群組內仍出現兩類難以判讀的純文字訊息: + - `Auto Runbook 待審核` 直接傾倒 Markdown preview,會把 `## 症狀描述`、長 SSH command 與失敗細節塞進訊息。 + - `AI 治理警報` 直接列 raw key/value,`trust_drift`、`knowledge_degradation`、`governance_slo_data_gap` 在群組內不易掃描,也不容易分辨影響、修復方向與可自動化工作。 + +**改動**: + +- `runbook_generator.py` 新增 `format_runbook_review_card()`: + - 將 Runbook 待審核訊息改為 HTML 卡片。 + - 顯示 Incident、受影響服務、DRAFT 狀態、Entry ID、內容摘要與審核重點。 + - 偵測 `{host}`、`{target}`、`Unsupported scheme`、`Invalid component name` 等 placeholder / 不支援執行步驟,改以人工修正提示呈現,避免 Telegram 直接被長 command 洗版。 +- `failover_alerter.py` 新增 `format_governance_alert_card()`: + - 將 AI 治理警報改為 MarkdownV2 卡片。 + - 對 `trust_drift`、`knowledge_degradation`、`governance_slo_data_gap` 等事件提供中文顯示名稱與固定影響摘要欄位。 + - 保留原本 governance payload 與 dedup 行為,只在 Telegram 邊界層整理成「影響摘要 / 修復方向 / 可自動化工作 / 補充欄位」。 + - 備援欄位最多顯示 4 筆,避免 raw payload 洗版。 +- 補測: + - Governance card:知識庫劣化事件會顯示陳舊 KM、總 KM、比例、門檻、下一步,不再出現舊式欄位快覽。 + - Runbook card:不直接輸出 `##` Markdown heading,也不直接輸出 `ssh{host}` placeholder command。 + +**驗證**: + +```text +py_compile: +apps/api/src/services/runbook_generator.py +apps/api/src/services/failover_alerter.py +apps/api/tests/test_failover_alerter.py +apps/api/tests/test_phase25_auto_harvesting.py +# passed + +pytest: +apps/api/tests/test_failover_alerter.py +apps/api/tests/test_phase25_auto_harvesting.py +apps/api/tests/test_governance_agent.py +apps/api/tests/test_p2_db_fixes.py +# 63 passed + +ruff import check: +apps/api/src/services/runbook_generator.py +apps/api/tests/test_failover_alerter.py +# All checks passed +``` + +**生產部署**: + +```text +Commit: +341c3b65 fix(telegram): format governance and runbook alerts + +Gitea workflows: +1837 CD Pipeline: +- tests -> success +- build-and-deploy -> success +- post-deploy-checks -> success +1838 Code Review -> success + +CD deploy marker: +68e741e0 chore(cd): deploy 341c3b6 [skip ci] + +awoooi-api image: +192.168.0.110:5000/awoooi/api:341c3b6523a9ba6f9dfbdd5321de5d1a5a353743 + +awoooi-web image: +192.168.0.110:5000/awoooi/web:341c3b6523a9ba6f9dfbdd5321de5d1a5a353743 + +K8s rollout: +awoooi-api -> successfully rolled out +awoooi-web -> successfully rolled out +awoooi-api pods -> 2/2 Running, 0 restarts + +HTTP: +/api/v1/health -> 200 +/zh-TW -> 200 +/zh-TW/awooop -> 200 +/zh-TW/awooop/runs -> 200 +/zh-TW/awooop/approvals -> 200 +``` + +判讀:這次只改 Telegram 顯示邊界,未改 AI provider、費用策略、routing 或 MCP 執行路徑。下一步應延續「訊息治理」方向,把同一 incident / firing fingerprint 的多則執行結果聚合成單一 thread / timeline,並讓 Telegram 只保留摘要與人工決策入口。