Files
awoooi/docs/qa/AWOOOI_Full_QA_Report.md
OG T 9bff46a1b0 feat: integrate Sentry + fix CI/CD issues
Sentry Integration (補強 SignOz):
- Add @sentry/nextjs for frontend error tracking + session replay
- Add sentry-sdk[fastapi] for backend error tracking
- Create sentry.client/server/edge.config.ts
- Integrate with next.config.js + instrumentation.ts
- Add Sentry exception capture in FastAPI error handler
- Create deployment scripts for Self-Hosted @ 192.168.0.110

CI/CD Fixes:
- Fix F821 Undefined name 'Field' in incidents.py
- Add NEXT_PUBLIC_API_URL env var to CI build step
- Add build-arg to Docker build verification

E2E Test Improvements:
- Fix strict mode violations in dashboard-acceptance tests
- Add timeout increase for Phase 4 demo tests
- Make tests more resilient to UI variations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-24 15:19:52 +08:00

149 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🏆 AWOOOI 專案:終極全方位綜合 QA 與架構淬鍊白皮書
> **報告說明**:本報告將「核心架構審查 (Review)」、「QA 驗證策略 (Strategy)」、「全節點深度測試 (Detailed QA)」與「首席架構師 Phase 8.0 淬鍊方案」完美濃縮為**唯一一份**終極指導文件。這將是 AWOOOI 團隊後續進行系統重構、優化與正式生產環境交付的最高憲法。
---
## 📑 目錄 (Table of Contents)
1. [第一部分:執行摘要與核心架構審查 (Executive Summary & Architecture Review)](#1-第一部分執行摘要與核心架構審查)
2. [第二部分QA 專家級驗證策略與方法論 (QA Strategy & Methodology)](#2-第二部分qa-專家級驗證策略與方法論)
3. [第三部分:全節點深度 QA 執行與優化方案 (Node-by-Node Detailed QA)](#3-第三部分全節點深度-qa-執行與優化方案)
4. [第四部分:🚨 核心問題與優化優先權總整理 (Prioritized Issues - P0~P3)](#4-第四部分核心問題與優化優先權總整理)
5. [第五部分:🚀 首席架構師 Phase 8.0 總體淬鍊執行藍圖 (Architecture Hardening)](#5-第五部分首席架構師-phase-80-總體淬鍊執行藍圖)
6. [第六部分:總結與後續行動 (Conclusion & Next Steps)](#6-第六部分總結與後續行動)
---
## 1. 第一部分:執行摘要與核心架構審查
AWOOOI (AI + WOOO Intelligent Operations) 是一個基於 **leWOOOgo Engine** 構建的高級 AIOps 平台。它將被動的「救火」式維運轉變為主動、AI 輔助的決策過程。專案採用 Turborepo 與 pnpm 的 Monorepo 結構,後端使用 FastAPI前端則使用 Next.js。
### 1.1 核心架構支柱
* **leWOOOgo Engine**:模組化插件系統,將輸入、大腦、輸出、動作與數據完全解耦,賦予極佳的擴充性。
* **GraphRAG 拓撲感知智能**:對節點進行優先級排序,精準判斷爆炸半徑與根本原因。
* **Multi-Sig 零信任與 TOCTOU 防護**:實作人類簽核授權矩陣,執行前二次驗證 (Dry-Run) 杜絕授權後的狀態突變。
* **OpenClaw AI 仲裁官 (雙軌決策)**:結合 SignOz Gold Metrics 注入提示,具備自動容錯退避 (Ollama -> Gemini -> Claude -> Mock)。並輔以「Expert System (專家系統)」作為底層防線。
### 1.2 基礎設施與防禦性工程
* **非同步優先 (Async-First) & Redis Event Bus**:避免 I/O 阻塞,並解耦後端與 AI/Worker 的響應壓力。
* **零信任 Kubernetes (K3s) 策略**:預設拒絕所有流量 (`NetworkPolicy`),透過嚴格的 RBAC 將 Agent 操作限制在受控沙盒內。
---
## 2. 第二部分QA 專家級驗證策略與方法論
在複雜系統中QA 必須「左移 (Shift-Left)」,在設計階段介入抓出架構盲點,徹底貫徹 **「全自動化精神」** 與 **「零人工 QA 鐵律」**
### 2.1 測試方法的擴展
1. **即時資料與狀態機邊界**:全面檢驗 Frontend State、SSE (Server-Sent Events) 的斷線重連與狀態一致性機制。
2. **合約與冪等性驗證 (Idempotency)**:對 Multi-Sig 與高危險動作 (Write) 實施惡意連擊測試,防止狀態雙重修改或 Race Condition。
3. **零人工 QA 鐵律**:全面導入 Playwright E2E 腳本於 CI 管線中,阻斷有瑕疵的 Pull Request。嚴禁開發者依賴「肉眼檢查畫面」。
### 2.2 基礎設施級別的 QA (Infrastructure QA)
* **微服務壓力測試**:驗證 Event Bus 在告警暴增下是否會導致 Consumer Worker 出現 OOM。
* **混沌測試 (Chaos Testing)**:刻意拔掉 AI Gateway觀察系統能否流暢地 Fallback 到本地專家系統規則而不會 500 報錯。
* **RBAC 越權測試**:用配置好的 Token 試圖向 K8s API 送出越權的 Delete 指令,確認均被 403 阻擋。
---
## 3. 第三部分:全節點深度 QA 執行與優化方案
針對 AWOOOI 前中後台的所有畫面與邏輯節點,進行地毯式互動測試與架構重塑:
### 3.1 全局戰情室 (Dashboard Page)
* **SSE 斷鏈異常**:斷線無「離線提示」,恢復後無退避等待機制。
* **優化**Top-Nav 新增 `Reconnecting...` 紅球標示,導入 Exponential Backoff (`1, 2, 4, 8s`) 重連機制。
* **圖表 (Charts) 空狀態**:資料為空或未載入前顯示 `--` 破壞美感。
* **優化**:嚴格遵守 Nothing.tech 極簡視覺,改採呼吸燈骨架屏 (Skeleton) 或唯美的「No Data Received」水印。
* **i18n 語系切換報錯**:前端 Hydration 階段遇到 Client / Server 渲染語系落差導致當機。
* **架構級優化**:在 Next.js Middleware 強制綁定 `NEXT_LOCALE` Cookie徹底斬斷首屏依賴 `window.navigator.language` 的潛在崩潰。
### 3.2 人機協作審批中樞 (Approval Node)
* **長按防呆按鈕邊界失效**:游標滑出按鈕邊緣 (例如 Safari) 卡條不退回。
* **優化**:增加 `onPointerOut` 監聽,一移出就觸發 `cancel` 控制項重置。
* **爆炸半徑過大撐爆 UI**:影響清單若大於 20 個,排版會被撐爆。
* **優化**:顯示前 5 筆,其餘採 `+N More` 隱藏 Badge。
### 3.3 告警自動修復終端 (Agent Node)
* **Thinking Stream 記憶體崩潰 (P1 級致命傷)**:千行 GraphRAG 日誌寫入 React State 導致頁面極度卡頓 (Memory Leak)。
* **架構級優化 (DOM Bypass)**:絕對禁止將大量 ASCII 日誌存入 `useState`。改採純 DOM 節點 `<div ref={terminalRef}></div>`,透過 SSE 接收字串後直接執行 `ref.current.innerHTML += newContent`,榨取百倍渲染效能。
### 3.4 行動日誌 (Action Logs Node)
* **Race Condition (分頁點擊)**:舊 API 回應覆蓋了新的操作。
* **優化**:採用 `AbortController` 取消前一筆舊請求。
---
## 4. 第四部分:🚨 核心問題與優化優先權總整理
以上發現的缺陷已結合首席架構師的深度剖析,重新打包為四大優先級處置清單。
### 🔴 P0 級 (Critical) - 系統失明與安全漏洞(必須優先執行)
1. **API 與 Worker 長連線資源池衝突 (CrashLoopBackOff)**
* **根因**Worker 共用 API 短超時 Redis Connection Pool導致長期阻塞逾時。
* **終極解法 (微服務裂變)**:強制將專案撕裂為 `awoooi-api` (短連線,高併發) 與 `awoooi-worker` (長連線,重算力) 兩個獨立的 K8s Deployment。
2. **零信任 NetworkPolicy 範圍遺漏**
* **根因**Egress Label 選取錯誤。
* **終極解法 (白名單收斂)**`awoooi-api` 嚴禁連向 K8s APIServer`awoooi-worker` 使用專屬 `awoooi-executor` ServiceAccountRBAC 權限限縮至僅有 `get, list, restart, scale`,絕對禁止毀滅性權限。
### 🟠 P1 級 (High) - 並發異常與首屏當機Sprint 內修復)
1. **Zustand Polling 與授權 API 競爭 (Race Condition)**
* **終極解法 (事件驅動 UI)**:徹底廢棄 `setInterval` Polling。改用 **SSE (Server-Sent Events) + 樂觀更新 (Optimistic UI)**。點擊按鈕瞬間鎖定狀態,等待後端 SSE 廣播最新決策狀態 (`READY` -> `EXECUTING`) 進行解鎖。
2. **Thinking Stream 記憶體洩漏**
* **解法**:落實 3.3 節的 DOM Bypass 渲染策略。
3. **i18n 語系 Hydration 當機**
* **解法**:落實 3.1 節的 Middleware 強制對齊策略。
### 🟡 P2 級 (Medium) - 體驗中斷與防呆補強
1. **SSE 無斷線重連防護** (導入 Exponential Backoff)。
2. **Action Logs 分頁的資料 Race Condition** (導入 AbortController)。
3. **Chart 骨架屏 (Skeleton) 與 Approval 按鈕邊界防呆**
### 🟢 P3 級 (Low) - 測試工程基礎設施
1. **Playwright E2E 腳本脆弱性**
* **解法**:廢棄依賴中文字的選取邏輯,全站組件嚴格補齊 `data-testid` 屬性。
---
## 5. 第五部分:🚀 首席架構師 Phase 8.0 總體淬鍊執行藍圖
為徹底解決上述 P0/P1 架構命門,團隊必須立刻啟動 **Phase 8.0 (Architecture Hardening & Zero-Trust Convergence)**。所有開發與修復任務必須遵循以下三大戰略:
1. **物理級解耦 (Physical Decoupling)**
* API 僅作為「感官」與「溝通橋樑」Worker 作為「大腦」與「處決之手」。兩者之間僅透過 Redis Streams (Event Bus) 進行非同步通訊,嚴禁任何阻塞式 API 調用。
2. **非同步狀態機絕對信任 (State Machine Consistency)**
* 前端 UI 狀態必須 100% 依賴後端 Redis DecisionManager 的狀態流轉 (`INIT` -> `ANALYZING` -> `READY` -> `EXECUTING`)。前端不允許進行本地猜測,以 SSE 作為唯一的真理來源 (Source of Truth)。
3. **實彈沙盒驗證 (Live-Fire CI Sandbox)**
* 嚴禁使用 Mock Data 掩蓋錯誤。CI/CD 管線中必須建立 Ephemeral K8s (拋棄式叢集),強制 AI 代理執行真實的 `kubectl` 指令並驗證結果,作為合併程式碼的唯一標準。
---
## 6. 第六部分:總結與後續行動
AWOOOI 平台已從「實驗室產品」走向「企業級軍工產品」。本次全方位 QA 審查與架構重塑,成功排除了未來可能發生的隱性災難(如 P0 靜默死亡與 P1 狀態機崩潰)。
**下一步命令**
1. 立即依據第四部分開立 Jira / GitHub Issues。
2. 開發團隊暫停所有新功能開發,優先集中火力實施 **「第五部分Phase 8.0 物理裂變與 SSE 貫通」** 手術。
3. 確保 `./scripts/qa-zero-touch.sh` 自動化 QA 工具覆蓋所有修復項目,確保未來零退化 (Zero Regression)。
---
## 7. 附錄:最新自動化測試執行結果 (QA Zero-Touch)
> 執行時間2026-03-24
> 指令:`./scripts/qa-zero-touch.sh`
**API 健康檢查**`✅ API Server 正常運作 (HTTP 200)`
**Playwright E2E 測試總結**
* 總計案例22
* **通過 (Passed)**: 14
* **失敗 (Failed)**: 8
**主要失敗清單(精準命中 Phase 8.0 需重構之節點)**
1. `Dashboard 視覺驗收 ›主機卡片顯示真實狀態` (Timeout, Race Condition)
2. `Dashboard 視覺驗收 語系切換器功能 - 繁中轉英文` (Hydration Mismatch)
3. `Action Log 頁面測試 側邊欄導航 - 行動日誌連結可點擊` (Locator 字串依賴脆弱性)
4. `Phase 4: Full Action Timeline Demo Flow` (由於欠缺獨立的 Backend Server 導致連線被拒絕)
這些失敗結果在在證明了**執行 Phase 8.0 ( física解耦與狀態機一致性)** 的急迫性。