feat(aiops): normalize multi-signal alert cards
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m37s
CD Pipeline / build-and-deploy (push) Successful in 5m11s
CD Pipeline / post-deploy-checks (push) Has been cancelled
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-18 18:47:54 +08:00
parent d06203cbae
commit 1123be1f8e
4 changed files with 448 additions and 1 deletions

View File

@@ -1,3 +1,46 @@
## 2026-06-18Telegram AIOps 多訊號事件包覆蓋
**背景**:統帥指出 110 CPU 滿載、orphan Chrome、CI build/test 負載這類問題不應靠人工臨場判讀AWOOOI / AwoooP / IwoooS 必須把監控、告警、PlayBook、KM、修復候選與 verifier 接成真正 AI 自動化產品。既有 host / runner CPU 告警已可轉成 `ai_automation_alert_card_v1`,本段把同一個最後出口規格擴展到 Wazuh、Kali、Nginx drift、Backup / Restore / Escrow、Provider freshness 與 Supply-chain drift。
**完成內容**
- `TelegramGateway.normalize_alert_notification_payload()` 新增非 host 類 AIOps signal formatter`send_alert_notification()``send_text()``_send_request("sendMessage", ...)` 最後出口都會套用,避免 raw signal 直接洗 Telegram。
- 新增事件類型與 AI lane 映射:
- `wazuh_intrusion_signal``security_intrusion_triage`
- `kali_assessment_signal``security_assessment_review`
- `nginx_config_drift``public_gateway_config_drift`
- `backup_restore_escrow_signal``backup_restore_escrow_triage`
- `provider_freshness_signal``source_provider_freshness_triage`
- `supply_chain_drift``supply_chain_drift_review`
- 所有新卡片都固定顯示 `candidate_only / runtime_write_gate=0`,並把下一步導向 owner evidence、reviewer acceptance、rendered diff / freshness / restore / SIEM readback、KM / PlayBook / Verifier 沉澱。
- 新增 Telegram 最後出口脫敏URL、內網 IP、絕對路徑、Bearer token、token / password / secret / api key 類 assignment 會從 Top evidence 移除或遮罩。
- `docs/awooop/TELEGRAM-INCIDENT-NOTIFICATION-MODEL.md` 已補多訊號 AI 事件包契約,明確禁止把 Telegram 送達、UI 可見、route 200 或 raw alert 當 runtime 授權。
**邊界**
- 這是 formatter / product contract / test 覆蓋,不是 live Wazuh block、Kali active scan、`nginx -t`、Nginx reload、backup / restore、remote delete、provider switch、package upgrade、workflow dispatch、Telegram 實發、host write 或 production write。
- 新事件包只建立候選、Gate、Verifier 與 Learning 語義runtime execution、action button、owner response received / accepted 仍全部維持 `0 / false`
**Telegram Gateway 橙區審查**
- 變更必要性CPU / CI / Wazuh / Nginx / backup / provider / supply-chain 類告警若只貼 raw log仍需要人工臨場判讀無法成為 AI 自動化產品入口。
- 影響範圍:只修改 Telegram 最後出口 formatter不改 Bot token、chat routing、callback handler、approval button、webhook、outbound mirror、send API 或 secrets。
- 替代方案:可只更新文件或只做前端 readback但 raw signal 仍會在送出時外洩路徑 / 內網 / token 片段,因此必須在最後出口加防護。
- 風險緩解host formatter 優先順序不變;非 host formatter 需要同時命中 source token 與 gate token降低一般通知被誤轉卡片的機率。
- 回滾計畫:回退 `feat(aiops): normalize multi-signal alert cards` 即可恢復既有 host-only formatter。
- 測試覆蓋:新增 Wazuh、Nginx、backup、provider freshness、supply-chain、Kali 與最後出口測試rebase 後 targeted suite `71 passed`
**驗證**
- `/Users/ogt/.pyenv/shims/python3.11 -m py_compile apps/api/src/services/telegram_gateway.py apps/api/tests/test_telegram_message_templates.py`:通過。
- `DATABASE_URL='postgresql+asyncpg://test:test@localhost/test' /Users/ogt/.pyenv/shims/python3.11 -m pytest apps/api/tests/test_telegram_message_templates.py -q``71 passed`
- `git diff --check`:通過。
- `python3 scripts/ops/doc-secrets-sanity-check.py docs .gitea``DOC_SECRET_SANITY_OK scanned_files=912`
- `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`
- `python3 scripts/security/public-frontend-env-guard.py --root .``violations=0 / runtime_gate=0`
**完成度同步**
- Telegram AIOps 多訊號事件包覆蓋:本地 `100%`,待正式部署驗證後更新 production readback。
- AI 自動化告警產品化host / runner 已落地;本段補 Wazuh / Kali / Nginx / backup / provider freshness / supply-chain 最後出口卡片,仍需接入 AwoooP Run / Work Item / KM / PlayBook live readback。
- IwoooS headline 仍維持 `64%`active runtime gate 仍 `0`
## 2026-06-18Telegram 主機資源 raw dump 最後出口補洞
**背景**:統帥貼出 `15:11:26` 的 Telegram raw CPU / root Node.js / Prisma JSON dump指出這類訊息既難讀又會把內部路徑、套件命令與外部檢查 endpoint 暴露到戰情室。前一段 formatter 已覆蓋 `send_alert_notification()``send_text()`,但應用內仍可能有人直接呼叫 `TelegramGateway._send_request("sendMessage", payload)`,因此需要把 `_send_request` 也升級成最後出口防線。

View File

@@ -69,6 +69,20 @@ Host / runner 資源告警的第一版落地:
- build 壓力會分流到 `runner_build_resource_pressure`Prisma / package install 壓力會分流到 `runner_prisma_generate_resource_pressure`;預設都是 `candidate_only / runtime_write_gate=0`
- 這只建立 AI 候選與判讀入口,不代表允許 kill process、restart 服務、改 Nginx、改 firewall 或執行 Kali active scan。
非 host 維運 / 資安訊號的第一版落地:
- `TelegramGateway.send_alert_notification()``send_text()` 現在也會把 Wazuh、Kali、Nginx drift、Backup / Restore / Escrow、Provider freshness、Supply-chain drift 類訊號轉成同一版 `ai_automation_alert_card_v1`
- 事件類型固定映射:
- `wazuh_intrusion_signal``security_intrusion_triage`
- `kali_assessment_signal``security_assessment_review`
- `nginx_config_drift``public_gateway_config_drift`
- `backup_restore_escrow_signal``backup_restore_escrow_triage`
- `provider_freshness_signal``source_provider_freshness_triage`
- `supply_chain_drift``supply_chain_drift_review`
- 所有上述卡片都必須顯示 `candidate_only / runtime_write_gate=0`,並把下一步導向 owner evidence、reviewer acceptance、rendered diff / freshness / restore / SIEM readback、KM / PlayBook / Verifier 沉澱。
- formatter 會在 Telegram 最後出口脫敏 URL、內網 IP、絕對路徑、Bearer token、token / password / secret / api key 類 assignmentTop evidence 最多保留三行摘要。
- 這只把 raw signal 變成 AI 自動化候選,不代表允許 Wazuh 封鎖、Kali active scan、`nginx -t` / reload、backup / restore / remote delete、provider switch、package upgrade、workflow dispatch 或 production write。
Host / runner 告警卡片必須採用下列第一屏版型:
```text