# 2026-06-04 導航 IA 與 AI 自動化飛輪推進清單

> 本文件是本輪工作推進 handoff 與執行清單。AI 自動化飛輪的架構事實仍以 `docs/superpowers/specs/2026-04-15-MASTER-ai-autonomous-flywheel-v2.md` 為唯一事實來源；本文件只負責排序、拆工、驗收與狀態追蹤。

## 目前基線

| 項目 | 狀態 |
| --- | --- |
| Repo/worktree | `/private/tmp/awoooi-iwooos-next-gate-20260604` |
| 推版規則 | 只推 Gitea：`git push gitea HEAD:main`；GitHub 只讀備份 |
| 最新 Gitea main | `f1eec188 chore(cd): deploy a5324ef [skip ci]` |
| 最新完成 code commit | `a5324ef7 feat(web): replace header logo with AwoooI pills mark` |
| 最新 deployment marker | `f1eec188 chore(cd): deploy a5324ef [skip ci]` |
| 正式站驗證 | `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=f1eec188-logo-pills-prod-desktop` |
| 首頁產品化入口 | 88% |
| AI provider readability | 88% |
| Runs visibility | 95% |
| Work Items readability | 84% |
| Design system | 67% |
| 完整 AI 自動化飛輪 | 74% |

## Session 啟動固定檢查

- [x] `git fetch gitea main`
- [x] `git status --short`
- [x] `git log --oneline -8`
- [x] 讀 MASTER §0 / §1 / §8、`docs/HARD_RULES.md`、`docs/LOGBOOK.md`
- [x] `project_current_status.md` 超過 2 天，需先做狀態同步

## 導航 IA 原則

| 原則 | 本輪落地 |
| --- | --- |
| 主入口按工作流排序，不按技術模組排序 | 先放指令中心、AwoooP、工作鏈路、Runs、審批、告警 |
| 左側導覽承載跨頁任務入口 | 把高頻 AwoooP 子頁與告警入口提到全域側欄 |
| 頁內 tabs 只表示同一頁的視角 | Observability / Automation / Operations 的 tabs 後續逐步拆成可掃描子入口 |
| Header 保留全域動作 | Search / command palette / profile / notification 維持在 header 或快捷指令 |
| Mobile 不藏真任務 | 側欄保持可滾動，長標籤需可換行或收合顯示 |

參考來源：
- Material Design navigation drawer：5 個以上 top-level destinations 與兩層以上導航階層，適合用 drawer。
- Atlassian navigation redesign：用 sidebar 提升跨專案工作效率，top bar 留給 search / create 等 universal actions。
- IBM Carbon UI shell：header 是最高層導航，left panel 承載產品導航，右側留給全域 utilities。
- Google Ads 管理後台：左側主功能 rail + 二層 page menu + 上方 search / scope selector / status strip / page tabs / toolbar，把「去哪裡、看哪個範圍、目前狀態、同頁視角」拆開。

## 推進規則

1. 每個 phase 完成後更新本文件的完成度與狀態。
2. 每個可部署 phase 都更新 `docs/LOGBOOK.md`。
3. 前端變更必跑 i18n JSON parse、TypeScript、build 與 Browser desktop/mobile smoke。
4. 涉及正式站聲明必用 production API / browser / Gitea run 證據，不引用舊報告。
5. 每個 phase 完成後推 `gitea main`，除非該 phase 明確標記為純本地盤點且不可部署。

## 階段驗證矩陣

| Phase | 必做驗證 | 必看頁面 / 端點 | 完成門檻 |
| --- | --- | --- | --- |
| Phase 0 導航 IA | i18n JSON、TypeScript、build、Browser desktop/mobile、production smoke | `/zh-TW/awooop`、`/zh-TW/awooop/work-items`、`/zh-TW/awooop/runs`、`/zh-TW/awooop/approvals` | 本地與正式站都顯示新導航，`horizontalOverflow=0` |
| Phase 1 AI 自動化飛輪真相 | DB / API / Browser 三方交叉查同一 incident / run | `/zh-TW/awooop`、`/zh-TW/awooop/runs`、`/zh-TW/awooop/work-items`、相關 platform operator API | 同一事件能看見 stage timeline、AI action、MCP evidence、approval gate、repair / verifier 狀態 |
| Phase 2 告警資料鏈路 | DB alert records、API 詳情 / 歷史、Browser Alerts / Runs、dedupe 統計 | `/zh-TW/awooop`、`/zh-TW/awooop/runs`、告警詳情 / 歷史連結 | Telegram 告警都有 DB 對應事件；詳情 / 歷史不 400；fingerprint recurrence 可查 |
| Phase 3 AI Provider / Agent 主責 | API route status、run detail evidence、Browser AI route 區塊 | `/zh-TW/governance`、`/zh-TW/awooop/runs`、`/api/v1/platform/ai-route-status` | provider、model、fallback reason、latency、token、result 在 API 與前端一致 |
| Phase 4 KM 劣化治理 | KB healthcheck run、DB stale ratio、Browser Work Items / Knowledge Base | `/zh-TW/knowledge`、`/zh-TW/awooop/work-items` | stale KM 有 owner、來源、引用次數、下一步；高影響更新需 owner review |
| Phase 5 前端產品化 | i18n JSON、TypeScript、build、desktop/mobile Browser smoke | 首頁、`/zh-TW/awooop/runs`、`/zh-TW/awooop/work-items`、`/zh-TW/operations`、`/zh-TW/deployments` | 真資料可讀；無硬編文案、無 emoji icon、mobile 可上下滾且 `horizontalOverflow=0` |
| Phase 6 Ansible / PlayBook / Auto Repair | API / DB repair record、PlayBook trust score、verifier evidence | `/zh-TW/awooop/runs`、`/zh-TW/awooop/approvals` | 每次 repair 都有 PlayBook 版本、MCP evidence、執行結果、verifier、KM / timeline 回寫 |
| Phase 7 既有紅燈驗證 | production DB / host / workflow 只讀驗證 | RLS policy、`.gitea/workflows/*`、host health evidence | 不引用舊報告；每個紅燈都有 live evidence、風險判讀與下一步 |
| Phase 8 技術債 / 清理 | `rg` 掃舊文案 / 假資料 / 硬編 IP、前端 build、Browser smoke | 被清理的對應頁面 | 清掉的項目不再出現在正式站；無新空狀態或破版 |

## Phase 0 - 導航 IA 第一波

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P0 |
| 目標 | 先修目前最直觀的 UX 阻塞：全域導航排序混亂、AwoooP 頁內入口難掃描、部分 UI 文字硬編。 |
| 狀態 | 已推 Gitea main，正式站 Browser smoke 通過 |
| 完成度 | 100% |

細項：
- [x] 以「處理佇列 / 真相與治理 / 營運 / 系統」重排 Sidebar。
- [x] 將 `AwoooP 總覽`、`工作鏈路`、`Run 監控`、`審批佇列`、`告警` 提升為全域可見入口。
- [x] AwoooP shell 改為 i18n，移除硬編文案。
- [x] AwoooP 二級導航改為工作流順序：總覽 → 工作鏈路 → Run 監控 → 審批佇列 → 合約 → 租戶。
- [x] 保留 `classic` 相容入口，但移入系統區。
- [x] 驗證 desktop / mobile 無水平溢出，導航可見。

驗收：
- [x] `node -e "JSON.parse(...zh-TW.json); JSON.parse(...en.json)"`
- [x] `pnpm --filter @awoooi/web typecheck`
- [x] `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 pnpm --filter @awoooi/web build`
- [x] Browser desktop 1440px：Sidebar 顯示新順序，AwoooP secondary nav 顯示新順序。
- [x] Browser mobile 390px：`horizontalOverflow=0`。
- [x] 推 `gitea main`：`973fc7a4 feat(web): refine operator navigation IA`。
- [x] Production Browser smoke：`/zh-TW/awooop?_v=2555c811-phase1-precheck` 顯示新 Sidebar、新 AwoooP 二級導航與 `horizontalOverflow=0`。

## Phase 1 - P0 AI 自動化飛輪真相盤點

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P0 |
| 狀態 | 已推 Gitea main：Runs 列表已顯示 status-chain / run evidence fallback、MCP、Ansible、KM 與人工 gate 狀態；正式站 desktop/mobile smoke 通過。CD post-deploy checks 因 Source Link Canary 失敗而紅燈，需納入 Phase 2 告警鏈路修復。 |
| 本階段完成度 | 56% |
| 目標完成度 | 完整 AI 自動化飛輪 69% → 75% |

細項：
- [x] 查 `auto_execute_success_rate` SLO 違反原因，對照最近自動修復任務。
- [x] 盤點流程是否真跑完：alert ingest → classify → rule match → MCP evidence → PlayBook → approval gate → Ansible/repair → verifier → KM → postmortem。
- [x] 補新建 approval gate raw timeline event：同一 transaction 寫入 `stage`、`next_action`、`blocked_reason`、`auto_or_manual`、`needs_human`、risk 與 signature 狀態。
- [x] Runs 列表 Source Flow 補 operator status chain / fallback：同一 incident 可見 `需人工`、`等待人工審批`、blocked reason、MCP 成功/失敗、Ansible candidates / apply / reason、KM entries。
- [ ] 補既有 pending approval 歷史 backfill / production smoke，確認正式站同一 incident 不再出現 `timeline_missing_for_approval`。
- [ ] 補 executor / verifier / KM 狀態變更事件：每個 incident 必須看到 stage、handler、AI action、manual need。
- [ ] Telegram 告警補 stage、next action、blocked reason、auto/manual。
- [ ] 建立風險分級與 approval gate 對照表，釐清中低風險是否允許 AI 自動修復。
- [ ] 確認 MCP / 自建 MCP 實際 tool call、evidence、result 有被前端顯示；目前 Runs 表格可見 MCP summary、blocked reason、Ansible / KM 摘要，但 tool call result drilldown 還未完整產品化。

Live evidence：
- Production `/api/v1/ai/slo?force_refresh=true`：`auto_execute_success_rate=90.2%`、`human_override_rate=0.5%`、`verifier_false_neg_rate=0.0%`，目前 `any_violated=false`。
- ADR-100 24h verification coverage：`skipped_low_volume`，原因 `no_auto_repair_executions_24h`；代表 SLO 回綠，但最近 24h 沒有可評估的 auto repair execution。
- Production runs：`/api/v1/platform/runs/list?project_id=awoooi&per_page=10` 回 `total=22700`；`mcp_observed` filter 回 `total=4391`；`read_only_dry_run` filter 回 `total=7`。
- `INC-20260603-9B2535` timeline：alert / investigator / approval 可見，但 `timeline_events=0`、`timeline_missing_for_approval`、executor / verifier / KM skipped，代表 pending approval 的 lifecycle 留痕不足。
- `INC-20260601-1B3388` timeline：有完整 webhook → investigator → ai_router → llm → target → blast → safe → executor → verifier → close；狀態為 execution failed / manual required，MCP gateway 36 筆，verifier degraded，KM 未回寫。
- Production `/api/v1/platform/status-chain` 合併 `INC-20260603-9B2535` + `INC-20260601-1B3388`：`current_stage=execution_failed`、`needs_human=true`、`next_step=manual_fix_or_rollback`、Ansible 候選 3 筆但未使用。
- Production `/api/v1/platform/ai-route-status?workload_type=deep_rca`：policy order 為 `ollama_gcp_a → ollama_gcp_b → ollama_local → gemini`，目前 selected provider `ollama_gcp_a`，Gemini 仍是 final fallback。
- Browser smoke：`/zh-TW/awooop/runs?project_id=awoooi` 表格載入 50 列，含 `INC-20260603-9B2535` 與 MCP 摘要，`horizontalOverflow=0`；Automation Flow Gate 顯示 28 件、8 個 blocked gate、verified auto repair 0。
- Browser smoke：`/zh-TW/awooop/work-items` 與 `/zh-TW/awooop/approvals` 可開且 `horizontalOverflow=0`，但未直接浮出 `INC-20260603-9B2535` / `INC-20260601-1B3388` 的可操作下一步。
- Local code verification：`ApprovalDBService.create_approval()`、`create_approval_with_fingerprint()`、`IncidentApprovalService.create_with_approval()` 會在建立 approval 後追加 raw `timeline_events`，描述包含 `stage`、`next_action`、`blocked_reason`、`auto_or_manual`、`needs_human`。
- Local tests：`test_approval_timeline_event.py` 覆蓋 pending manual gate 與 low-risk auto gate；`test_awooop_truth_chain_service.py` 覆蓋有 raw timeline event 時不再標記 `timeline_missing_for_approval`。
- Gitea main：`1ae8f809 fix(api): record approval gate timeline events` 已推送。
- Post-push production health：`/api/v1/health` 回 `status=healthy`、`environment=prod`、PostgreSQL / Redis / Ollama / OpenClaw / SigNoz 均 `up`。
- Post-push production Runs smoke：`/zh-TW/awooop/runs?project_id=awoooi` 表格 50 列，`INC-20260603-9B2535`、MCP、approval / 審批文案可見，`horizontalOverflow=0`。
- Production deploy marker：`c046b9c8 chore(cd): deploy 8a32633 [skip ci]` 已出現在 Gitea main；code commit `8a326338` 含 `8ad8bf48 fix(web): keep run status readable without chain batch`。
- Gitea code-review run `2548`：success；Gitea CD run `2547`：`build-and-deploy` success，但 `post-deploy-checks` failure，失敗檢查為 `Source Link Canary`；API Health、Alertmanager / SigNoz / Sentry webhook、SigNoz、OTEL Collector、Event Exporter 皆通過。
- Production Runs desktop smoke：`/zh-TW/awooop/runs?project_id=awoooi&_v=c046b9c8-runs-status-fallback` 載入 `INC-20260603-9B2535`，無 fetch failure，`horizontalOverflow=0`；同列顯示 `需人工`、`等待人工審批，尚未執行`、`blocked=all_evidence_sensors_failed`、`MCP 4/4; failed=0; blocked=0`、`Ansible candidates=2; apply=0`、`KM entries=0`。
- Production Runs mobile smoke 390x844：`horizontalOverflow=0`、可上下滾動、無 fetch failure，同列可見 MCP / Ansible / KM 狀態；截圖：`/tmp/awoooi-runs-status-chain-mobile-c046b9c8.png`。
- Production screenshot：`/tmp/awoooi-runs-status-chain-desktop-c046b9c8.png`、`/tmp/awoooi-runs-status-chain-table-desktop-c046b9c8.png`。

驗收：
- [ ] DB / API / browser 都能查到同一 incident 的 stage timeline；本地程式與單元測試已過，production health / Runs smoke 未破，raw `timeline_events` 需等新 approval 或 backfill 後驗證。
- [ ] Telegram 訊息可不開前端判斷目前流程狀態。
- [ ] 低風險自動修復權限與人工 gate 條件有可驗證表格。

## Phase 2 - P0 告警資料鏈路

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P0 |
| 狀態 | 已修復三個 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% |

細項：
- [ ] 所有 Telegram 告警完整寫入 DB，不只送訊息。
- [ ] 告警關聯 Sentry、SigNoz、Alertmanager、K8s、host logs、run timeline。
- [ ] 建立告警 dedupe / fingerprint / recurrence 統計，降低重複轟炸。
- [ ] 修「詳情 / 歷史」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 狀態。

驗收：
- [ ] 同一 fingerprint 可看到 recurrence 次數、最新來源、處置狀態。
- [ ] 詳情 / 歷史連結不再 400。
- [ ] 重複通知有 DB 證據與 TTL 判讀。

Live evidence：
- Gitea code-review run `2550`：success。
- Gitea CD run `2549`：tests / build-and-deploy / post-deploy-checks success。
- Deploy marker：`65bdfd1d chore(cd): deploy 29a67ec [skip ci]`。
- Post-deploy log：`Source Link Canary` 回 `recorded sentry source-link canary event for INC-20260505-25E744`，Alert Chain smoke `PASSED — 8/9 checks passed`。
- Source correlation apply smoke：`status=passed`、`verification_status=applied_link_verified`、`source_event_provider_event_id=sentry:source_correlation_linked:awoooi-source-link-canary-gitea-cd-3668-1`，write flags `writes_incident_state=false`、`writes_auto_repair_result=false`、`writes_ticket=false`。
- Production recurrence API：`awoooi-source-link-canary-gitea-cd-3668-1` 顯示 `latest_stage=source_correlation_linked`、`latest_incident_id=INC-20260505-25E744`、`stage_counts={"source_correlation_linked": 1, "upstream_canary": 1}`。
- Gitea code-review run `2552`：success。
- Gitea CD run `2551`：tests / build-and-deploy / post-deploy-checks success。
- Deploy marker：`658f46dd chore(cd): deploy ca0b3ae [skip ci]`。
- Production health：`/api/v1/health` 回 `status=healthy`、`environment=prod`、`mock_mode=false`。
- Production callback API：`/api/v1/platform/runs/callback-replies?project_id=awoooi&callback_reply_status=observed&per_page=5&refresh=true` 回 `total=4`，summary `callback_total=4`、`callback_sent_total=4`、`snapshot_status=partial`，第一筆 `callback_reply_status=sent`、`callback_reply_action=history`。
- 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 主責

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P0 |
| 狀態 | 未開始 |
| 目標完成度 | AI provider readability 88% → 95% |

細項：
- [ ] 強制確認 Ollama 使用順序：GCP-A → GCP-B → 111 → Gemini fallback。
- [ ] 查為什麼會跑到 111 Ollama，而不是先 GCP-A/GCP-B。
- [ ] Gemini 僅 fallback，不禁用。
- [ ] Hermes 作 KM / E7 自動知識主責。
- [ ] OpenClaw 作告警分類、規則匹配、PlayBook 脈絡摘要，不直接批量改 KM。
- [ ] ElephantAlpha 作 read-only 稽核與高風險 review。
- [ ] 前端顯示每次 AI route：provider、model、fallback 原因、token、latency、result。

驗收：
- [ ] `/api/v1/platform/ai-route-status` 與 run detail 顯示同一 route truth。
- [ ] 任何 fallback 都有原因與 latency。
- [ ] 前端不再只顯示概念性 provider 文案。

## Phase 4 - P0 KM 劣化治理

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P0 |
| 狀態 | 未開始 |
| 目標完成度 | KM / Governance workflow 58% → 80% |

細項：
- [ ] 處理 `knowledge_degradation`：stale KM ratio 需低於 20%。
- [ ] 建立 `run_kb_growth_healthcheck` 真正排程與執行紀錄。
- [ ] Hermes 反查 Incident / Sentry / SigNoz / PlayBook，產生 KM 更新草稿。
- [ ] 高影響 KM 必須 owner review 後寫入。
- [ ] Work Items / Knowledge Base 顯示 stale 條目、owner、來源、引用次數、下一步。
- [ ] Telegram 文案改成白話治理品質警報，避免誤判為服務故障。

驗收：
- [ ] stale 候選有 owner review queue。
- [ ] healthcheck 有 schedule / last run / result。
- [ ] KM 草稿與採納狀態可從前端查到。

## Phase 5 - P1 前端產品化

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P1 |
| 狀態 | WOOO Open Design D1 AwoooP controls radius token cleanup 已上線並通過 production smoke |
| 目標完成度 | 首頁產品化入口 88% → 95%；Design system 60% → 70%（目前 64%） |

細項：
- [ ] 首頁繼續從大量文字改成圖、表、流程、矩陣。
- [ ] 抽共用 visual components：swimlane、matrix、diagram atlas、timeline、state machine、topology。
- [ ] AwoooP Runs 補完整事件時間線、AI route、MCP evidence、repair/verifier result。
- [ ] Work Items 補 owner review rail、KM task、blocking reason、next step。
- [ ] Approvals 補風險門、批准後實際是否執行、執行結果。
- [ ] Alerts 補 recurrence、fingerprint、Sentry/SigNoz/K8s 關聯。
- [ ] Monitoring / Cost / Tickets 接真實資料，移除空洞文案。
- [ ] 所有文案 i18n，不硬編中文/英文。
- [ ] 禁用 emoji 當 UI icon，改 lucide/icons。
- [ ] 確認首頁與各頁 mobile 可上下滾動、`horizontalOverflow=0`。
- [x] 接入 WOOO Open Design 採用策略：新增 token bridge 文件，先把 radius / shadow token 版本化。
- [x] D0 token bridge：`globals.css` 新增 `--wooo-radius-*` / `--wooo-shadow-*`，Tailwind `rounded-glass/card/button/pill` 指向 variables。
- [x] D0 production smoke：正式站 CSS bundle 已含 `--wooo-radius-card`，Runs 桌機 / 手機 `horizontalOverflow=0`。
- [x] D1：AwoooP Runs / Approvals / Work Items 清 inline radius 與過大圓角，保留 operator console 密度。
- [x] D1 production smoke：`8c9582f3` 正式站 Runs / Approvals / Work Items 桌機與手機皆 `horizontalOverflow=0`，Runs / Approvals 控制項半徑為 `6px`。
- [x] Google Ads 型 IA D0：AwoooP shell 改為固定工作台殼，包含 scope selectors、狀態列、桌機二層 section menu、頁面標題、上方 tabs 與工具列；視覺仍沿用 WOOO Open Design token 與 8px 內圓角。
- [x] Google Ads 型 IA D0 production smoke：正式站 Runs 桌機 / 手機皆可見新 scope/status/page tabs/toolbar，Runs 真資料載入，`horizontalOverflow=0`，禁止內網 / `#` href 命中 `0`。
- [x] AwoooI Logo D0：左上品牌改用 `logo-gallery.html` 指定的 AI / AwoooI 科技冷色 V2 膠囊疊加推薦稿；Header 文字改走 `brand.displayName` i18n，桌機 / 手機正式站皆確認無舊螺旋 SVG、`horizontalOverflow=0`。
- [ ] 若 `design.wooo.work` 對應 npm package / token export 可取得，改為 build-time package import，不做 runtime 遠端依賴。

### Phase 5-D2 - AwoooP Google Ads 型管理後台 IA

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P1 |
| 狀態 | Code 已推 Gitea main，deploy marker 已追加，正式站 desktop/mobile smoke 通過 |
| 本階段完成度 | 100% |
| Design system 進度 | 64% → 66% |
| Runs visibility 進度 | 94% → 95% |

細項：
- [x] 研究 Google Ads 管理後台 IA：主功能 rail、二層 section menu、scope selector、status strip、頁面 tabs、toolbar、dense card/table workspace。
- [x] 保留 AWOOOI 全域 Sidebar 作為主功能 rail；AwoooP layout 內新增桌機二層 section menu，避免把所有子頁都塞成同一排 tabs。
- [x] AwoooP 頂部新增資料檢視 / 專案 scope selector、operator badge 與只讀狀態列。
- [x] AwoooP 頁面標題區新增「所有時間」、最近 30 天、重新整理、下載、意見工具列。
- [x] Mobile 隱藏二層 section menu，保留 scope/status 與橫向 page tabs，避免水平溢出。
- [x] 所有新增可見文案走 `awooop.shell` i18n key，`zh-TW.json` / `en.json` 繁中鏡像一致。

驗收：
- [x] i18n mirror：`I18N_JSON_MIRROR_OK leaves=8876`。
- [x] `pnpm --filter @awoooi/web typecheck` 通過。
- [x] `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --filter @awoooi/web build` 通過。
- [x] Local dev desktop 1440x1000 `/zh-TW/awooop/runs?project_id=awoooi&_v=google-ads-shell-d0-dev2-desktop`：AwoooP shell、scope/status、二層 menu、tabs、toolbar 可見，`horizontalOverflow=0`；本地因 dev proxy 未接 production API 顯示 Run 載入錯誤，正式站需補驗。
- [x] Local dev mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=google-ads-shell-d0-dev2-mobile`：scope/status/tabs/toolbar 可見，`horizontalOverflow=0`，二層 section menu 按設計隱藏。
- [x] Code commit：`c4428a8b feat(web): align AwoooP shell with Ads-style IA`，已推 `gitea main`。
- [x] Gitea code-review run `2573` 成功；CD run `2572` 完成並追加 deploy marker `1662e406 chore(cd): deploy c4428a8 [skip ci]`。
- [x] Production desktop 1440x1000 `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=c4428a8b-google-ads-shell-prod-desktop`：scope selector、狀態列、桌機二層 menu、頁面 tabs、toolbar、Runs 內容可見，`horizontalOverflow=0`；截圖 `/tmp/awoooi-google-ads-shell-d0-prod-desktop-c4428a8b.png`。
- [x] Production mobile 390x844 `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=c4428a8b-google-ads-shell-prod-mobile`：scope selector、狀態列、頁面 tabs、toolbar、Runs 真資料可見，無 in-page load failure，`horizontalOverflow=0`，禁止內網 / `#` href 命中 `0`；截圖 `/tmp/awoooi-google-ads-shell-d0-prod-mobile-c4428a8b.png`。
- [x] 追蹤 Gitea deploy marker：`1662e406 chore(cd): deploy c4428a8 [skip ci]` 已出現在 `gitea/main`。

### Phase 5-D3 - AwoooI Header Logo 更新

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P1 |
| 狀態 | 已推 Gitea main，deploy marker 已追加，正式站 desktop/mobile smoke 通過 |
| 本階段完成度 | 100% |
| Design system 進度 | 66% → 67% |

細項：
- [x] 從 `logo-gallery.html` 抽取 `1. AI (AwoooI) - 科技感冷色調` 的 `V2: 膠囊疊加 (Pills) - 推薦` SVG。
- [x] 替換 `apps/web/src/components/layout/header.tsx` 左上角舊螺旋 SVG，保留 Header 尺寸與 WOOO Open Design 背景 / 邊線 / spacing。
- [x] 新增 `brand.displayName` i18n key，Header 顯示 `AwoooI` 不硬編在 TSX。
- [x] 桌機展開狀態顯示 Pills icon + `AwoooI`；手機 / 收合狀態保留 Pills icon，避免壓縮內容。

驗收：
- [x] i18n mirror：`I18N_JSON_MIRROR_OK leaves=8912`。
- [x] `pnpm --filter @awoooi/web typecheck` 通過。
- [x] `NEXT_PUBLIC_API_URL=https://awoooi.wooo.work NEXT_PRIVATE_BUILD_WORKER_COUNT=1 SENTRY_SUPPRESS_GLOBAL_ERROR_HANDLER_FILE_WARNING=1 pnpm --filter @awoooi/web build` 通過。
- [x] Local desktop 1440x1000 `/zh-TW/awooop/runs?project_id=awoooi&_v=awoooi-logo-pills-local-desktop-3`：`hasPillsSvg=true`、`oldLogoPresent=false`、`horizontalOverflow=0`；截圖 `/tmp/awoooi-logo-pills-local-desktop.png`。
- [x] Local mobile 390x844 `/zh-TW/awooop/runs?project_id=awoooi&_v=awoooi-logo-pills-local-mobile`：`hasPillsSvg=true`、`oldLogoPresent=false`、`horizontalOverflow=0`；截圖 `/tmp/awoooi-logo-pills-local-mobile.png`。
- [x] Code commit：`a5324ef7 feat(web): replace header logo with AwoooI pills mark`，已推 `gitea main`。
- [x] Gitea code-review run `2577` 成功；CD run `2576` tests / build-and-deploy / post-deploy-checks 成功。
- [x] Deploy marker：`f1eec188 chore(cd): deploy a5324ef [skip ci]`。
- [x] Production desktop 1440x1000 `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=f1eec188-logo-pills-prod-desktop`：`hasDisplayName=true`、`hasPillsSvg=true`、`oldLogoPresent=false`、`horizontalOverflow=0`；截圖 `/tmp/awoooi-logo-pills-prod-desktop-f1eec188.png`。
- [x] Production mobile 390x844 `https://awoooi.wooo.work/zh-TW/awooop/runs?project_id=awoooi&_v=f1eec188-logo-pills-prod-mobile`：`hasPillsSvg=true`、`oldLogoPresent=false`、`horizontalOverflow=0`；收合狀態文字隱藏符合設計；截圖 `/tmp/awoooi-logo-pills-prod-mobile-f1eec188.png`。

## Phase 6 - P1 Ansible / PlayBook / Auto Repair

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P1 |
| 狀態 | 未開始 |
| 目標完成度 | Ansible / AutoRepair gate 可視化 52% → 80% |

細項：
- [ ] 盤點 Ansible 是否真正被 AI automation 使用，而不是只存在 repo。
- [ ] PlayBook 要有 trust score、成功 / 失敗回寫、版本、owner、適用條件。
- [ ] 自動修復不能只推薦重啟，要依 MCP evidence 與 PlayBook trust 決策。
- [ ] 自動修復完成後 verifier 驗證，失敗才升級人工。
- [ ] 每次修復都回寫 KM / PlayBook / incident timeline。

## Phase 7 - P1 既有紅燈驗證

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P1 |
| 狀態 | 未開始 |

細項：
- [ ] Production PostgreSQL 直接查 RLS policy，不引用舊報告。
- [ ] 查 `.claude/settings.json` token 是否真在 repo/worktree；若有，移除並輪換。
- [ ] 查 110 swap、188 certbot、188 memory、GCP-B live usage。
- [ ] 查 GitHub workflow 是否仍可能觸發競爭 K3s。
- [ ] 查 188 local Ollama 是否仍有 direct `OLLAMA_URL` caller，確認後再清理，不直接 uninstall。

## Phase 8 - P2 技術債 / 清理

| 欄位 | 內容 |
| --- | --- |
| 優先級 | P2 |
| 狀態 | 未開始 |

細項：
- [ ] 清理前端舊版本、空洞首頁、無效進度條、小龍蝦進度條資料源。
- [ ] 清掉假資料、硬編 IP、舊 fallback copy、舊 navigation 版本差異。
- [ ] 把已完成與推進中的工作同步到前端，不把聊天內容原文寫成頁面文案。
- [ ] LOGBOOK 持續記錄每階段：完成項、commit、Gitea run、正式站證據、整體進度。

## 狀態更新紀錄

| 時間 | Phase | 完成度 | 狀態 |
| --- | --- | --- | --- |
| 2026-06-04 | Phase 0 | 0% | 建立工作清單，開始導航 IA 第一波 |
| 2026-06-04 | Phase 0 | 92% | 導航 IA 本地驗證完成，待 Gitea 推版與正式站證據 |
| 2026-06-04 | Phase 0 | 96% | `973fc7a4` 已推 Gitea main；正式站仍顯示舊 Sidebar，待 CD rollout |
| 2026-06-04 | Phase 0 | 100% | 正式站已顯示新 Sidebar / AwoooP subnav，`horizontalOverflow=0` |
| 2026-06-04 | Phase 1 | 38% | SLO 回綠；定位 pending approval timeline 留痕、manual-required 狀態浮現與 Runs/Work Items 可視性缺口 |
| 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 通過 |
| 2026-06-04 | Phase 5 | 66% | `c4428a8b` 已把 AwoooP shell 改成 Google Ads 型 IA；`1662e406` deploy 後 production desktop/mobile smoke 通過 |
| 2026-06-05 | Phase 5 | 67% | `a5324ef7` 已把左上 Header Logo 換成 AwoooI Pills V2；`f1eec188` deploy 後 production desktop/mobile smoke 通過 |
