From b9bd5e3ba87ca2e55e37ced0be89fee8a4b23bb9 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 4 Jun 2026 21:36:53 +0800 Subject: [PATCH] docs(logbook): record recent event source summary rollout [skip ci] --- docs/LOGBOOK.md | 38 +++++++++++++++++++ ...-04-navigation-and-ai-flywheel-workplan.md | 25 ++++++++---- 2 files changed, 55 insertions(+), 8 deletions(-) diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index 308909f4..a3956fbb 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -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= 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。 diff --git a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md index 85a42277..274ab3ab 100644 --- a/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md +++ b/docs/workplans/2026-06-04-navigation-and-ai-flywheel-workplan.md @@ -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= 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 通過 |