docs: record telegram callback truth-chain rollout

This commit is contained in:
Your Name
2026-06-01 02:20:25 +08:00
parent 14a31974af
commit 0e30171858

View File

@@ -25863,3 +25863,97 @@ production browser smoke:
- Sentry / SigNoz source correlation約 99.0%e2e-health 已通過,仍需逐筆 Incident source-link drill-down。
- KM governance約 82.5%stale KM 仍需 Hermes 產草稿、owner 審核後寫入。
- 完整 AI 自動化管理產品化:約 99.55%;產品視覺與 runtime truth 更準,但「全自動修復」仍是 evidence deficit不是 UI deficit。
## 2026-06-01 | Telegram callback click truth-chain 入庫與前端判讀
**背景**Telegram「詳情 / 歷史 / 審批」按鈕回覆已能在 outbound mirror 看到,但 production DB 沒有 inbound callback click 本身operator 看得到 Bot 回覆,卻看不出「使用者按了什麼、什麼時候入庫、是否進入 AwoooP 狀態鏈」。這會讓 Telegram 告警仍像孤立訊息,無法成為完整 AI 自動化流程證據。
**Live truth 復核**
- `awooop_conversation_event` 已保存 outbound Telegram mirror `12517` 筆,但 `telegram_callback_total=0``telegram_text_total=0`,代表舊版沒有把 inbound Telegram callback query 入庫。
- `GET /api/v1/platform/runs/callback-replies?project_id=awoooi&per_page=3` 在變更前後皆可看到 legacy outbound reply evidence
- `total=4`
- `callback_total=4`
- `callback_sent_total=4`
- `callback_history_total=4`
- `callback_detail_total=0`
- `callback_snapshot_captured_total=2`
- `callback_snapshot_missing_total=2`
- `snapshot_status=partial`
- `missing_trace_recent_24h=0`
- `trace_recovery=recovered_after_gap`
- 新版部署後 summary 明確標出 inbound click truth-chain 狀態:
- `inbound_callback_total=0`
- `inbound_callback_recent_24h_total=0`
- `inbound_callback_mirror_status=reply_only_gap`
- `inbound_callback_next_action=press_any_telegram_callback_after_rollout`
- 判讀:舊 callback 只有回覆證據click 當下未入庫;下一次按 Telegram 詳情 / 歷史 / 審批按鈕後,應開始產生 inbound callback query event。
**完成變更**
- `apps/api/src/services/telegram_gateway.py`
- 新增 Telegram callback query inbound mirror只保存 safe audit summary、hash、message id、action/ref/incident/approval不保存 raw callback data / nonce。
- Long polling callback path 在處理 callback 前先寫入 `awooop_conversation_event`
- `apps/api/src/api/v1/telegram.py`
- Deprecated webhook path 也補 callback query mirror避免舊入口漏證據。
- `apps/api/src/api/v1/telegram_webhook.py`
- ADR-094 webhook path 補 inbound callback query mirror不改既有 callback 處理語義。
- `apps/api/src/services/platform_operator_service.py`
- callback replies summary 增加 inbound callback CTE、status 與 next action。
- 能分辨 `capturing``reply_only_gap``no_callback_observed`
- `apps/api/src/api/v1/platform/operator_runs.py`
- callback replies API schema 增加 inbound callback audit 欄位。
- `apps/web/src/app/[locale]/awooop/runs/page.tsx`
- TG Callback Evidence 增加「Operator 判讀」與「入站 click」卡片讓 operator 直接看到舊資料缺口、新版驗證動作與下一步。
- 同步修正首頁 `dashboard.ansibleRuntimeReady` translation key leak。
- `apps/web/messages/zh-TW.json``apps/web/messages/en.json`
- 補齊 callback inbound mirror 判讀文案與首頁 Ansible runtime ready 文案。
**驗證與部署**
- Local validation
- `python3 -m py_compile apps/api/src/services/telegram_gateway.py apps/api/src/api/v1/telegram.py apps/api/src/api/v1/telegram_webhook.py apps/api/src/services/platform_operator_service.py apps/api/src/api/v1/platform/operator_runs.py`
- `python3 -m json.tool apps/web/messages/zh-TW.json`
- `python3 -m json.tool apps/web/messages/en.json`
- `git diff --check`
- `DATABASE_URL=postgresql://test:test@localhost:5432/test PYTHONPATH=apps/api pytest apps/api/tests/test_telegram_webhook_execution_handoff.py apps/api/tests/test_awooop_operator_timeline_labels.py -q`
- 結果:`62 passed in 1.17s`
- `pnpm --dir apps/web exec tsc --noEmit --tsBuildInfoFile /tmp/awoooi-runs-callback-truth-chain-20260601.tsbuildinfo`
- `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 pnpm --dir apps/web run build`
- Commit`6061b5cd feat(telegram): mirror callback click truth chain`,已推 `gitea main`
- Gitea
- `cd #3457` success`tests``build-and-deploy``post-deploy-checks` 全部 success。
- `tests #4798``2318 passed, 23 skipped`B5 integration `5 passed`
- `post-deploy-checks #4800`monitoring health 9/9 UP、Alert Chain Metric passed、Alertmanager / SigNoz / Sentry webhook HTTP 200、source-link canary applied、monitoring coverage 100%、Playwright smoke `5 passed`
- `code-review #3458` success。
- CD deploy auto commit`68c8bb9 chore(cd): deploy 6061b5c [skip ci]`
- Production image / rollout
- `awoooi-api=192.168.0.110:5000/awoooi/api:6061b5cd5466c52c9c611a7b21f959d3eabf897a`
- `awoooi-worker=192.168.0.110:5000/awoooi/api:6061b5cd5466c52c9c611a7b21f959d3eabf897a`
- `awoooi-web=192.168.0.110:5000/awoooi/web:6061b5cd5466c52c9c611a7b21f959d3eabf897a`
- `kubectl rollout status deployment/awoooi-api deployment/awoooi-worker deployment/awoooi-web` 全部成功。
- Production API
- callback replies summary 回 `HTTP=200`,包含 `inbound_callback_mirror_status=reply_only_gap``trace_recovery=recovered_after_gap`
- truth-chain quality summary 回 `HTTP=200``can_run_check_mode=true``binary_present=true``blockers=[]`
- Production browser
- `https://awoooi.wooo.work/zh-TW?_v=6061b5cd`
- `dashboard.ansibleRuntimeReady` 已無 key leak。
- `hasCheckMode=true`
- `canScroll=true`
- `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=6061b5cd#tg-callback-evidence`
- `Operator 判讀` 顯示。
- `入站點擊鏡像:只有回覆證據,舊點擊未入庫` 顯示。
- legacy callback reply evidence 正常載入,無 translation key leak。
- `https://awoooi.wooo.work/zh-TW/alerts?project_id=awoooi&incident_id=INC-20260530-0DD83C&_v=6061b5cd`
- 告警頁可載入、可滾動、無 translation key leak頁面中的 `error` 是告警類型文字,不是 HTTP 失敗。
**新揭露技術債**
- `truth-chain/quality/summary` 與 callback replies 這類稽核 summary 偏重production 觀察到約 `12s``65s` 才回應;前端初始幾秒可能先顯示空狀態,之後才補上證據。下一步應建立 precomputed / cached summary避免 operator 誤判「沒有資料」。
- 舊 callback 點擊無法 retroactively 還原 inbound click event只能保留 outbound reply / snapshot / trace recovery 證據;新版部署後要用下一次真實 Telegram 按鈕 click 驗證 inbound callback mirror 開始累積。
**目前整體進度(本階段完成後)**
- Telegram inbound / outbound / callback truth-chain約 96%outbound reply、legacy snapshot、trace recovery、新版 inbound click mirror 都已接上。剩餘是下一次真實按鈕 click 後觀察 `inbound_callback_total` 是否成長,以及將 summary 查詢快取化。
- AwoooP Runs / Alerts / 首頁前端同步:約 99.97%首頁、Runs、Alerts 已能呈現 runtime、callback、卷宗與 source correlation 判讀。
- MCP / 自建 MCP 可視化與 adapter約 98.8%;已修 `wooo` alias 與 `filter_name`,仍需看新事件 failed count 是否下降。
- Ansible / PlayBook check-mode runtime約 95%runtime gate 已可跑 check-mode但 auto-apply / verified repair 覆蓋仍低。
- 完整自動修復 production claim約 3%30 筆 evaluated 只有少數 verified auto repair仍不可對外宣稱「全自動修復已完成」。
- Sentry / SigNoz source correlation約 99.0%e2e-health 通過,還要把每筆 Incident 的 source-link drill-down 快取化、產品化。
- KM governance約 82.5%Hermes 產草稿、owner 審核後寫入的閉環仍是主缺口。
- 完整 AI 自動化管理產品化:約 99.6%可視化與證據鏈已很接近完整產品但真正「AI 自動修復閉環」仍要用 24h production evidence 與更高 verified repair coverage 收斂。