docs(logbook): record recent event source summary rollout [skip ci]
This commit is contained in:
@@ -1,3 +1,41 @@
|
||||
## 2026-06-04|AwoooP Recent Telegram Event Source Summary Rollout
|
||||
|
||||
**背景**:Phase 2 告警資料鏈路盤點時,production `/api/v1/platform/events/recent?project_id=awoooi&channel_type=telegram` 已能列出 Telegram inbound callback events,但 operator 只能靠 `content_preview` 猜 action / incident / approval,API 沒有結構化的 `content_type`、`run_id` 與 redacted source summary。這會讓告警詳情、Telegram callback、DB event 與 run timeline 之間缺一層可讀橋接。
|
||||
|
||||
**本輪完成**:
|
||||
- `apps/api/src/services/platform_operator_service.py`:新增 recent event source summary 投影,從 `source_envelope` 摘出 provider、stage、provider event id、source ref count、redaction version、Telegram callback action、callback ref、incident / approval reference、message id 與 log correlation 摘要。
|
||||
- `apps/api/src/api/v1/platform/events.py`:`ChannelEventItem` 新增 `run_id`、`content_type`、`source_summary`,讓 recent events API 能回傳結構化安全摘要。
|
||||
- `apps/api/tests/test_awooop_operator_timeline_labels.py`:新增 Telegram callback source summary 與 recent channel event item 測試,確認 raw callback data、user hash、callback hash 不會被投影到 API。
|
||||
|
||||
**完成度更新**:
|
||||
- Phase 2 告警資料鏈路:`18% → 24%`。
|
||||
- Recent Telegram inbound event source summary live issue:`100%`。
|
||||
- Runs visibility:`92% → 94%`。
|
||||
- 完整 AI 自動化飛輪:`73% → 74%`。
|
||||
- Phase 2 目標仍為 `90%`;Telegram DB 完整寫入、dedupe / recurrence、postmortem 重複通知、Config Drift 重複告警與完整 history / detail 行為仍待續。
|
||||
|
||||
**驗證**:
|
||||
- `python3 -m py_compile apps/api/src/services/platform_operator_service.py apps/api/src/api/v1/platform/events.py apps/api/tests/test_awooop_operator_timeline_labels.py`:通過。
|
||||
- `ruff check apps/api/src/services/platform_operator_service.py apps/api/src/api/v1/platform/events.py apps/api/tests/test_awooop_operator_timeline_labels.py`:通過。
|
||||
- `DATABASE_URL=<local test postgres URL> PYTHONPATH=apps/api pytest apps/api/tests/test_awooop_operator_timeline_labels.py -q`:`62 passed`。
|
||||
- `git diff --check`:通過。
|
||||
- `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`。
|
||||
- Gitea code-review run `2556`:success。
|
||||
- Gitea CD run `2555`:tests / build-and-deploy success。
|
||||
- Deploy marker:`df49e112 chore(cd): deploy 87fe932 [skip ci]`。
|
||||
- Production recent events API:`/api/v1/platform/events/recent?project_id=awoooi&channel_type=telegram&limit=3` 回三筆 `content_type=callback_query`,`source_summary.telegram_callback_query.action=approve`,並含 `approval_id` 或 `incident_id`、`source_ref_count`、`redaction_version=audit_sink_v1`。
|
||||
- Production callback replies API:`action=history` total `4`;`action=detail` total `0`。目前可驗證的是 history callback reply,不代表 detail callback reply 已有事件樣本。
|
||||
- Production callback detail link spot-check:四個 `run_detail_href` 皆回 200;其中 `/zh-TW/awooop/runs/28c37b21-3eec-5c22-a6c9-503e1680ed29?project_id=awoooi` 可見 Run ID、Incident `INC-20260530-AB2B0A`、狀態鏈、MCP / Telegram evidence,`horizontalOverflow=0`;截圖 `/tmp/awoooi-callback-run-detail-28c37b21-658f46dd.png`。
|
||||
- Production Browser desktop `/zh-TW/awooop/runs?project_id=awoooi&_v=df49e112-recent-event-summary-desktop`:AwoooP / Runs / 繁中狀態可見,`horizontalOverflow=0`、禁止 href `0`、英文 fallback 殘留 `0`、無 in-page load failure;截圖 `/tmp/awoooi-runs-recent-event-summary-desktop-df49e112.png`。
|
||||
- Production Browser mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=df49e112-recent-event-summary-mobile`:AwoooP / Runs / 繁中狀態可見,`horizontalOverflow=0`、禁止 href `0`、英文 fallback 殘留 `0`、無 in-page load failure;截圖 `/tmp/awoooi-runs-recent-event-summary-mobile-df49e112.png`。
|
||||
|
||||
**目前邊界**:
|
||||
- 本段只暴露 redacted source summary,不發 Telegram、不讀取 token、不收集 callback raw data、不修改 webhook secret、不新增 runtime action。
|
||||
- `action=approve` 的 recent inbound events 與 callback replies `action=history` 是不同資料面;本段讓 inbound recent events 可判讀,但不把它誤認成 detail/history callback reply 已完整閉環。
|
||||
- `run_id=null` 代表 inbound callback event 目前未必直接綁到 run;後續仍需補完整 alert ingest → run timeline correlation。
|
||||
- IwoooS headline 仍 `64%`;active runtime gate 仍 `0`;owner response received / accepted 仍 `0 / 0`。
|
||||
|
||||
## 2026-06-04|AwoooP Callback Reply Observed Filter Repair
|
||||
|
||||
**背景**:Phase 2 告警資料鏈路盤點時,production callback replies API 出現可驗真紅燈:`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed` 回 `total=0`,但同一 API summary 顯示 `callback_total=4`、`callback_sent_total=4`、`callback_failed_total=0`。這代表 `observed` 篩選器把已送達的 Telegram callback reply 排除掉,造成前端 / operator 查「已觀測」時看不到既有 history callback replies。
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
| --- | --- |
|
||||
| Repo/worktree | `/private/tmp/awoooi-iwooos-next-gate-20260604` |
|
||||
| 推版規則 | 只推 Gitea:`git push gitea HEAD:main`;GitHub 只讀備份 |
|
||||
| 最新 Gitea main | `658f46dd chore(cd): deploy ca0b3ae [skip ci]` |
|
||||
| 最新完成 code commit | `ca0b3aec fix(api): include delivered callback replies in observed filter` |
|
||||
| 最新 deployment marker | `658f46dd chore(cd): deploy ca0b3ae [skip ci]` |
|
||||
| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed` |
|
||||
| 最新 Gitea main | `df49e112 chore(cd): deploy 87fe932 [skip ci]` |
|
||||
| 最新完成 code commit | `87fe932b fix(api): expose recent event source summaries` |
|
||||
| 最新 deployment marker | `df49e112 chore(cd): deploy 87fe932 [skip ci]` |
|
||||
| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=df49e112-recent-event-summary-desktop` |
|
||||
| 首頁產品化入口 | 88% |
|
||||
| AI provider readability | 88% |
|
||||
| Runs visibility | 92% |
|
||||
| Runs visibility | 94% |
|
||||
| Work Items readability | 84% |
|
||||
| Design system | 64% |
|
||||
| 完整 AI 自動化飛輪 | 73% |
|
||||
| 完整 AI 自動化飛輪 | 74% |
|
||||
|
||||
## Session 啟動固定檢查
|
||||
|
||||
@@ -141,8 +141,8 @@ Live evidence:
|
||||
| 欄位 | 內容 |
|
||||
| --- | --- |
|
||||
| 優先級 | P0 |
|
||||
| 狀態 | 已修復兩個 live issue:`29a67ec7` 讓 Source Link Canary 先判 HTTP status、2xx 空 body 交給 source-correlation readback 驗證;`ca0b3aec` 讓 `callback_reply_status=observed` 不再隱藏已送達 Telegram callback replies。其餘 Telegram / DB / dedupe / history 紅燈待續。 |
|
||||
| 本階段完成度 | 18% |
|
||||
| 狀態 | 已修復三個 live issue:`29a67ec7` 讓 Source Link Canary 先判 HTTP status、2xx 空 body 交給 source-correlation readback 驗證;`ca0b3aec` 讓 `callback_reply_status=observed` 不再隱藏已送達 Telegram callback replies;`87fe932b` 讓 recent Telegram inbound event 回傳安全 source summary,前端 / API 可判讀 callback action、incident / approval reference 與 redaction metadata。其餘 Telegram / DB / dedupe / history 紅燈待續。 |
|
||||
| 本階段完成度 | 24% |
|
||||
| 目標完成度 | 告警資料鏈路可判讀性 → 90% |
|
||||
|
||||
細項:
|
||||
@@ -152,6 +152,7 @@ Live evidence:
|
||||
- [ ] 修「詳情 / 歷史」HTTP 400 或查不到事件。
|
||||
- [x] 修 `Source Link Canary`:Gitea CD post-deploy run `2547` 顯示 `sentry source-link canary failed: Expecting value: line 1 column 1 (char 0)`;`29a67ec7` 已修 smoke script status-first parsing 與 2xx empty response handoff,run `2549` 已成功。
|
||||
- [x] 修 Telegram callback replies `observed` 篩選:production API 原本 `callback_reply_status=observed` 回 `total=0`,但 summary `callback_total=4`;`ca0b3aec` 已讓 observed 代表「有 callback reply 證據」,不再排除 sent / fallback sent / rescue sent / failed。
|
||||
- [x] 補 Recent Telegram inbound event source summary:production `/api/v1/platform/events/recent` 現在回傳 `content_type`、`run_id` 與 redacted `source_summary`,可看到 callback `action`、`incident_id` / `approval_id`、`source_ref_count`、`redaction_version`,但不暴露 raw callback data、user hash 或 callback hash。
|
||||
- [ ] 修 postmortem 瞬間大量重複通知。
|
||||
- [ ] 修 Config Drift 重複告警,確認 PR 已建立後的採納 / 關閉 / baseline / TTL 狀態。
|
||||
|
||||
@@ -175,6 +176,13 @@ Live evidence:
|
||||
- Production callback API baseline:`/api/v1/platform/runs/callback-replies?project_id=awoooi&per_page=1&refresh=true` 回 `total=4`,與 `observed` filter 對齊。
|
||||
- Production Browser desktop `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed`:表格 50 列、`Run 監控` / `AwoooP` / `MCP` / `Ansible` / `KM` 可見,`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-desktop-658f46dd.png`。
|
||||
- Production Browser mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=658f46dd-callback-observed-mobile`:表格 50 列、可上下滾動、`horizontalOverflow=0`,無 in-page fetch failure;截圖 `/tmp/awoooi-runs-callback-observed-mobile-658f46dd.png`。
|
||||
- Local verification for `87fe932b`:`py_compile`、`ruff check`、`DATABASE_URL=<local test postgres URL> PYTHONPATH=apps/api pytest apps/api/tests/test_awooop_operator_timeline_labels.py -q`,結果 `62 passed`;`git diff --check`、`SOURCE_CONTROL_OWNER_RESPONSE_GUARD_OK`、`SECURITY_MIRROR_PROGRESS_GUARD_OK` 通過。
|
||||
- Gitea code-review run `2556`:success;Gitea CD run `2555`:tests / build-and-deploy success;deploy marker:`df49e112 chore(cd): deploy 87fe932 [skip ci]`。
|
||||
- Production recent events API:`/api/v1/platform/events/recent?project_id=awoooi&channel_type=telegram&limit=3` 回三筆 `content_type=callback_query`,`source_summary.telegram_callback_query.action=approve`,並含 `approval_id` 或 `incident_id`、`source_ref_count`、`redaction_version=audit_sink_v1`。
|
||||
- Production callback detail link spot-check:`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed&per_page=5&refresh=true` 的 4 個 `run_detail_href` 皆回 200;`action=history` total `4`,`action=detail` total `0`,代表目前可驗證的是 history callback reply,不是 detail callback reply。
|
||||
- Production Browser detail smoke:`/zh-TW/awooop/runs/28c37b21-3eec-5c22-a6c9-503e1680ed29?project_id=awoooi&_v=detail-link-check` 可見 Run ID、Incident `INC-20260530-AB2B0A`、狀態鏈、MCP / Telegram evidence,`horizontalOverflow=0`;截圖 `/tmp/awoooi-callback-run-detail-28c37b21-658f46dd.png`。
|
||||
- Production Browser desktop `/zh-TW/awooop/runs?project_id=awoooi&_v=df49e112-recent-event-summary-desktop`:AwoooP / Runs / 繁中狀態可見,`horizontalOverflow=0`、禁止 href `0`、英文 fallback 殘留 `0`、無 in-page load failure;截圖 `/tmp/awoooi-runs-recent-event-summary-desktop-df49e112.png`。
|
||||
- Production Browser mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=df49e112-recent-event-summary-mobile`:AwoooP / Runs / 繁中狀態可見,`horizontalOverflow=0`、禁止 href `0`、英文 fallback 殘留 `0`、無 in-page load failure;截圖 `/tmp/awoooi-runs-recent-event-summary-mobile-df49e112.png`。
|
||||
|
||||
## Phase 3 - P0 AI Provider / Agent 主責
|
||||
|
||||
@@ -299,3 +307,4 @@ Live evidence:
|
||||
| 2026-06-04 | Phase 5 | 64% | WOOO Open Design D1 已上線;AwoooP Runs / Approvals 控制項吃 `rounded-button`,正式站桌機 / 手機 `horizontalOverflow=0` |
|
||||
| 2026-06-04 | Phase 2 | 12% | `29a67ec7` 已修 Source Link Canary response parsing;`65bdfd1d` deploy 後 CD / post-deploy checks 通過 |
|
||||
| 2026-06-04 | Phase 2 | 18% | `ca0b3aec` 已修 callback reply `observed` filter;`658f46dd` deploy 後 production API `observed total=4` 對齊 summary `callback_total=4` |
|
||||
| 2026-06-04 | Phase 2 | 24% | `87fe932b` 已補 recent Telegram inbound event redacted source summary;`df49e112` deploy 後 production API 與 Runs desktop/mobile smoke 通過 |
|
||||
|
||||
Reference in New Issue
Block a user