fix(telegram): close remaining DM alert routes
Some checks failed
CD Pipeline / tests (push) Successful in 1m27s
Code Review / ai-code-review (push) Successful in 29s
CD Pipeline / post-deploy-checks (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled

This commit is contained in:
Your Name
2026-04-30 23:02:17 +08:00
parent 64b09273f7
commit 95110971f3
16 changed files with 86 additions and 67 deletions

View File

@@ -15,6 +15,7 @@
- `send_approval_card()` 改為單次送 SRE 群組,不再先送 DM 再背景補群組;同時把 `tg_approval:*``tg_msg:*``approval_records.telegram_chat_id` 記到實際群組訊息。
- Drift / Meta / SecOps / Business / Escalation 卡片、執行結果、rollback 提案、auto-repair fallback、AI provider failover、成本警告、容量預測、Hermes 規則品質、合規、Coverage、Gitea/Code Review 通知全部改為群組優先。
- Gitea CD / Code Review / deploy-alerts / E2E health / dev CD workflow 的 Telegram sendMessage 也改用 SRE 群組 ID避免 workflow 通知仍打到個人 DM。
- Ops 旁路補齊docker health monitor、PG backup、DR drill、backup-from-110、migration workflow 的 Telegram fallback 改為 `SRE_GROUP_CHAT_ID` / `TELEGRAM_ALERT_CHAT_ID` 優先。
- 更新 ADR-093、Alert Chain E2E runbook、Human-in-the-loop 文件,避免後續驗收仍檢查 @tsenyangbot 個人 DM。
### 驗證

View File

@@ -59,28 +59,22 @@ ADR-0712026-04-11設計了 TYPE-1/2/3/4/4D 五種通知類型,並實作
| 類型 | 適用場景 | 按鈕 | 發送目標 |
|-----|---------|------|---------|
| TYPE-1 | 純資訊、備份成功、心跳 | 無 | SRE 群組 |
| TYPE-2 | AI 自動修復完成 | 無(結果通知)| 個人 DM + 群組唯讀 |
| TYPE-3 | 需人工審核(預設)| 依 category 動態 ≤4 個 | 個人 DM 只 |
| TYPE-4 | AI 無法判斷 | [手動記錄][查面板][忽略] | 個人 DM 只 |
| TYPE-4D | Config Drift | [查Diff][採納][回滾][忽略] | 個人 DM 只 |
| TYPE-5S | 資安防禦(未來)| [隔離][封鎖IP][驅逐Pod][確認授權] | 個人 DM 只 |
| TYPE-2 | AI 自動修復完成 | 無(結果通知)| SRE 群組 |
| TYPE-3 | 需人工審核(預設)| 依 category 動態 ≤4 個 | SRE 群組 |
| TYPE-4 | AI 無法判斷 | [手動記錄][查面板][忽略] | SRE 群組 |
| TYPE-4D | Config Drift | [查Diff][採納][回滾][忽略] | SRE 群組 |
| TYPE-5S | 資安防禦(未來)| [隔離][封鎖IP][驅逐Pod][確認授權] | SRE 群組 |
| TYPE-6B | 業務/FinOps未來| [暫停][查SignOz][忽略] | SRE 群組 |
| TYPE-7E | 重大事故升級(未來)| [建立戰情室][Postmortem][DR手冊][確認接手] | 個人 DM + 群組 |
| TYPE-8M | 飛輪/告警鏈路健康 | [觸發診斷][查看面板][靜默] | 個人 DM 只 |
| TYPE-7E | 重大事故升級(未來)| [建立戰情室][Postmortem][DR手冊][確認接手] | SRE 群組 |
| TYPE-8M | 飛輪/告警鏈路健康 | [觸發診斷][查看面板][靜默] | SRE 群組 |
### D4雙頻道路由規則
```
含 Callback Button → 只發個人 DM@tsenyangbot
TYPE-3 / TYPE-4 / TYPE-4D / TYPE-5S / TYPE-7E / TYPE-8M
2026-04-30 起,正式告警收件通道統一為 AwoooI SRE 戰情室群組
SRE_GROUP_CHAT_ID=-1003711974679
純資訊展示 → 只發 SRE 群組(-1003711974679
TYPE-1 / TYPE-6B
執行結果 → 兩個都發(群組版唯讀無按鈕)
TYPE-2
TYPE-7E 升級 → 兩個都發,群組版加 @mention
OPENCLAW_TG_CHAT_ID 僅作 SRE_GROUP_CHAT_ID 缺失時的 fail-soft fallback。
```
### D5Telegram 卡片格式防腐規則

View File

@@ -86,7 +86,7 @@ AI = Level 3P3 自動P0/1/2 部分自動)
### 3.1 Telegram 審核卡操作
當系統發送 TYPE-3 審核卡到統帥個人 DM
當系統發送 TYPE-3 審核卡到 AwoooI SRE戰情室群組
```
╔══════════════════════════════════════╗
@@ -114,10 +114,10 @@ AI = Level 3P3 自動P0/1/2 部分自動)
```
審核卡發出後:
0 分鐘: 審核卡發送到個人 DM
15 分鐘: 提醒訊息(同一個 DM:
0 分鐘: 審核卡發送到 SRE 戰情室群組
15 分鐘: 提醒訊息(同一個群組:
"⚠️ 此審核已等待 15 分鐘,請盡快處理"
30 分鐘: 升級告警發送到 SRE 群組:
30 分鐘: 升級告警發送到 SRE 戰情室群組:
"🔴 審核逾時Incident #XXX 已等待 30 分鐘未處理
若不處理,系統將在 5 分鐘後自動標記為 ESCALATED"
35 分鐘: Incident 狀態 → ESCALATED
@@ -161,7 +161,7 @@ Kill Switch = 立即凍結 AWOOOI 所有自動操作的緊急機制。
**方法 1Telegram 指令**(推薦,最快)
```
個人 DM 輸入:
SRE 戰情室群組或授權對話輸入:
/kill_switch enable
系統回應:

View File

@@ -134,7 +134,7 @@ jobs:
🔍 請立即調查 UI 回歸問題"
env:
TG_BOT_TOKEN: ${{ secrets.OPENCLAW_TG_BOT_TOKEN }}
TG_CHAT_ID: ${{ secrets.OPENCLAW_TG_CHAT_ID }}
TG_CHAT_ID: ${{ env.TELEGRAM_ALERT_CHAT_ID }}
# 視覺截圖比對工作(獨立 job只在排程時執行
visual-regression:
@@ -186,7 +186,7 @@ jobs:
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
env:
TG_BOT_TOKEN: ${{ secrets.OPENCLAW_TG_BOT_TOKEN }}
TG_CHAT_ID: ${{ secrets.OPENCLAW_TG_CHAT_ID }}
TG_CHAT_ID: ${{ env.TELEGRAM_ALERT_CHAT_ID }}
```
---

View File

@@ -22,7 +22,7 @@ CD Pipeline 每次部署自動注入到 K8s禁止手動 patch。
| `HARBOR_USERNAME` | Harbor Registry 推送 | Harbor UI → 帳號設定 | 字串 | 長期 |
| `HARBOR_PASSWORD` | Harbor Registry 推送 | Harbor UI → 帳號設定 | 字串 | 長期 |
| `TELEGRAM_BOT_TOKEN` | CD 部署通知 | @BotFather → /mybots | `{id}:AAH...` | 長期 |
| `TELEGRAM_CHAT_ID` | CD 通知接收人 | Telegram 個人 ID | 數字 | 長期 |
| `TELEGRAM_CHAT_ID` | CD 注入 `OPENCLAW_TG_CHAT_ID` 的 fail-soft fallback | Telegram chat ID | 數字 | 長期 |
| `NVIDIA_API_KEY` | Nemotron LLM 仲裁 | https://build.nvidia.com → API Keys | `nvapi-...` | **可能過期** |
| `GEMINI_API_KEY` | Gemini 備援 LLM | https://aistudio.google.com/apikey | `AIzaSy...` | **可能過期** |
@@ -31,7 +31,8 @@ CD Pipeline 每次部署自動注入到 K8s禁止手動 patch。
| Secret Key | 用途 | 狀態 | 來源 |
|-----------|------|------|------|
| `OPENCLAW_TG_BOT_TOKEN` | API 告警發送 | ✅ | Gitea: `TELEGRAM_BOT_TOKEN` |
| `OPENCLAW_TG_CHAT_ID` | API 告警接收 | ✅ | Gitea: `TELEGRAM_CHAT_ID` |
| `OPENCLAW_TG_CHAT_ID` | API 告警 fallback 接收 | ✅ | Gitea: `TELEGRAM_CHAT_ID` |
| `SRE_GROUP_CHAT_ID` | API 正式告警接收 | ✅ | ConfigMap: `-1003711974679` |
| `NVIDIA_API_KEY` | Nemotron LLM | ✅ | Gitea: `NVIDIA_API_KEY` |
| `GEMINI_API_KEY` | Gemini 備援 | ✅ | Gitea: `GEMINI_API_KEY` |
| `DATABASE_URL` | PostgreSQL 連線 | ✅ | 手動設定 (永久) |

View File

@@ -199,7 +199,7 @@ Error Budget = 1 - SLO 目標值
### SLO 違規告警規則
```yaml
# 以下情況 → TYPE-8M「飛輪健康告警」→ 發統帥個人 DM
# 以下情況 → TYPE-8M「飛輪健康告警」→ 發 AwoooI SRE 戰情室群組
SLO-1 連續 2 小時 < 50%:
告警: "⚠️ 自動修復成功率跌破 50%,飛輪瀕死"