Sprint 5 — 前端資訊架構重組 + 指令中心拓撲圖
建立: 2026-04-08 (台北)
狀態: 📋 待統帥最終審核
範圍: 導航精簡 (25→6+2) + 多頁籤整合 + React Flow 拓撲圖
原則: 零功能遺失 — 所有現有頁面功能必須保留,只改變呈現方式
第一章:現有資產完整清單 (不可遺失)
1.1 現有 26 個頁面路由
| # |
路由 |
頁面名稱 |
程式碼行數 |
功能摘要 |
| 1 |
/ |
AI 中心 (首頁) |
1200+ |
Metrics Strip + Incident Feed + OpenClaw Panel + HostGrid |
| 2 |
/alerts |
告警 |
183 |
告警列表 + 嚴重度篩選 |
| 3 |
/authorizations |
授權中心 |
25 |
批准/拒絕授權 (佔位頁) |
| 4 |
/monitoring |
服務監控 |
269 |
監控工具狀態 (Grafana/Prometheus/SigNoz) |
| 5 |
/apm |
APM |
128 |
應用效能監控 (SignOz 連結) |
| 6 |
/errors |
錯誤追蹤 |
164 |
Sentry 錯誤列表 + AI 分析 |
| 7 |
/topology |
拓撲圖 |
103 |
簡單 host list (待升級) |
| 8 |
/security |
安全 |
137 |
安全掃描狀態 |
| 9 |
/compliance |
合規 |
124 |
合規報告 + 嚴重度分佈 |
| 10 |
/auto-repair |
自動修復 |
460 |
Playbook 管理 + 評估 + 執行 |
| 11 |
/neural-command |
神經指揮 |
209 |
SSH 指揮權鏈 (4 Tab 元件) |
| 12 |
/drift |
Drift 偵測 |
324 |
Config Drift 報告 |
| 13 |
/deployments |
部署管理 |
113 |
部署歷史 |
| 14 |
/tickets |
工單 |
120 |
工單管理 |
| 15 |
/cost |
成本分析 |
95 |
AI 效能統計 |
| 16 |
/action-logs |
行動日誌 |
551 |
操作記錄 + 時間軸 |
| 17 |
/reports |
報表 |
317 |
處置統計儀表板 (Sprint 4) |
| 18 |
/knowledge-base |
知識庫 |
532 |
KB 搜尋 + 語義搜尋 |
| 19 |
/terminal |
終端 |
36 |
Omni-Terminal |
| 20 |
/apps |
應用 |
103 |
主機服務狀態 |
| 21 |
/services |
服務目錄 |
120 |
服務清單 |
| 22 |
/settings |
設定 |
245 |
系統設定 |
| 23 |
/users |
用戶 |
136 |
用戶管理 |
| 24 |
/notifications |
通知 |
97 |
通知中心 |
| 25 |
/billing |
計費 |
113 |
計費資訊 |
| 26 |
/help |
幫助 |
57 |
幫助文檔 |
| — |
/demo |
Demo |
189 |
開發用 (環境變數保護) |
1.2 現有 62 個前端元件
(完整清單見附錄 A)
核心元件群組:
- layout/: AppLayout, Header, Sidebar (4 檔, 719 行)
- incident/: IncidentCard, FlowPipeline, ThinkingTerminal (3 檔, 1172 行)
- approval/: ApprovalCard, LiveApprovalPanel, ConversationalView 等 (6 檔, 2402 行)
- ai/: OpenClawPanel, ThinkingStream, HITLSection 等 (6 檔, 1883 行)
- neural-command/: NeuralPreFlight, NeuralLiveCenter, NeuralStats, NeuralApprovalPanel (4 檔, 1032 行)
- dashboard/: LiveDashboard, HostCard, ConnectionStatus (4 檔, 1217 行)
- errors/: ErrorOverview, ErrorTrend, RecentIssues, UXAudit (4 檔, 1083 行)
第二章:重組對照表 — 每個頁面的去向
2.1 導航重組:25 項 → 6 主項 + 2 固定項
2.2 新導航結構
第三章:每個新頁面的 Tab 結構與元件整合
3.1 🏠 AI 指令中心 (路由: /)
整合來源: 現有首頁 + /alerts + /authorizations + /topology + /reports
| Tab |
名稱 |
整合的現有元件/頁面 |
新增元件 |
| T1 |
戰情總覽 |
HostGrid, MetricsStrip, IncidentCard, OpenClawPanel |
ServiceTopology (React Flow) |
| T2 |
告警 & 授權 |
/alerts 完整頁面 + LiveApprovalPanel + ApprovalCard |
合併為左右佈局 |
| T3 |
活動串流 |
SSE /dashboard/stream + ActionTimeline |
即時事件時間軸 |
| T4 |
處置統計 |
/reports 完整儀表板 (Sprint 4) |
直接嵌入 |
實作方式:
影響的現有檔案:
| 檔案 |
動作 |
說明 |
app/[locale]/page.tsx |
重寫 |
改為 Tab 容器 |
app/[locale]/alerts/page.tsx |
保留路由但內容抽取 |
抽取為 AlertsPanel 元件 |
app/[locale]/authorizations/page.tsx |
保留路由但內容抽取 |
合併入 Tab 2 |
app/[locale]/topology/page.tsx |
保留路由但升級 |
完整版拓撲 (全展開) |
app/[locale]/reports/page.tsx |
保留路由但內容抽取 |
抽取為 DispositionPanel 元件 |
重要: 所有原有路由保留,確保舊連結/書籤不失效。只是內容同時在 AI 中心也能看到。
3.2 📊 可觀測性 (路由: /observability 新建)
整合來源: /monitoring + /apm + /errors + /apps + /services
| Tab |
名稱 |
整合的現有頁面 |
行數 |
| T1 |
服務監控 |
/monitoring/page.tsx |
269 |
| T2 |
APM |
/apm/page.tsx |
128 |
| T3 |
錯誤追蹤 |
/errors/page.tsx |
164 |
| T4 |
應用 |
/apps/page.tsx |
103 |
| T5 |
服務目錄 |
/services/page.tsx |
120 |
實作方式: 新建 /observability/page.tsx,5 Tab 容器
保留舊路由: /monitoring → redirect to /observability?tab=monitoring
3.3 🔧 自動化 (路由: /automation 新建)
整合來源: /auto-repair + /neural-command + /drift
| Tab |
名稱 |
整合的現有頁面 |
行數 |
| T1 |
自動修復 |
/auto-repair/page.tsx |
460 |
| T2 |
神經指揮 |
/neural-command/page.tsx |
209 + 4元件(1032) |
| T3 |
Drift 偵測 |
/drift/page.tsx |
324 |
保留舊路由: /auto-repair → redirect to /automation?tab=repair
3.4 📦 營運 (路由: /operations 新建)
整合來源: /deployments + /tickets + /cost + /action-logs + /billing
| Tab |
名稱 |
整合的現有頁面 |
行數 |
| T1 |
部署管理 |
/deployments/page.tsx |
113 |
| T2 |
工單 |
/tickets/page.tsx |
120 |
| T3 |
成本分析 |
/cost/page.tsx |
95 |
| T4 |
行動日誌 |
/action-logs/page.tsx |
551 |
| T5 |
計費 |
/billing/page.tsx |
113 |
3.5 🛡️ 安全合規 (路由: /security-compliance 新建)
整合來源: /security + /compliance
| Tab |
名稱 |
整合的現有頁面 |
行數 |
| T1 |
安全掃描 |
/security/page.tsx |
137 |
| T2 |
合規報告 |
/compliance/page.tsx |
124 |
3.6 📚 知識 (路由: /knowledge 新建)
整合來源: /knowledge-base
| Tab |
名稱 |
整合的現有頁面 |
行數 |
| T1 |
知識庫 |
/knowledge-base/page.tsx |
532 |
(單一內容暫不需 Tab,但預留未來擴充)
3.7 底部固定項
| 項目 |
路由 |
說明 |
| 💻 終端 |
/terminal |
保持獨立,因為需要全螢幕 |
| ⚙️ 設定 |
/settings |
整合 /users + /help + /notifications |
第四章:舊路由向後兼容 (Backward Compatibility)
原則: 所有現有 URL 必須繼續有效 (書籤/Telegram 連結不失效)
| 舊路由 |
處理方式 |
目的地 |
/alerts |
redirect |
/?tab=alerts |
/authorizations |
redirect |
/?tab=alerts |
/topology |
保留 |
完整版拓撲 (React Flow 全展開) |
/reports |
redirect |
/?tab=disposition |
/monitoring |
redirect |
/observability?tab=monitoring |
/apm |
redirect |
/observability?tab=apm |
/errors |
redirect |
/observability?tab=errors |
/apps |
redirect |
/observability?tab=apps |
/services |
redirect |
/observability?tab=services |
/auto-repair |
redirect |
/automation?tab=repair |
/neural-command |
redirect |
/automation?tab=neural |
/drift |
redirect |
/automation?tab=drift |
/deployments |
redirect |
/operations?tab=deployments |
/tickets |
redirect |
/operations?tab=tickets |
/cost |
redirect |
/operations?tab=cost |
/action-logs |
redirect |
/operations?tab=logs |
/billing |
redirect |
/operations?tab=billing |
/security |
redirect |
/security-compliance?tab=security |
/compliance |
redirect |
/security-compliance?tab=compliance |
/knowledge-base |
redirect |
/knowledge |
/users |
redirect |
/settings?tab=users |
/help |
redirect |
/settings?tab=help |
/notifications |
redirect |
/settings?tab=notifications |
實作: Next.js redirects in next.config.js 或各頁面加 redirect()
第五章:共用 Tab 容器元件
所有新頁面共用同一個 Tab 元件,確保一致性:
第七章:互動模式完整規範
7.1 Tab 頁籤
| 場景 |
行為 |
| 點擊 Tab |
切換內容,URL query 同步 (?tab=alerts) |
| 瀏覽器後退 |
回到上一個 Tab |
| Tab 有 badge |
顯示數字 (如告警數 2) |
| Tab 內容載入中 |
骨架屏 (Skeleton) |
| Tab 內容無資料 |
空狀態 (Inbox icon + 文字) |
7.2 Drawer 側邊抽屜
| 場景 |
行為 |
| 點擊拓撲節點 |
右側滑出服務詳情 Drawer (300px) |
| 點擊告警列表項 |
右側滑出告警詳情 |
| Drawer 外點擊 |
關閉 Drawer |
| ESC 鍵 |
關閉 Drawer |
7.3 Modal 彈出視窗
| 場景 |
行為 |
| 批准修復操作 |
彈出確認 Modal (風險等級 + URI + 按鈕) |
| 拒絕操作 |
彈出理由輸入 Modal |
| 危險操作 (scale down) |
彈出雙重確認 Modal |
7.4 Toggle 開關
| 場景 |
行為 |
| 「顯示拓撲圖」 |
切換 拓撲圖 / HostGrid 視圖 |
| 「只看異常」 |
篩選只顯示 warning/critical |
| 「顯示數據流」 |
開啟/關閉 SSE 即時串流 |
| 「自動刷新」 |
開啟/關閉 30 秒輪詢 |
第八章:細化實施步驟
Phase 0: 基礎建設 (Day 1)
| Step |
動作 |
影響檔案 |
驗證 |
| 0.1 |
安裝 @xyflow/react + elkjs |
package.json |
import 成功 |
| 0.2 |
建立 PageTabs 共用元件 |
components/layout/page-tabs.tsx (新建) |
渲染 3 個 Tab |
| 0.3 |
建立 ServiceDrawer 共用元件 |
components/layout/service-drawer.tsx (新建) |
滑出/關閉 |
Phase 1: AI 指令中心重構 (Day 2-3)
| Step |
動作 |
影響檔案 |
驗證 |
| 1.1 |
首頁 page.tsx 改為 4-Tab 結構 |
app/[locale]/page.tsx (重寫) |
4 Tab 切換 |
| 1.2 |
Tab 1: 保留現有 MetricsStrip + IncidentCard + OpenClaw |
複用現有元件 |
不丟功能 |
| 1.3 |
Tab 1: 嵌入 ServiceTopology (React Flow 收合) |
topology/ 元件 (新建) |
拓撲圖渲染 |
| 1.4 |
Tab 2: 從 /alerts 和 /authorizations 抽取內容 |
alerts/page.tsx → AlertsPanel 元件 |
告警列表+授權 |
| 1.5 |
Tab 3: 建立活動串流 Tab |
複用 SSE + ActionTimeline |
即時事件 |
| 1.6 |
Tab 4: 從 /reports 抽取處置統計 |
reports/page.tsx → DispositionPanel |
四色統計 |
Phase 2: React Flow 拓撲圖 (Day 3-4)
| Step |
動作 |
影響檔案 |
驗證 |
| 2.1 |
ServiceNode.tsx (memo + Tailwind + Lucide) |
topology/nodes/ (新建) |
節點渲染 |
| 2.2 |
GroupNode.tsx (展開/收合) |
topology/nodes/ (新建) |
群組切換 |
| 2.3 |
TopologyEdge.tsx (漸層 + CSS 動畫) |
topology/edges/ (新建) |
邊線動畫 |
| 2.4 |
useElkLayout.ts (elkjs 嵌套佈局) |
topology/hooks/ (新建) |
自動佈局 |
| 2.5 |
useTopologyData.ts (store → nodes) |
topology/hooks/ (新建) |
資料轉換 |
| 2.6 |
ServiceTopology.tsx (主元件) |
topology/ (新建) |
完整拓撲 |
Phase 3: 其他整合頁面 (Day 4-5)
| Step |
動作 |
影響檔案 |
驗證 |
| 3.1 |
新建 /observability 頁 (5 Tab) |
app/[locale]/observability/page.tsx (新建) |
5 Tab |
| 3.2 |
新建 /automation 頁 (3 Tab) |
app/[locale]/automation/page.tsx (新建) |
3 Tab |
| 3.3 |
新建 /operations 頁 (5 Tab) |
app/[locale]/operations/page.tsx (新建) |
5 Tab |
| 3.4 |
新建 /security-compliance 頁 (2 Tab) |
app/[locale]/security-compliance/page.tsx (新建) |
2 Tab |
| 3.5 |
/knowledge 指向 knowledge-base |
app/[locale]/knowledge/page.tsx (新建) |
內容一致 |
Phase 4: 導航重構 + 舊路由 Redirect (Day 5-6)
| Step |
動作 |
影響檔案 |
驗證 |
| 4.1 |
sidebar.tsx 改為 6+2 結構 |
components/layout/sidebar.tsx (修改) |
導航正確 |
| 4.2 |
建立 20+ 個 redirect |
next.config.js 或各舊頁面 |
舊 URL 跳轉正確 |
| 4.3 |
i18n 新增所有 Tab/Section key |
messages/zh-TW.json, en.json |
零硬編碼 |
Phase 5: 後端擴充 (Day 6)
| Step |
動作 |
影響檔案 |
驗證 |
| 5.1 |
dashboard.py 加 K8s Pod + AI 狀態 |
api/v1/dashboard.py (修改 +30行) |
curl 新欄位 |
| 5.2 |
靜態依賴關係定義 |
topology/dependency-map.ts (新建) |
邊線正確 |
Phase 6: 視覺調校 + 驗收 (Day 7-8)
| Step |
動作 |
驗證 |
| 6.1 |
TypeScript 編譯 |
tsc --noEmit 零錯誤 |
| 6.2 |
生產建置 |
pnpm build 成功 |
| 6.3 |
所有舊 URL redirect 測試 |
20+ URL 全部跳轉正確 |
| 6.4 |
所有 Tab 切換測試 |
每個 Tab 內容正確載入 |
| 6.5 |
拓撲圖互動測試 |
展開/收合/hover/click |
| 6.6 |
統帥視覺驗收 |
確認設計 |
第九章:檔案影響完整清單
新增檔案 (15 個)
| # |
檔案 |
行數 |
功能 |
| 1 |
components/layout/page-tabs.tsx |
80 |
共用 Tab 容器 |
| 2 |
components/layout/service-drawer.tsx |
60 |
共用側邊抽屜 |
| 3 |
components/topology/index.ts |
10 |
匯出 |
| 4 |
components/topology/ServiceTopology.tsx |
150 |
React Flow 主元件 |
| 5 |
components/topology/nodes/GroupNode.tsx |
120 |
群組節點 |
| 6 |
components/topology/nodes/ServiceNode.tsx |
80 |
服務節點 |
| 7 |
components/topology/edges/TopologyEdge.tsx |
60 |
邊線 |
| 8 |
components/topology/hooks/useTopologyData.ts |
100 |
資料轉換 |
| 9 |
components/topology/hooks/useElkLayout.ts |
80 |
佈局引擎 |
| 10 |
components/topology/topology.css |
30 |
動畫 |
| 11 |
app/[locale]/observability/page.tsx |
100 |
可觀測性頁 |
| 12 |
app/[locale]/automation/page.tsx |
80 |
自動化頁 |
| 13 |
app/[locale]/operations/page.tsx |
100 |
營運頁 |
| 14 |
app/[locale]/security-compliance/page.tsx |
60 |
安全合規頁 |
| 15 |
app/[locale]/knowledge/page.tsx |
40 |
知識頁 |
新增總計: ~1,150 行
修改檔案 (5 個)
| # |
檔案 |
改動 |
| 1 |
app/[locale]/page.tsx |
重寫為 4-Tab 結構 |
| 2 |
components/layout/sidebar.tsx |
25→8 導航項 |
| 3 |
apps/web/tailwind.config.ts |
+3 動畫 |
| 4 |
apps/api/src/api/v1/dashboard.py |
+30 行 K8s/AI 狀態 |
| 5 |
messages/zh-TW.json + en.json |
+40 i18n key |
不刪除的檔案 (保留舊路由做 redirect)
所有 26 個現有頁面路由檔案 全部保留,內容改為 redirect 或共用元件。
第十章:技術文檔清單
為避免溝通落差,以下文檔需要產出:
| # |
文檔名稱 |
用途 |
格式 |
| 1 |
頁面路由對照表 |
每個舊 URL 對應到哪個新位置 |
本文件第四章 |
| 2 |
Tab 結構規格書 |
每個新頁面的 Tab 配置 |
本文件第三章 |
| 3 |
元件抽取計畫 |
哪些頁面需要抽取為獨立元件 |
見下方 |
| 4 |
React Flow PoC |
嵌套群組互動 demo |
HTML 部署到內網 |
| 5 |
設計稿 (3+ 版本) |
AI 指令中心多頁籤視覺設計 |
HTML 部署到內網 |
| 6 |
Sidebar 設計稿 |
新 6+2 導航視覺設計 |
HTML 部署到內網 |
| 7 |
i18n Key 清單 |
所有新增的翻譯 key |
JSON |
| 8 |
API 變更規格 |
dashboard.py 新增欄位定義 |
Pydantic model |
元件抽取計畫 (文檔 #3)
| 現有頁面 |
抽取為元件 |
用途 |
/alerts/page.tsx |
AlertsPanel.tsx |
AI 中心 Tab 2 + 獨立路由 |
/reports/page.tsx |
DispositionPanel.tsx |
AI 中心 Tab 4 + 獨立路由 |
/monitoring/page.tsx |
MonitoringPanel.tsx |
可觀測性 Tab 1 |
/apm/page.tsx |
APMPanel.tsx |
可觀測性 Tab 2 |
/errors/page.tsx |
ErrorsPanel.tsx |
可觀測性 Tab 3 |
/auto-repair/page.tsx |
AutoRepairPanel.tsx |
自動化 Tab 1 |
/neural-command/page.tsx |
NeuralCommandPanel.tsx |
自動化 Tab 2 |
/drift/page.tsx |
DriftPanel.tsx |
自動化 Tab 3 |
第十一章:風險與緩解
| 風險 |
等級 |
緩解 |
| 舊 URL 失效 |
高 |
全部保留做 redirect |
| Tab 切換效能 |
中 |
React.lazy + Suspense 按需載入 |
| 元件抽取改壞現有功能 |
中 |
抽取時只移動,不修改邏輯 |
| Sidebar 變更影響所有頁面 |
中 |
先測試再部署 |
| i18n key 遺漏 |
低 |
build 時 next-intl 會報錯 |
| 工期超出預估 |
中 |
Phase 1-2 優先,Phase 3-4 可分批 |
第十二章:時程預估
| Phase |
天數 |
內容 |
優先級 |
| 0 |
1 |
安裝 + 共用元件 |
P0 |
| 1 |
2 |
AI 指令中心 4-Tab |
P0 |
| 2 |
2 |
React Flow 拓撲圖 |
P0 |
| 3 |
2 |
其他整合頁面 |
P1 |
| 4 |
1 |
導航重構 + redirect |
P1 |
| 5 |
1 |
後端擴充 |
P1 |
| 6 |
1 |
視覺調校 + 驗收 |
P0 |
| 總計 |
~10 天 |
|
|
可分批交付:
- 第一批 (Day 1-5): Phase 0-2 → AI 指令中心 + 拓撲圖可用
- 第二批 (Day 6-8): Phase 3-4 → 其他頁面整合 + 導航精簡
- 第三批 (Day 9-10): Phase 5-6 → 後端 + 驗收