diff --git a/docs/LOGBOOK.md b/docs/LOGBOOK.md index bcfa24f6..026a5959 100644 --- a/docs/LOGBOOK.md +++ b/docs/LOGBOOK.md @@ -95,6 +95,33 @@ **邊界**:本段沒有啟動 auto worker、沒有低 / 中風險 live execution、沒有送 Telegram、沒有寫 Gateway queue、沒有呼叫 Bot API、沒有寫 receipt production target、沒有寫 production、沒有讀 secret、沒有呼叫 paid API、沒有 host write、沒有 kubectl action、沒有 destructive operation,也沒有替換 OpenClaw。 +## 2026-06-18|Reports 前移 AI Agent 報表與告警接管總控 + +**背景**:統帥指出 Telegram 週報全 0 沒有用途,日報 / 週報 / 月報不該只是發摘要,而要判斷資料鏈路是否可信、告警是否有效、AI 是否能接手、KM / PlayBook / 腳本 / 排程 / Verifier 是否沉澱。舊 `/zh-TW/reports` 只顯示處置統計,且仍打不存在或受保護的舊 stats endpoint,導致正式站 console 404 / 401,使用者無法快速判讀 AI 自動化是否真的掌控系統。 + +**完成內容**: +- `6d4fa7bf feat(web): 前移報表 AI 接管總控`:重整 `/zh-TW/reports` 首屏,新增 `報表 / 告警 AI 接管總控`。 +- 首屏新增四個核心狀態:`資料可信度`、`告警訊號`、`AI 接手率`、`live 派送`。 +- 新增 `資料源健康矩陣`,把事件統計 API、解決率 API、處置統計 API、AI 報表狀態板拆成可讀 / 缺口,避免把全 0 誤讀成健康。 +- 新增 `日報 / 週報 / 月報` cadence 卡,顯示 owner、章節、圖表、工作量、live delivery count 與下一關。 +- 新增 `告警到 AI 接手漏斗` 與 `自動化資產沉澱`,直接顯示處置紀錄 `638`、AI / 冷啟動接手 `194`、人工處置 `265`、待審核 `12`、報表契約 `3`、Agent 狀態 `3`、工作完成 `79/91`。 +- `5e849225 fix(web): 對齊報表統計 API 路徑`:先改用正式存在的 stats route。 +- `63a75f77 fix(web): 避免報表頁打受保護統計 API`:確認 incident summary / resolution stats 在 public Reports 頁會回 401,因此前端先停止打受保護 endpoint,改在矩陣中顯示 `事件統計 API 尚未接入 public read model`,避免 console 401 / 404 噪音。 + +**Production 驗證**: +- 最新 deploy marker:`cd1c4407 chore(cd): deploy b36f4b9 [skip ci]`,包含 `63a75f77` Reports 修正。 +- API readback:`/api/v1/health` 為 `healthy / prod / mock_mode=false`;`/api/v1/stats/disposition` 200,summary 顯示 `total=638`、`auto_repair=194`、`human_approved=21`、`manual_resolved=244`、`auto_rate=0.304`;`/api/v1/agents/agent-report-status-board` 200,`current=P2-108`、report cards `3`。 +- Desktop DOM:`https://awoooi.wooo.work/zh-TW/reports?_v=cd1c4407-reports-command-prod-desktop` 可見 `報表控制台`、`報表 / 告警 AI 接管總控`、`資料可信度`、`事件統計 API 尚未接入 public read model`、`資料源健康矩陣`、`日報 / 週報 / 月報`、`告警到 AI 接手漏斗`、`自動化資產沉澱`、`AI Agent 分工與工作量`;console error `0`、HTTP failed response `0`、`clientWidth=1440`、`scrollWidth=1440`、`horizontalOverflow=false`、overflowing elements `0`。 +- Mobile DOM:`https://awoooi.wooo.work/zh-TW/reports?_v=cd1c4407-reports-command-prod-mobile` 可見同一批必要文字;console error `0`、HTTP failed response `0`、`clientWidth=390`、`scrollWidth=390`、`horizontalOverflow=false`。粗略 overflowing 掃描命中左側固定 rail / offscreen shell 元素,主內容截圖未見水平跑版。 +- 截圖:`/tmp/awoooi-reports-command-prod-desktop-cd1c4407.png`、`/tmp/awoooi-reports-command-prod-mobile-cd1c4407.png`。 + +**完成度同步**: +- Reports AI Agent 報表與告警接管總控:本地 `100%`、正式站 desktop / mobile `100%`。 +- 日報 / 週報 / 月報產品化總控:`25% -> 45%`;已完成 Reports 首屏總控與資料源矩陣,但仍需補 public report source read model、no-send preview freshness、真正日報 / 週報 / 月報 preview API 合併、AI 修復候選與 SRE 戰情室 digest route。 +- IwoooS 整體仍維持 `64%`,active runtime gate 仍 `0`。 + +**下一步**:補 `report-source-health` / `report-no-send-preview` read model,把受保護的 incident / resolution 統計轉成 redacted public readback,並把全 0、資料缺口、AI 接手率與 KM / PlayBook / Verifier 沉澱同步到 Telegram 日報 / 週報 / 月報草案,不做 live send。 + ## 2026-06-18|AI Agent 週報全 0 改為資料缺口與下一步 **背景**:統帥指出 Telegram 週報顯示告警、AI 提案、執行、成本、部署全部為 `0`,這不是可用報表,而是資料鏈路可能斷掉卻被包裝成健康。本段先修最危險的誤導:週報資料源失效或 Git 活動讀取失敗時,不得再把 `0` 當成正常事實;Telegram 報表必須直接顯示資料缺口與下一步。 diff --git a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md index 017ef41e..f8df4203 100644 --- a/docs/workplans/2026-06-04-iwooos-security-governance-p0.md +++ b/docs/workplans/2026-06-04-iwooos-security-governance-p0.md @@ -62,7 +62,7 @@ | Knowledge Base KM 自動化掌控台 / 資產沉澱可視化 | 本地 `100%`;正式站 desktop / mobile `100%` | 是,僅限 KM governance readback、Owner Review queue、資產沉澱總帳與 Work Items 接續入口 | `/zh-TW/knowledge-base` 已把 `KM 自動化掌控台` 前移到首屏,直接顯示 stale ratio `98.8%`、stale KM `1,900`、Owner Review `10`、`ready 10 / blocked 0`、已寫回 `1`、治理流程圖與 `KM / PlayBook / 腳本 / 排程 / Verifier` 五類沉澱狀態;不寫 KM、不提升 PlayBook trust、不批次完成 owner review、不開 runtime gate | | Observability AI 自動化資產與訊號總帳 | 本地 `100%`;正式站 desktop / mobile `100%` | 是,僅限主機 / 專案 / 網站 / 服務 / 監控訊號 / KM / PlayBook / Verifier / SRE 路由 readback | `/zh-TW/observability` 已把 `AI 自動化資產與訊號總帳` 前移到首屏,6 張卡顯示全域資產、監控訊號、服務健康、KM / PlayBook / Verifier、SRE 戰情室、Runtime Gate;總帳區操作入口 `0`,不 live probe、不 reload、不改規則、不發 Telegram、不套用修復 | | Tenants 全域產品 / 網站 / 來源資產地圖 | 本地 `100%`;正式站 desktop / mobile `100%` | 是,僅限產品 / 專案、網站 / 服務入口、來源範圍、租戶資料與 gate readback | `/zh-TW/awooop/tenants` 已把 `全域資產地圖` 前移到首屏,直接顯示 `57` 個可視資產、`16 個產品 / 專案`、`31 個網站 / 服務入口`、`10 個來源範圍`、分類堆疊、route chips、主要來源就緒、已接受回覆、執行閘門與操作入口;不改租戶政策、不改路由、不部署、不掃描、不建立 repo、不開 runtime gate | -| 日報 / 週報 / 月報與 AI Agent 報表資料鏈路 | Weekly report 資料缺口止血本地 `100%`、正式部署 `100%`;報表產品化總控 `25%` | 是,僅限資料源 truthfulness、全 0 判讀與下一步工作項 | `ac325852` / deploy marker `a4b30964` 已修正週報 Git 活動讀取失敗時假性輸出 `0` 的問題;Telegram 週報新增 `資料缺口 / 下一步`,全 0 會明確標示不是健康並列出 `report-source-gap:*`;仍未完成日報 / 週報 / 月報 no-send preview、資料 freshness dashboard、AI 修復候選與 KM / PlayBook / Verifier 沉澱總控,不發 live Telegram、不改排程、不開 runtime gate | +| 日報 / 週報 / 月報與 AI Agent 報表資料鏈路 | Weekly report 資料缺口止血本地 `100%`、正式部署 `100%`;Reports 總控正式站 `100%`;報表產品化總控 `45%` | 是,僅限資料源 truthfulness、全 0 判讀、Reports 首屏總控與下一步工作項 | `ac325852` / deploy marker `a4b30964` 已修正週報 Git 活動讀取失敗時假性輸出 `0`;`6d4fa7bf` / `5e849225` / `63a75f77` 已把 `/zh-TW/reports` 改成 `報表 / 告警 AI 接管總控`、資料源健康矩陣、日週月報 cadence、AI 接手漏斗與自動化資產沉澱;最新 deploy marker `cd1c4407` 正式驗證 console error `0`、HTTP failed response `0`、horizontal overflow `0`;仍未完成 public report source read model、日報 / 週報 / 月報 no-send preview 合併、資料 freshness dashboard 與 SRE 戰情室 digest route,不發 live Telegram、不改排程、不開 runtime gate | | Telegram 監控告警 / 批准執行真相鏈 | outbound 主鏈路 `100%`;批准後執行止血 `100%`;no-action 人工處置包 D0 `100%`;MCP / PlayBook 修復候選 D5 `88%`;Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱矩陣 `100% / desktop 100% / 100% / 100% / 100% / 100% / formatter+deploy 100%`;治理長期項 `98%` | 是,僅限候選產生、阻擋原因、人工草案包、AwoooP 工作項可追蹤性、Work Items 詳細接手板、Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡資產沉澱欄與 coverage gap metadata | 已修復 Alertmanager tenant context、既有 approval 收斂告警 recurrence、AI 分析中重複告警 recurrence、no-action approval 誤導執行、可執行修復 execution / KM / verifier 紀錄、no-action 人工處置包、MCP evidence / PlayBook trust 候選產生、通用兜底 / 診斷型 PlayBook 阻擋理由、缺候選時的 PlayBook 草案欄位 / 下一步 / AwoooP work item 入口與詳細處置板、blocked result 的服務 coverage gap / blocking stage / required MCP evidence refs,以及 Approvals / Runs / Alerts / Knowledge Base / Observability / Tenants / Telegram 告警卡的 `KM / PlayBook / 腳本 / 排程 / Verifier` 資產沉澱矩陣;完整自動修復飛輪仍需用真實告警驗證 approval -> execution -> verifier -> KM / PlayBook trust 全鏈,不調高 runtime gate | ## 2. P0 工作拆解與優先順序 @@ -86,7 +86,7 @@ | P0-7 | Telegram 批准後執行真相鏈止血 | 100% | no-action approval 不再顯示批准 / 執行中;可執行修復 approval 會寫入 `auto_repair_executions`、KM 與 verifier;下一步補 MCP evidence / PlayBook trust 產生真正修復候選 | 目標 pytest `125 passed`、py_compile、guard、production health、API / worker rollout、production pod classifier readback | | P0-8 | Telegram no-action 人工處置包與操作入口 | 100% | no-action 卡片已新增人工處置包、證據補齊清單、AwoooP 修復候選建立步驟、verifier / KM / PlayBook 回寫提醒,並改成 `處置包`、`重診`、`歷史`、`靜默`、`真相鏈`、`Runs` 鍵盤;舊訊息不 retroactive 改寫 | 目標 pytest `64 passed + 44 passed`、py_compile、guard、production health、API / worker rollout、production pod render / keyboard smoke | | P0-9 | MCP evidence -> PlayBook 修復候選產生 | D5 `88%`;Approvals ledger `100%`;Runs ledger desktop `100%`;Alerts ledger desktop / mobile `100%` | 已補 webhook fallback 先建立 incident,再收 MCP evidence、查 approved PlayBook、檢查 trust / command safety、產生 medium approval candidate 與 verifier plan;D1 追加通用兜底 PlayBook / 診斷型命令不可誤當修復、阻擋理由繁中化;D2 在缺候選時產生 `repair_candidate_draft_package_v1`、`playbook_draft_required`、下一步與必填欄位;D3 新增 `awooop_repair_candidate_draft_work_item_v1` read-only projection 與 Telegram `工作項目` deeplink;D4 讓 AwoooP Work Items 詳細呈現 PlayBook 草案處置板、必填欄位、阻擋原因、下一步、Runs / 審批連結;D5 新增 `repair_candidate_coverage_gap_v1`,讓 blocked result 帶出 coverage key、target kind、blocking stage、必收 MCP evidence refs、PlayBook template fields 與 runtime 0 / false 邊界;Approvals / Runs / Alerts 已新增 `資產沉澱` 欄或焦點矩陣,可直接看到 KM / PlayBook / 腳本 / 排程 / Verifier 的完成與卡點;下一步要補 Runs mobile smoke,並把同一總帳接到正式 Telegram 告警卡、Observability 與 Tenants,用真實告警驗證 approval -> execution -> verifier -> KM / PlayBook 回寫 | Approvals code `dafe5342` 已隨 deploy marker `42c08ece` 正式站 desktop / mobile smoke;Runs code `11c2b5d4` 已隨 deploy marker `8b6ab87c` 正式站 desktop DOM smoke;Alerts code `10cd6167` 已隨 deploy marker `d36d764a` 正式站 desktop / mobile DOM smoke;P2-407 API production readback `overall_completion_percent=100`;status-chain 後續仍必須看到 tool call、PlayBook id、risk gate、repair candidate、verifier plan | -| P0-9a | 日報 / 週報 / 月報資料鏈路 truthfulness | 25% | Weekly report 已修正 Git 活動讀取失敗時假性全 0 的問題,並在 Telegram 報表顯示資料源狀態與 `report-source-gap:*` 下一步;下一步建立 report status board / no-send preview,把日報、週報、月報與告警 digest 串到同一套資料 freshness、AI 接手率、KM / PlayBook / Verifier 沉澱與 SRE 戰情室收斂視圖 | Feature commit `ac325852`、deploy marker `a4b30964`、production health `healthy / prod / mock_mode=false`;py_compile、diff check、owner response guard、progress guard 通過;未 live send Telegram、未改排程、未開 runtime gate | +| P0-9a | 日報 / 週報 / 月報資料鏈路 truthfulness | 45% | Weekly report 已修正 Git 活動讀取失敗時假性全 0 的問題;Reports 頁已前移資料可信度、資料源健康矩陣、日週月報 cadence、告警到 AI 接手漏斗、自動化資產沉澱與 Agent 工作量;下一步建立 `report-source-health` / `report-no-send-preview` read model,把受保護 incident / resolution 統計轉成 redacted public readback,並把日報、週報、月報與告警 digest 串到資料 freshness、AI 接手率、KM / PlayBook / Verifier 沉澱與 SRE 戰情室收斂視圖 | Feature commit `ac325852`、Reports commits `6d4fa7bf` / `5e849225` / `63a75f77`、deploy markers `a4b30964` / `4d4c6da3` / `cd1c4407`;production `/zh-TW/reports` desktop / mobile 必要文字可見、console error `0`、HTTP failed response `0`、horizontal overflow `0`;未 live send Telegram、未改排程、未開 runtime gate | | P0-10 | 高價值配置 Gate path coverage、工作樹 preflight、owner packet / coverage snapshot 補強 | 100% | 已將 `k8s/nginx/**`、`scripts/ops/**/*cert*`、`scripts/ops/**/*tls*` 納入 `high-value-config-change-gate.py`,讓 Nginx public gateway 與 DNS / TLS / certbot 既有路徑命中 P0 / C0;預設模式可讀取 staged / unstaged / untracked,避免本地 preflight 漏掉未提交配置;owner packet 與 coverage snapshot 已同步最新 pattern;owner evidence 仍未提供,runtime execution 仍 false | Gate sample:`changed_files=6 matched=6 categories=3 c0=2 c1=0`;工作樹 smoke:臨時 `k8s/nginx/*` 檔命中 C0;owner packet:`packets=3 c0=2 runtime_gate=0`;coverage:`categories=14 c0=8 avg=67 runtime_gate=0`;`py_compile`、snapshot JSON parse、progress guard、owner response guard、doc secret sanity、diff check | | P0-11 | 高價值配置 Owner Packet 前台同步 | local 100%;production 100% | `/zh-TW/iwooos` 與 `/zh-TW/awooop` 已同步 latest owner packet snapshot,顯示 `packet=3 / c0=2`、Nginx public gateway、DNS / TLS / certbot 與 security tooling 影響範圍;request sent、received、accepted、runtime gate 與 action buttons 仍全部為 `0` | Feature commit `e999c16b`、deploy marker `16c6b983`、Gitea code-review `2973` / CD `2972` success;本地與正式 desktop / mobile / in-app browser smoke:IwoooS 與 AwoooP 均 HTTP `200`、必要文字與 boundary keys 可見、水平溢位 `0`、卡片內操作控制 `0`、危險連結 `0`、工作溝通片語命中 `0`;headline 不提高 | | P0-12 | IwoooS posture projection Owner Packet count sync | 100% | `iwooos-posture-projection.snapshot.json` 與 schema 已從舊 `packet=1 / c0=0` 同步為 `packet=3 / c0=2`,避免 committed projection 與前台 / owner packet snapshot 分叉;request / received / accepted / runtime gate 仍為 `0` | `security-mirror-progress-guard.py` expectation 已同步;後續驗證以 JSON parse、schema parse、progress guard、owner response guard、doc secret sanity、diff check 為準;不需要 production browser smoke |