依 autoflow-agent workspace v2 設計把 PRD / 設計 / 架構 / 交付類 共享文件從個人層 .autoflow/(ignored)搬到 docs/autoflow/(進 git), 讓團隊可共享產品與架構文件,個人層只留 progress / review / testing 等 per-branch 筆記。 - 02-prd/ 21 個檔(PRD、features、market-analysis 等) - 03-design/ 18 個檔(design-spec、wireframes、flows 等) - 04-architecture/ 31 個檔(TDD、design-doc、ADR×14、API 規格等) - 07-delivery/ 3 個檔(project-summary、phase-0.6-handover、stage-deployment-setup) 合計 73 檔。原檔已從 .autoflow/ 移除(migration 工具執行 git mv, 但因 .autoflow/ 在 .gitignore 中、git 將此操作視為新增、無 rename history)。
3.0 KiB
3.0 KiB
Feature:叢集推論(P1)
父文件:PRD.md | 對應 User Stories:US-16、US-17
Phase 0 不實作。Phase 0 只留模組目錄(
internal/cluster/),從 POC 搬過來但不接入 API。Phase 1 正式產品化。
概述
叢集推論是 edge-ai-platform POC 驗證過的功能:把多台 Kneron 裝置組成叢集,按加權 Round-Robin 分派推論任務。
這是 visionA Cloud 相對於 local-tool 的核心差異化功能。
使用者行為(Phase 1)
叢集列表頁(/clusters)
- 使用者能看到自己建立的叢集
- 每個叢集顯示:名稱、裝置數、活躍狀態、最近推論量
- 能建立新叢集、刪除叢集、編輯叢集
建立叢集流程
- 點「新建叢集」
- 輸入叢集名稱
- 從已配對裝置挑選 2+ 台裝置加入
- 為每台裝置設權重(1-10)
- 確認建立
叢集推論操作
- 進入某叢集的 workspace:
/clusters/[id]/workspace - 選模型(必須叢集內所有裝置都相容)
- 選來源(Camera / Image / Video / Batch)
- 啟動後,dispatcher 按加權 RR 分派任務到各裝置
- UI 顯示:
- 每台裝置的即時負載(%)
- 每台裝置的推論 FPS
- 整體吞吐量
- Bounding box overlay 仍然顯示(但標注是哪台裝置推論的)
故障降級
- 某台裝置 tunnel 斷線 → 自動從 dispatcher 移除
- 叢集內剩餘裝置繼續服務
- 裝置重新上線 → 自動回加入叢集
技術細節(從 POC 搬)
從 POC cluster/ 模組搬:
Dispatcher:加權 RR 邏輯Manager:叢集 CRUDPipeline:單幀RunInference或連續StartContinuous
要做的產品化改造:
- 加 user_id 隔離(POC 只有一個用戶)
- 叢集 metadata 存 DB(Phase 1 接 DB 後)
- MaxClusterSize 可配置
- 健康度監控與告警
驗收條件(Phase 1,不在 Phase 0 範圍)
- 能建立、編輯、刪除叢集
- 叢集內至少能加 5 台裝置(上限可配置)
- 加權 RR 分派正確(實測權重 3:1 的裝置,流量比約 3:1)
- 某裝置離線時,叢集自動降級,剩餘裝置繼續服務
- 裝置重新上線自動加回
- 每台裝置的即時負載 UI 更新
- 不同使用者的叢集互相隔離
Phase 0 要做的準備
internal/cluster/模組從 POC 搬到 visionA-backend,但不接入 API handlers- Phase 0 的前端
/clusters頁面:可留空白或顯示「即將推出」 - 介面層面預留:API Server router 保留
/api/clusters/...路徑的預定義,先回 501 Not Implemented
Phase 2 的 TODO
- TODO 1:跨使用者的叢集共享(多租戶團隊功能)
- TODO 2:動態權重調整(根據實測效能自動調)
- TODO 3:叢集級別的 Model A/B Testing
- TODO 4:叢集級別的 fallback policy(不只 RR,還能 failover)