fix(telegram): keep info callbacks nonfatal
All checks were successful
Code Review / ai-code-review (push) Successful in 19s
CD Pipeline / tests (push) Successful in 1m10s
CD Pipeline / build-and-deploy (push) Successful in 3m41s
CD Pipeline / post-deploy-checks (push) Successful in 1m21s

This commit is contained in:
Your Name
2026-05-18 09:47:40 +08:00
parent ae18751d17
commit 0dd4b486c5
3 changed files with 85 additions and 7 deletions

View File

@@ -1,3 +1,36 @@
## 2026-05-18 | T45 Telegram 詳情/歷史 callback 400 非致命化
**背景**Telegram 截圖顯示「詳情 / 歷史」按鈕仍可能回到 `HTTP error: 400` 或看起來像流程中斷。實查 callback 路徑後read-only actions (`detail` / `history` / `reanalyze` / `drift_view_page`) 會先呼叫 `answerCallbackQuery`,再送 DB-backed 詳情/歷史訊息。若 Telegram 對 callback toast 回 400常見於 callback 過期、舊訊息重點、client 狀態異常),原流程會被例外中斷,導致後面的 truth-chain reply 沒有送出。
**修正**
- `TelegramGateway.handle_callback()`
- read-only info actions 改用 `_answer_callback_nonfatal()`
- `UserNotWhitelistedError` / `NonceReplayError` / generic exception 的 callback toast 也改為 non-fatal避免錯誤處理本身再因 Telegram 400 放大。
- 新增 `_answer_callback_nonfatal()`
- `answerCallbackQuery` 失敗只記錄 `telegram_answer_callback_nonfatal_failed`
- 不阻斷真正重要的 DB truth-chain reply / history / detail message。
- `apps/api/tests/test_telegram_message_templates.py` 新增測試:
- 模擬 `answerCallbackQuery``HTTP error: 400`
- 驗證 `history:INC-...` 仍會送出 `_send_incident_history()`,並回 `success=True`
**local verification**
- `DATABASE_URL='sqlite+aiosqlite:///:memory:' /Users/ogt/awoooi/apps/api/.venv/bin/python -m pytest apps/api/tests/test_telegram_message_templates.py -q`37 passed。
- `/Users/ogt/awoooi/apps/api/.venv/bin/ruff check --select E9,F821,F401 apps/api/src/services/telegram_gateway.py apps/api/tests/test_telegram_message_templates.py`pass。
- 全檔 ruff 仍會命中 `telegram_gateway.py` 既有 import/order 與歷史 style debt本輪未順手大改以避免擴大風險。
- `git diff --check`pass。
**目前整體進度**
- Alertmanager 低風險自動修復主線:約 98%。
- 完整 AI 自動化管理產品化:約 99%。
- 告警詳情/歷史/主卡/前端 deep-link 可追溯:約 99%。
- Telegram approval / reject callback約 97%。
- Truth-chain 對「自動修復成功但驗證降級」的判讀:約 99%。
- AwoooP MCP 使用可見性:約 90%。
- 188 OpenClaw runtime hygiene約 90%。
- Token hygiene約 65%。
- CI/CD secret masking hygiene約 60%。
- Gitea infra-lint 可執行性100%。
## 2026-05-18 | T44 Gitea workflow secret env 泄漏面收斂
**背景**T43 production verification 時Gitea job log 顯示 step-level env 有 secret 展開風險。這會讓部署 SSH key、DB URL、Telegram token、AI provider key 等敏感值在 CI log 中留下痕跡,會直接破壞 token hygiene也會污染後續 AwoooP / SignOz / log matching 的可信度。