jim800121chen 5a8d2797c2 chore(local-tool): rename local_tool → local-tool, add linux/windows bootstrap scripts
- 統一目錄名為 local-tool(連字號),修正所有文件中殘留的底線版本
- 新增 scripts/bootstrap-linux.sh 與 scripts/bootstrap-windows.ps1
  一鍵安裝依賴(Go/Node/pnpm/Wails/MSYS2)並執行 payload + installer build

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 23:23:29 +08:00

6.7 KiB
Raw Permalink Blame History

Removed Code — visionA-local

要從 edge-ai-platform 砍掉、不搬進 local-tool 的目錄 / 檔案 / import 清單。


1. 整包刪除的目錄

目錄 原因
server/internal/cluster/ 使用者決策:砍掉 cluster
server/internal/tunnel/ 使用者決策:砍掉 relay / tunnel
server/internal/update/ 使用者決策 Q6不做 auto-update
server/internal/flash/ 使用者決策 Q9砍掉韌體燒錄
server/cmd/relay-server/ 不需要 relay server
server/pkg/hwid/ 只被 relay token 生成用
server/tray/ 使用者決策 Q-A=A3砍掉 tray省跨平台圖資產與 Wails tray 踩坑
server/scripts/firmware/ flash 已砍
docker/ 不需要 deploy
scripts/deploy-aws.sh 不需要 deploy
scripts/deploy-ec2.sh 同上
scripts/deploy-*.sh 同上
docs/ 舊文件不 relevant重新寫
installer/frontend/ 中 cluster / relay 相關畫面 Wails installer 的 UI 不需要 cluster 設定

2. 檔案層級刪除

檔案 原因
server/scripts/update_kl720_firmware.py flash 已砍
server/internal/api/handlers/cluster_handler.go cluster 已砍
server/internal/api/handlers/flash_handler.go(若獨立) flash 已砍
server/internal/api/ws/flash_progress.go flash 已砍
server/internal/api/ws/cluster_*.go cluster 已砍
frontend/src/app/clusters/ cluster 頁面
frontend/src/app/workspace/cluster/ 同上
frontend/src/components/cluster/ cluster 元件
frontend/src/lib/api/clusters.ts API client
frontend/src/components/relay-token-sync.tsx relay 專用
frontend/src/lib/api/update.ts(若有) update 已砍

3. server/main.go 要刪除的 import

// ❌ 刪除這些 import
"edge-ai-platform/internal/cluster"
"edge-ai-platform/internal/flash"
"edge-ai-platform/internal/tunnel"
"edge-ai-platform/pkg/hwid"

4. server/main.go 要刪除的變數 / 邏輯

// ❌ 刪除這些:
var tunnelClient *tunnel.Client
clusterMgr := cluster.NewManager(deviceMgr)
flashSvc := flash.NewService(deviceMgr, modelRepo)

// 刪除整段 relay token 生成:
relayToken := cfg.RelayToken
if cfg.RelayURL != "" && relayToken == "" {
    relayToken = hwid.Generate()
    ...
}

// 刪除 tunnel 啟動:
if cfg.RelayURL != "" {
    tunnelClient = tunnel.NewClient(...)
    tunnelClient.Start()
    ...
    if relayHTTP := relayWebURL(...); ...
}

// 刪除 shutdownFn 裡的 tunnelClient.Stop()

// 刪除 relayWebURL 整個函式
// 刪除 openBrowser 整個函式不需要WebView 由 Wails 管)

// systemHandler 的 giteaURL 參數移除:
systemHandler := handlers.NewSystemHandler(Version, BuildTime, restartFn)  // 移除 cfg.GiteaURL

// router.NewRouter 的呼叫:
r := api.NewRouter(
    modelRepo, modelStore, deviceMgr, cameraMgr,
    // ❌ clusterMgr 移除
    // ❌ flashSvc 移除
    inferenceSvc, wsHub, staticFS, logBroadcaster, systemHandler,
    // ❌ relayToken 移除
)

5. server/internal/config/config.go 要刪除的欄位

code-reuse-plan.md §3.3 的完整改寫版。精簡列表:

// ❌ 刪除:
RelayURL        string
RelayToken      string
GUIMode         bool
GiteaURL        string

// ❌ 刪除對應的 flag.StringVar / flag.BoolVar 呼叫

6. server/internal/api/router.go 要刪除的內容

api-endpoints.md §4 的新版完整程式碼。精簡列表:

  • clusterMgr, flashSvc, relayToken 三個參數
  • clusterHandler 初始化
  • 所有 /api/clusters/* routes
  • /auth/token endpoint + OPTIONS
  • 所有 /ws/clusters/* routes
  • /ws/devices/:id/flash-progress

7. frontend/ 要清理的內容

M1 階段就要清乾淨(使用者決策 Q-C=C2不接受「M1 先不清前端」的先前建議必須一次到位UI 必須乾淨):

7.1 刪除的目錄

  • src/app/clusters/
  • src/app/workspace/cluster/(若存在)
  • src/components/cluster/

7.2 刪除的檔案

  • src/components/relay-token-sync.tsx
  • src/lib/api/clusters.ts
  • src/lib/api/tunnel.ts(若有)
  • src/lib/api/update.ts(若有)
  • src/stores/cluster-store.ts(若有)

7.3 修改的檔案

  • src/components/layout/sidebar.tsx — 移除 "Clusters" 導航項
  • src/app/page.tsxDashboard — 移除 cluster stat card / cluster activity
  • src/app/settings/page.tsx — 移除 relay 模式切換、cluster 設定區塊
  • .tsx 中任何對 clusterStore / clusters API 的 import 與使用

8. installer/app.go(改寫為 visiona-local/app.go)要刪除的內容

// ❌ 刪除的欄位與函式:
- InstallConfig 中的 relay / dashboard 相關欄位
- GenerateToken沒有 token 需求
- GetDashboardURL 中的 relay 邏輯
- LaunchServer  relay flag 組裝
- runInstall 中跟 relay 有關的 step

// ✅ 保留但改寫:
- stepInstallFfmpeg  改為從 payload 解壓 bundled ffmpeg不依賴系統 PATH
- stepInstallUSBDriver  只在 Windows 執行
- stepSetupPython  分裂為 bundled / system 兩條路徑

9. Makefile 要刪除的 target

# ❌ 刪除:
build-relay
deploy-frontend
deploy-frontend-setup
deploy-ec2

# 刪除 PHONY 列表中對應的項目

10. go.mod 要移除的依賴

執行 go mod tidy 後自動移除:

  • 原本為 cluster / relay / tunnel / flash / update 引入的 library
  • hwid 引用了 machineid 類的套件,也會自動移除

不需要手動編輯 go.mod。

11. 清理後的 sanity check

完成上述刪除後,執行:

# Go 編譯測試
cd server && go build ./... && go vet ./...

# 前端編譯測試
cd frontend && pnpm build

# grep 確認沒有殘留的 import
grep -rn "cluster" server/ --include="*.go" | grep -v "_test.go"
grep -rn "tunnel" server/ --include="*.go"
grep -rn "relay" server/ --include="*.go"
grep -rn "hwid" server/ --include="*.go"
grep -rn "flash" server/ --include="*.go"   # 注意可能還有「flash 燈號」等無關字眼
grep -rn "GiteaURL" server/ --include="*.go"

# 應該全部沒有匹配(或只剩無關字眼)

12. 清理階段的風險

  • 隱性耦合:某些 handler 可能透過 router 參數傳遞 clusterMgr,移除後要確認所有 call site
  • 前端 build 炸掉M1 就要清乾淨Q-C=C2必須仔細處理 sidebar、store imports、cross-component references建議先 grep cluster|relay|tunnel 全掃一次再動手
  • test 依賴api_e2e_test.go 裡可能有 cluster / flash / auth test case要一併刪
  • i18n 殘留:被刪除的功能對應的 i18n key 也要清(不影響功能但佔空間)