# 02 — 頁面與元件變更對照 對照原 `/Users/jimchen/Innovedus/edge-ai-platform/edge-ai-platform/frontend` 盤點結果。 ## 2.1 頁面層級 | 原路由 | 決定 | visionA-local 對應 | 說明 | |--------|------|---------------------|------| | `/`(Dashboard) | ✅ **保留但重新設計** | `/` | 原為叢集總覽,改為「快速開始 + 單機狀態」 | | `/models` | ✅ 保留 | `/models` | 移除 cluster 相關欄位 | | `/devices` | ✅ 保留 | `/devices` | 移除 cluster 分組、flash 按鈕 | | `/clusters` | ❌ **整個刪除** | — | 決策已定 | | `/workspace/[deviceId]` | ✅ 保留 | `/workspace?device=...` 或 `/workspace/[deviceId]` | 新增裝置選擇器 top bar | | `/workspace/cluster` | ❌ **整個刪除** | — | | | `/settings` | ✅ **保留但重構** | `/settings/[tab]` | 從長捲頁改為分頁式 | ## 2.2 元件目錄 ### 保留(全數) | 原目錄 | 元件 | 備註 | |--------|------|------| | `components/camera/` | camera-feed、camera-controls、camera-overlay、source-selector、camera-inference-view、batch-image-thumbnails | 全保留 | | `components/devices/` | device-card、device-list、device-health-card、device-connection-log、device-status | 移除 flash-dialog、flash-progress | | `components/models/` | model-card、model-grid、model-filters、model-upload-dialog、model-detail、model-comparison-dialog | 全保留 | | `components/inference/` | inference-panel、classification-result、confidence-slider、performance-metrics、video-progress | 全保留 | | `components/dashboard/` | stat-card、activity-timeline、connected-devices-list | 拿掉 cluster 欄位 | | `components/layout/` | sidebar、header、connection-status、help-button | 改寫,見 §2.3 | | `components/ui/` | shadcn 元件組 | 全保留 | | onboarding-dialog.tsx、guided-tour.tsx | 強化(見 04-first-run) | | server-log-viewer.tsx、server-status-dashboard.tsx | 移至 Settings > 進階 | | theme-sync.tsx、lang-sync.tsx、store-hydration.tsx | 全保留 | ### 刪除 | 原目錄/檔案 | 原因 | |------------|------| | `components/cluster/`(全目錄) | Cluster 功能砍掉 | | `components/devices/flash-dialog.tsx`、`flash-progress.tsx` | 韌體燒錄 Q9 決策砍掉 | | `components/relay-token-sync.tsx` | Relay 功能砍掉 | | `app/clusters/`(全目錄) | 對應頁面砍掉 | | `app/workspace/cluster/`(全目錄) | 同上 | ### 修改 | 元件 | 修改內容 | |------|---------| | `layout/sidebar.tsx` | 刪除 clusters 導航項;把 workspace 提升為主導航;logo 字樣改「visionA-local」;底部加 Server 狀態卡 | | `layout/header.tsx` | 新增 Mock badge 顯示邏輯;刪除 relay mode switcher;連線狀態改為「Server running / idle / error」 | | `layout/connection-status.tsx` | 語意從「Relay tunnel」改為「Local server」 | | `dashboard/stat-card.tsx` | 移除 cluster 統計;重新設計 stat 組合(見 03-wireframes) | | `dashboard/activity-timeline.tsx` | 過濾掉 cluster-related event | | `app/settings/page.tsx` | 改為分頁 layout | | `app/page.tsx` | 整頁重寫(見 03-wireframes Dashboard 章) | ## 2.3 Layout 改寫重點 ### sidebar.tsx ```tsx // 移除 - { href: '/clusters', label: 'Clusters', icon: Network } - // 新增 + { href: '/workspace', label: 'Workspace', icon: Play } + // 底部常駐 ``` ### header.tsx ```tsx // 移除 - // 新增 + {isMockMode && } + // 取代原來的 logo-in-header(logo 只在 sidebar 顯示) ``` ## 2.4 新元件 | 元件 | 放置位置 | 用途 | |------|---------|------| | `FirstRunWizard` | `components/first-run/` | 三步引導流程 | | `ModeSelector` | `components/first-run/` | 真實/Mock 模式選擇卡 | | `HardwareDetectionStep` | `components/first-run/` | USB 掃描進度與結果 | | `MockBadge` | `components/layout/` | Header 右側 Mock 指示 | | `ServerStatusBadge` | `components/layout/` | Sidebar 底部 server 狀態 | | `EmptyWorkspace` | `components/workspace/` | 無裝置引導畫面 | | `SettingsTabs` | `components/settings/` | 分頁 layout | | `QuickStartCard` | `components/dashboard/` | Dashboard 首屏的 CTA 卡組 | | `LanguageSwitcher` | `components/settings/` | i18n 切換 | | `SignatureWarningNotice` | `components/first-run/` | 解釋 Gatekeeper/SmartScreen 警告(疑問 #5) | ## 2.5 被移除元件回收清單 以下程式碼可以從原專案直接刪除(不需要轉移到 local_tool): ``` components/cluster/**/* components/relay-token-sync.tsx components/devices/flash-dialog.tsx components/devices/flash-progress.tsx app/clusters/**/* app/workspace/cluster/**/* ``` 提醒:Architect 的 round 1 分析已列出對應的後端刪除清單,請確認 API 層與前端同步刪乾淨。