diff --git a/apps/web/messages/en.json b/apps/web/messages/en.json index 44302b2d..dc69a9f0 100644 --- a/apps/web/messages/en.json +++ b/apps/web/messages/en.json @@ -9715,6 +9715,15 @@ "source_correlation_review": "來源證據待配對", "no_repair_record": "無修復記錄" }, + "workItemStatuses": { + "owner_review_ready": "草案待 owner review", + "draft_ready": "草案已準備", + "open": "工作項待處理", + "blocked": "工作項阻塞", + "closed": "工作項已關閉", + "none": "無工作項", + "unknown": "工作項狀態未知" + }, "item": { "latest": "最新 {time}", "duplicates": "重複 {count}", diff --git a/apps/web/messages/zh-TW.json b/apps/web/messages/zh-TW.json index 44302b2d..dc69a9f0 100644 --- a/apps/web/messages/zh-TW.json +++ b/apps/web/messages/zh-TW.json @@ -9715,6 +9715,15 @@ "source_correlation_review": "來源證據待配對", "no_repair_record": "無修復記錄" }, + "workItemStatuses": { + "owner_review_ready": "草案待 owner review", + "draft_ready": "草案已準備", + "open": "工作項待處理", + "blocked": "工作項阻塞", + "closed": "工作項已關閉", + "none": "無工作項", + "unknown": "工作項狀態未知" + }, "item": { "latest": "最新 {time}", "duplicates": "重複 {count}", diff --git a/apps/web/src/app/[locale]/awooop/runs/page.tsx b/apps/web/src/app/[locale]/awooop/runs/page.tsx index a9abdea9..c8e955a3 100644 --- a/apps/web/src/app/[locale]/awooop/runs/page.tsx +++ b/apps/web/src/app/[locale]/awooop/runs/page.tsx @@ -2211,6 +2211,20 @@ function recurrenceRepairStatusLabelKey(status?: string | null) { return "repairStatuses.no_repair_record"; } +function recurrenceWorkItemStatusLabelKey(status?: string | null) { + if ( + status === "owner_review_ready" || + status === "draft_ready" || + status === "open" || + status === "blocked" || + status === "closed" || + status === "none" + ) { + return `workItemStatuses.${status}`; + } + return "workItemStatuses.unknown"; +} + function EventRecurrencePanel({ recurrence, error, @@ -2344,6 +2358,17 @@ function EventRecurrencePanel({ const workItem = item.work_item; const repairKey = recurrenceRepairStatusLabelKey(repair?.status); const repairLabel = t(repairKey as never); + const workItemStatusLabel = workItem + ? t(recurrenceWorkItemStatusLabelKey(workItem.status) as never) + : null; + const workItemTone = + workItem?.status === "owner_review_ready" || workItem?.status === "draft_ready" + ? "owner_review" + : workItem?.status === "blocked" + ? "blocked" + : workItem?.status === "open" + ? "open" + : "neutral"; const runHref = item.latest_run_id ? `/awooop/runs/${item.latest_run_id}?project_id=${encodeURIComponent(recurrence?.project_id ?? "awoooi")}` : null; @@ -2391,6 +2416,22 @@ function EventRecurrencePanel({ > {repairLabel} + {workItemStatusLabel ? ( + + {workItemStatusLabel} + + ) : null} {runHref ? ( 65%`。 +- AwoooP AI 自動化真相鏈:維持 `64%`,因本輪只是 readback UI。 +- 全站 UI/UX 專業化:`55% -> 56%`。 +- Runtime execution gate / production autonomous repair verified success:不變。 + +**邊界**:本輪只做 Runs read-only 狀態 chip;沒有發 Telegram、沒有套用 PlayBook、沒有執行 Ansible、沒有 SSH、沒有重啟服務、沒有讀 secret、沒有提高 runtime gate。 + ## 2026-06-25|Repair Candidate Draft Ready owner review 狀態模型 **背景**:Telegram `INC-20260625-977E5F` 類 `node-exporter-188` 告警已能預填 `host_service_route_after_owner_review`、`systemctl restart node-exporter-188`、rollback、verifier 與 AwoooP Work Item,但 webhook / Telegram 仍把它標成 `NO_ACTION - REPAIR_CANDIDATE_MISSING`,造成 operator 看到「AI 選擇不修、需人工」而非「AI 已產出 owner review 草案」。這會讓 AI 自動化產品看起來像只會把問題丟回人工。 diff --git a/docs/workplans/2026-06-25-awoooi-navigation-ia-consolidation.md b/docs/workplans/2026-06-25-awoooi-navigation-ia-consolidation.md index 048da2b2..f07c4e48 100644 --- a/docs/workplans/2026-06-25-awoooi-navigation-ia-consolidation.md +++ b/docs/workplans/2026-06-25-awoooi-navigation-ia-consolidation.md @@ -142,12 +142,22 @@ | Tests | `py_compile` 通過;targeted API tests `21 passed` | | 邊界 | 不執行主機命令、不發 Telegram、不套用 PlayBook、不跑 Ansible、不開 runtime gate;只是讓 owner review 草案成為可追蹤狀態 | +## 4.7 2026-06-25 Runs recurrence Work Item 草案狀態 chip + +| 項目 | 結果 | +|---|---| +| UI | `/zh-TW/awooop/runs` recurrence 卡片新增 Work Item status chip | +| 新狀態 | `owner_review_ready`、`draft_ready`、`open`、`blocked`、`closed`、`none`、`unknown` | +| 判讀 | `owner_review_ready` 顯示為「草案待 owner review」,不再和「無修復記錄」混淆 | +| 驗證 | JSON parse、i18n mirror、web typecheck、diff check 通過 | +| 邊界 | 只讀狀態顯示;不新增執行、重啟、Telegram send 或 PlayBook apply 入口 | + ## 5. 下一輪必做 | 優先級 | 工作 | 驗收 | |---|---|---| -| P0 | AwoooP Runs 共用 Situation Strip / Agent Flow / Action Rail | Overview、Work Items、Approvals 第一刀已完成;下一步讓 Runs 也能一眼看懂卡點、owner、補救試跑、verifier 與下一步 | -| P0 | Repair candidate draft readback 串接 | 後端已拆出 `draft_ready_for_owner_review`;下一步 Runs / Work Items / KB 必須顯示草案 ID、owner、rollback、verifier、KM / PlayBook / script / schedule 資產狀態 | +| P0 | AwoooP Runs 共用 Situation Strip / Agent Flow / Action Rail | Recurrence Work Item status chip 已完成;下一步補首屏 Situation Strip,讓 Runs 一眼看懂卡點、owner、補救試跑、verifier 與下一步 | +| P0 | Repair candidate draft readback 串接 | 後端已拆出 `draft_ready_for_owner_review`,Runs 已顯示 Work Item 草案狀態;下一步 Work Items / KB 顯示草案 ID、owner、rollback、verifier、KM / PlayBook / script / schedule 資產狀態 | | P0 | Tenants 舊表格 responsive 化 | route / source 已完成卡片化;下一步處理租戶資料表 drawer 與產品 topology drilldown | | P0 | Observability topology | 主機 / 服務 / 網站 / 告警 / SLO 關聯可視化 | | P0 | Knowledge / Automation trust ledger | KM、PlayBook、腳本、排程、dry-run、verifier 有統一沉澱面板 | diff --git a/docs/workplans/2026-06-25-awoooi-product-uiux-inventory.md b/docs/workplans/2026-06-25-awoooi-product-uiux-inventory.md index c06bada2..dae797ce 100644 --- a/docs/workplans/2026-06-25-awoooi-product-uiux-inventory.md +++ b/docs/workplans/2026-06-25-awoooi-product-uiux-inventory.md @@ -186,6 +186,20 @@ Tenants 目前已讀到: 完成度同步:Repair candidate missing 後端真相模型 `38% -> 48%`;Telegram 告警可判讀性 `58% -> 64%`;AwoooP AI 自動化真相鏈 `60% -> 64%`;production autonomous repair verified success 仍 `3-5%`。 +### 2.5.5 Runs recurrence Work Item 草案狀態 chip + +2026-06-25 已完成 `/zh-TW/awooop/runs` 小切片,讓 recurrence 卡片能讀出 work item 的 `owner_review_ready` / `draft_ready`,把「AI 已產出草案,等待 owner review」放到 Run 視角。 + +| 項目 | 完成 | +|---|---| +| UI | recurrence 卡片新增 Work Item status chip | +| 狀態 | `owner_review_ready`、`draft_ready`、`open`、`blocked`、`closed`、`none`、`unknown` | +| 判讀 | `owner_review_ready` 顯示「草案待 owner review」,不再只看到「無修復記錄」 | +| 驗證 | JSON parse、i18n mirror `RUNS_WORK_ITEM_STATUS_I18N_OK leaves=13652`、`pnpm --filter @awoooi/web typecheck`、`git diff --check` 通過 | +| 邊界 | 只讀顯示,不新增執行、重啟、Telegram send、PlayBook apply 或 runtime gate | + +完成度同步:AwoooP Runs 可判讀性 `62% -> 65%`;全站 UI/UX 專業化 `55% -> 56%`;AwoooP AI 自動化真相鏈仍 `64%`。 + ## 3. 頁面 UI/UX 現況盤點 2026-06-25 對正式站桌機 / mobile 抽查: @@ -193,7 +207,7 @@ Tenants 目前已讀到: | 頁面 | 現況 | 主要問題 | 優先級 | |---|---|---|---| | `/zh-TW/awooop` | Google Ads 式 shell 已存在,AwoooP 概覽與 AI 自動化真相帶可見 | 仍需把 Runs / Work Items / Approvals 的卡點與 owner SOP rail 串回同一首屏;後續要減少下方長文字卡 | P0 | -| `/zh-TW/awooop/runs` | Runs 狀態鏈與 provider evidence 可見 | mobile 有長字串、內部 provider URL / key 類資訊外露風險;使用者無法一眼分辨「AI 已做什麼、卡哪裡、下一步誰做」 | P0 | +| `/zh-TW/awooop/runs` | Runs 狀態鏈、provider evidence 與 recurrence Work Item 草案狀態 chip 可見 | mobile 有長字串、內部 provider URL / key 類資訊外露風險;仍需補 Situation Strip / Agent Flow / Action Rail 才能一眼分辨「AI 已做什麼、卡哪裡、下一步誰做」 | P0 | | `/zh-TW/awooop/work-items` | 工作項目、repair candidate 與 operator SOP rail 可見;已能一眼看到人工卡點、候選品質、沉澱資產與負責人接手 | 底部長表格仍需 responsive data grid / drawer 化;每筆 item 還要補更細的 owner、rollback、verifier receipt 與狀態回寫 | P0 | | `/zh-TW/awooop/approvals` | approval 狀態鏈、AI evidence 與審批決策 handoff rail 可見;已能一眼看到阻塞、證據、接手包與安全閘門;後端已能把 prefilled host-service 草案標成 owner-review-ready | 表格仍需 drawer 化;Runs / Work Items 仍要讀回 draft-ready 狀態、owner、rollback、verifier receipt 與資產 ID | P0 | | `/zh-TW/awooop/tenants` | 16 產品、31 路由、10 repo 資產可讀;作戰圖與 route/source 手機卡片已上線 | 下一步補產品拓樸 drilldown 與租戶資料表 drawer | P0 | @@ -379,7 +393,7 @@ AWOOOI 缺的是: | 項目 | 基準完成度 | |---|---:| -| 全站 UI/UX 專業化 | `55%` | +| 全站 UI/UX 專業化 | `56%` | | 導航 / IA 整合 | `64%` | | AwoooP 操作台產品化 | `65%` | | Tenants 全產品資產中心 | `68%` |