docs(awooop): record t35 incident evidence rollout
This commit is contained in:
@@ -1,3 +1,46 @@
|
||||
## 2026-05-17 | T35 Incident Evidence 成為 Run List 一等入口
|
||||
|
||||
**背景**:T34 已讓 Telegram 主卡可 deep-link 到 `/awooop/runs?project_id=awoooi&incident_id=...`,但 Run List 只靠 filter input 表示目前 Incident,表格列本身仍看不到關聯 Incident ID。Operator 看到兩筆 Run 時,還要從 URL / filter 才知道它們共同對應哪個告警,詳情/歷史回覆也沒有自己的 AwoooP evidence URL。
|
||||
|
||||
**修正**:
|
||||
- `/awooop/runs` Run List 新增 `Incident` 欄:
|
||||
- 從每列 `remediation_summary.incident_ids` 顯示有效 `INC-YYYYMMDD-XXXX`。
|
||||
- Incident ID 顯示為可點 chip,點擊後回到同一頁並套用 `project_id + incident_id` filter。
|
||||
- 支援多 Incident,前 2 筆直接顯示,其餘以 `+N` 摘要並保留 title。
|
||||
- Telegram 詳情 / 歷史 HTML reply 加上 `🧭 AwoooP` URL button:
|
||||
- 與主卡相同,指向 `/zh-TW/awooop/runs?project_id=awoooi&incident_id=<INC...>`。
|
||||
- 長訊息切成多段時,只在第一段掛 button,避免重複按鈕洗版。
|
||||
- 若 Telegram HTML parse 400 轉純文字 fallback,fallback 也保留 AwoooP button。
|
||||
- 技術債清理:把 URL button 和 callback button 明確分層測試,避免之後再因 `callback_data` 假設造成詳情/歷史異常。
|
||||
|
||||
**本地驗證**:
|
||||
- `python -m py_compile apps/api/src/services/telegram_gateway.py apps/api/tests/test_telegram_message_templates.py`:pass。
|
||||
- `ruff check --select F,E9 src/services/telegram_gateway.py tests/test_telegram_message_templates.py`:pass。
|
||||
- `DATABASE_URL=postgresql+asyncpg://ci:ci@localhost/ci pytest tests/test_telegram_message_templates.py tests/test_telegram_adr050.py tests/test_telegram_gateway_llm_buttons.py -q`:84 passed。
|
||||
- CD 等價 API test 範圍:`2049 passed, 23 skipped`。
|
||||
- i18n JSON parse:pass。
|
||||
- `pnpm --filter @awoooi/web typecheck`:pass。
|
||||
- `pnpm --dir apps/web exec next lint --file 'src/app/[locale]/awooop/runs/page.tsx'`:exit 0;仍有此 legacy page 原有 literal-string warnings,新加 Incident 文案走 i18n。
|
||||
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work pnpm --filter @awoooi/web build`:pass;仍只有既有 Sentry / webpack cache warnings。
|
||||
|
||||
**推版與 production 驗證**:
|
||||
- `76c302ab feat(awooop): expose incident evidence links` 已推 Gitea main。
|
||||
- Gitea Code Review run `2224` success;CD run `2223` tests / build-and-deploy / post-deploy-checks success。
|
||||
- 最新 deploy marker:`d4b2cf00 chore(cd): deploy 76c302a [skip ci]`。
|
||||
- `https://awoooi.wooo.work/api/v1/health`:200 healthy,PostgreSQL / Redis / Ollama / OpenClaw / SigNoz all up。
|
||||
- Production API `GET /api/v1/platform/runs/list?project_id=awoooi&incident_id=INC-20260514-F85F21&page=1&per_page=5`:`total=2`,兩列均包含 `incident_ids=["INC-20260514-F85F21"]`、`status=read_only_dry_run`、`latest_route=auto_repair_executor/ssh_diagnose/read`、write flags false。
|
||||
- Playwright production Run List check:`/zh-TW/awooop/runs?project_id=awoooi&incident_id=INC-20260514-F85F21` 顯示 2 個 `INC-20260514-F85F21` chips,filter input 正確帶入 Incident,API request 含 `incident_id=INC-20260514-F85F21`,畫面顯示 `共 2 筆`、`AI 已試跑:只讀` 與 `auto_repair_executor/ssh_diagnose/read`,screenshot `/tmp/awoooi-t35-runs-incident-chip.png`。
|
||||
- Playwright chip href check:第一個 Incident chip href 為 `/zh-TW/awooop/runs?project_id=awoooi&incident_id=INC-20260514-F85F21`。
|
||||
- 本輪未主動送 Telegram 測試告警,避免洗版;Telegram 詳情/歷史 reply markup 由單元測試覆蓋,production 以 API/UI deep-link 驗證。
|
||||
|
||||
**目前整體進度**:
|
||||
- Alertmanager 低風險自動修復主線:約 98%。
|
||||
- 完整 AI 自動化管理產品化:約 99%。
|
||||
- 告警詳情/歷史/主卡/前端 deep-link 可追溯:約 99%。
|
||||
- Telegram 首屏與追查訊息流程可判讀:約 96%。
|
||||
- 前端 AI 自動化管理介面同步:約 97%。
|
||||
- T35 讓 Incident 成為 Run List 上可見、可點、可回查的一等欄位。下一段應把「Run Detail / Approval Detail / Work Item」也補上同一個 Incident evidence header,並把浮動 Omni-Terminal 遮擋表格右下角的 UI debt 收掉。
|
||||
|
||||
## 2026-05-17 | T34 Telegram 深連結到 AwoooP Incident Evidence View
|
||||
|
||||
**背景**:T32/T33 已讓 Telegram 主卡顯示 AI 補救 evidence,AwoooP Run List 也能依 `remediation_status` 篩選。但 operator 從 Telegram 收到告警時,仍需要自己切到前端、輸入或猜測關聯 Incident,才能看到同一組 dry-run / MCP route / write flags 證據。這仍會造成「告警到底跑到哪個流程、要不要人工」的斷點。
|
||||
|
||||
Reference in New Issue
Block a user