jim800121chen c54f16fca0 Initial commit: visionA monorepo with local-tool subproject
local-tool/: visionA-local desktop app
- M1: Wails shell + Go server + Next.js UI + Mock mode (macOS dmg ready)
- M2: i18n (zh-TW/en) + Settings 4-tab refactor
- M3: Embedded Python 3.12 runtime (python-build-standalone) + KneronPLUS wheels
- M4: Windows Inno Setup script (build on Windows runner)
- M5: Linux AppImage script + udev rule (build on Linux runner)
- M6: ffmpeg (GPL, pending legal review) + yt-dlp bundled
- Lifecycle: watchServer health check, fatal native dialog,
            Wails IPC raise endpoint, stale process cleanup

.autoflow/: full PRD / Design Spec / Architecture / Testing docs
            (4 rounds tri-party discussion + cross review)
.github/workflows/: macOS / Windows / Linux build CI

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

7.6 KiB
Raw Permalink Blame History

M1-2 Review — 複製 server core

  • 審查者Reviewer Agent
  • 日期2026-04-10
  • 審查對象:/Users/jimchen/visionA/local-tool/server/
  • 來源:/Users/jimchen/Innovedus/edge-ai-platform/edge-ai-platform/server/

結論: 通過

M1-2 的任務目標是「直接複製 server core跳過要刪的目錄不修改內容」。所有檢查項全部符合預期檔案內容與來源 byte-for-byte 相同,跳過清單 100% 正確。Import 在這個階段壞掉是預期中的事M1-3 才會清理),以下已預先蒐集 M1-3 要修的完整清單。


跳過清單檢查

項目 來源是否存在 目標是否存在 結果
server/internal/cluster/ 正確跳過
server/internal/tunnel/ 正確跳過
server/internal/flash/ 正確跳過
server/internal/update/ 正確跳過
server/internal/relay/ 正確跳過code-reuse-plan 未明列但符合「relay 相關一律砍」精神)
server/pkg/hwid/ 正確跳過
server/cmd/relay-server/ 正確跳過(目標根本沒有 cmd/ 目錄)
server/tray/ 正確跳過
server/scripts/firmware/ 正確跳過
server/scripts/update_kl720_firmware.py 正確跳過
server/scripts/__pycache__/ 正確跳過
server/web/out/(舊 Next.js 產物) 正確跳過
edge-ai-server binary / .next/ 未帶入

驗證方法: 對目標執行 for d in ...; do [ -e "$d" ] && echo FOUND || echo OK; done,全部 OK-MISSING。


必要檔案檢查

項目 結果 備註
server/main.go 305 行,與來源逐 byte 相同
server/go.mod 與來源相同
server/go.sum 與來源相同
server/internal/api/ 含 handlers、ws、router.go、middleware.go、api_e2e_test.go 全齊
server/internal/camera/
server/internal/config/
server/internal/deps/
server/internal/device/
server/internal/driver/
server/internal/inference/
server/internal/model/
server/pkg/logger/
server/pkg/wsconn/ Backend 判斷保留 — 合理,ws/ 下的 hub/device_events 等會依賴它
server/data/models.json
server/data/nef/ 8 個 .nef 檔、data/ 總大小 73M符合規格
server/scripts/kneron_bridge.py
server/scripts/requirements.txt
server/scripts/drivers/ 來源也有,順帶帶入,無衝突
server/web/embed.go

注意: server/internal/api/handlers/cluster_handler.goserver/internal/api/ws/flash_ws.gocluster_flash_ws.gocluster_inference_ws.go 這四個「檔案層級要刪」的檔案目前「存在」。這符合本階段規則(只跳過整個目錄,不砍單檔;檔案層級的刪除是 M1-3 的工作)。已列入下方 M1-3 待辦。


內容未修改驗證

使用 diff -rq SRC/ DST/ 全面比對,結果:

  • diff -q main.go → 完全相同
  • diff -q go.mod → 完全相同
  • diff -rq internal/ → 只回報 Only in SRC: cluster / tunnel / flash / update / relay(全部都是預期要跳過的)
  • diff -rq pkg/ → 只回報 Only in SRC: hwid(預期)
  • diff -rq scripts/ → 只回報 Only in SRC: __pycache__ / firmware / update_kl720_firmware.py(預期)
  • diff -rq data/ → 無任何差異
  • diff -rq web/ → 只回報 Only in SRC: out(預期,舊 build 產物)

結論:除了跳過清單上的項目,其餘檔案與來源 100% 相同。Backend Agent 確實沒動任何內容。


M1-3 要修的 import 清單(預先蒐集)

以下檔案含有「壞掉的 import」或「需要刪除的整檔」M1-3 必須處理:

A. 需要刪除的整個檔案

檔案 原因
server/internal/api/handlers/cluster_handler.go cluster 已砍removed-code.md §2
server/internal/api/ws/flash_ws.go flash 已砍
server/internal/api/ws/cluster_flash_ws.go cluster + flash
server/internal/api/ws/cluster_inference_ws.go cluster

B. 需要修改 import 與邏輯的檔案

檔案 壞掉的 import M1-3 動作
server/main.go internal/clusterL23internal/flashL27internal/tunnelL30pkg/hwidL31 依 removed-code.md §3、§4 刪除 import 與對應變數/啟動邏輯,並同步改 module pathedge-ai-platformvisiona-local/server 或使用者決定的名字)
server/internal/api/router.go internal/clusterL13internal/flashL15 依 api-endpoints.md §4 改寫:移除 clusterMgr / flashSvc / relayToken 參數與對應 routes
server/internal/api/api_e2e_test.go internal/clusterL14internal/flashL16 依 code-reuse-plan §2 改寫:刪除 cluster / flash / auth 測試案例
server/internal/api/handlers/device_handler.go internal/flashL11 移除 FlashDevice handler 與 flashSvc 注入
server/internal/api/handlers/system_handler.go internal/updateL9 移除 CheckUpdategiteaURL 參數、update-check handler

C. Module path 改名(全檔大量影響)

目前 go.mod 仍是 module edge-ai-platform(未改),所以所有 .go 檔import "edge-ai-platform/..." 會在 M1-3 改 module 名時一併更新。這是預期內的大規模 find-replace不算額外壞掉的 import。

D. grep 結果補充

grep -rn "edge-ai-platform/(cluster|tunnel|flash|update|relay|hwid)" server/

僅在上表 6 個檔案命中,其餘檔案乾淨。ws/ 下的剩餘檔案hub.go、device_events_ws.go、server_logs_ws.go、inference_ws.go沒有任何壞掉的 importM1-3 只需保留。


問題

🔴 Critical

無。

🟡 Major

無。M1-2 的範圍就是「複製 + 跳過」,目前所有檔案都在正確位置,內容未動,沒有任何超出職責的改動。

🟢 Minor / 備註

  1. Module name 尚未更改go.mod 仍是 module edge-ai-platform。這符合「本階段不修改內容」的承諾,但 M1-3 務必記得要改 module name 並同步所有 import。
  2. scripts/drivers/ 順帶帶入 — 來源 server/scripts/ 下有一個 drivers/ 子目錄code-reuse-plan 沒特別列出也沒列入刪除。Backend Agent 一起複製過來了,屬於無害的保守做法。若確認完全用不到,可在 M1-3 或清理階段再決定是否刪除。
  3. web/embed.go 保留但 web/out/ 未複製 — 這是刻意的:go:embed 目標目錄是 out/,在 M1 階段因為還沒建 frontendembed.go 編譯會失敗。這是 M1-3 或 frontend 階段要處理的問題(需要先放一個 placeholder out/ 或改 embed 策略),請提醒 M1-3 注意此編譯障礙

可以進入 M1-3 嗎?

可以。M1-2 所有目標達成複製完整、跳過正確、內容未動。M1-3 可直接依本報告「M1-3 要修的 import 清單」開始清理工作,建議順序:

  1. 先刪除 A 清單的 4 個整檔
  2. 再改 B 清單的 5 個檔案router.go 最關鍵)
  3. 執行 go mod edit -module visiona-local/server(或使用者決定的名字)
  4. 全檔 find-replace edge-ai-platform/ → 新 module path
  5. 處理 web/embed.go 的 embed target建立空 out/ 或加 build tag
  6. cd server && go build ./... 驗證可通過