# 11. 風險與相依 — visionA Cloud > 父文件:[PRD.md](PRD.md) --- ## 11.1 風險分析 | # | 風險 | 可能性 | 影響 | 緩解措施 | 負責人 | |---|------|-------|------|---------|--------| | R01 | **破壞 local-tool** — visionA Cloud 開發過程中意外改到 local-tool | 中 | 高 | Monorepo 分離目錄、local-tool 完全獨立的 Go module、CI 持續跑 local-tool 測試、code review 嚴格檢查 | Orchestrator | | R02 | **Tunnel 在企業網路穿透失敗** — NAT / Proxy / Firewall 擋住 WebSocket | 中 | 高 | Phase 0 在至少 3 種企業網路測試、使用標準 443 port + TLS、提供 HTTP CONNECT proxy 支援(Phase 1) | Architect | | R03 | **Pairing Token 洩漏** — token 被截獲,別人接管使用者裝置 | 低 | 高 | 強制 TLS、一次性 + 15min TTL、Phase 1 加 hash 儲存、IP 紀錄、rate limit | Architect | | R04 | **converter 團隊延遲交付** — 我們等 converter 團隊實作 API | 高 | 中 | Phase 0 用 stub 讓前端流程能走完;轉檔整合 list 在 Phase 2(不卡 Phase 1 MVP) | Orchestrator / PM | | R05 | **推論延遲過大** — tunnel 的 WAN RTT 導致推論體驗不如 local-tool | 中 | 中 | 前端延遲透明化、Phase 1 支援就近 region 部署、衡量後如果 P95 > 500ms 考慮降級(只給高速網路用) | Architect | | R06 | **Scope Creep** — 雛形做著做著功能就暴增 | 高 | 中 | PRD 明確列 Phase 0 Scope、PM 嚴格守門、超過 Scope 的功能一律往 Phase 1 / 2 推 | PM | | R07 | **in-memory state 讓雛形不能 restart** — Phase 0 的 in-memory session / auth 一 restart 就全部沒 | 高 | 低 | 這是 Phase 0 預期行為;Phase 1 換 Redis + DB 解決;使用者教育(內部 FAE 知道雛形就是這樣) | Architect | | R08 | **資料隔離 bug** — 使用者 A 看到 B 的裝置 / 模型 | 低 | 高 | 所有 API handler 必做 ownership 檢查、Reviewer 特別關注、Phase 1 加整合測試 | Reviewer | | R09 | **MJPEG over tunnel 效能不足** — yamux 吞吐不夠跑 camera stream | 中 | 中 | Phase 0 早期做 spike test、若不行改用 WebRTC(但複雜度高)、降低 MJPEG 解析度與 fps | Architect | | R10 | **UI 雙模式不一致** — local-tool 和 cloud 版前端漸漸 diverge | 中 | 中 | Phase 0 先不共用程式碼;Phase 1 規劃 monorepo 共用 package、UI 測試截圖比對 | Frontend | | R11 | **內部 FAE 缺乏動機測試雛形** — 大家都很忙 | 中 | 中 | 提前協調資源、提供簡單的測試腳本、給測試者獎勵(公開表揚)、主管背書 | PM | | R12 | **Auth stub 不小心上線給外部** — Phase 0 安全性極弱 | 低 | 極高 | 部署環境用網段限制(只內部 IP 可連)、環境變數明確標 `DEV_MODE=true`、Banner 顯示「雛形」 | DevOps | | R13 | **converter 團隊改 API spec** — 我們定義的 spec 對方做不出來或要改 | 高 | 低 | Spec review session、版本化(v1 / v2)、stub 先跑前端 UX 不綁死 | PM | | R14 | **Kneron USB 驅動在 local agent 跑不穩** — agent 端的 Kneron SDK 掛掉 | 中 | 中 | 這是 local-tool 既有風險,不新增;agent 端加健康檢查 + 自動重啟 | Local-tool team | | R15 | **Legal / 合規未處理** — Phase 1 對外開放但沒有 Terms / Privacy | 中 | 高 | Phase 1 前 1 個月開始準備法律文件、用樣板 + 律師審 | PM / 法務 | --- ## 11.2 技術相依 ### 11.2.1 對外部團隊的相依 | 相依對象 | 相依項目 | 時間敏感度 | 備案 | |---------|---------|-----------|------| | kneron_model_converter 團隊 | 轉檔 API 實作 | Phase 2 才需要 | 用 stub 撐住 Phase 0-1 | | Innovedus IT | Staging 環境(子域名、TLS)| Phase 1 前 | Phase 0 在本機跑即可 | | Kneron 官方 | KneronPLUS SDK 穩定性 | 持續 | 既有依賴,不新增 | ### 11.2.2 對內部專案的相依 | 相依對象 | 相依項目 | 備註 | |---------|---------|------| | local-tool | 作為 local agent 使用 | Phase 0 用**未修改版** local-tool 測試;Phase 1 才考慮整合新功能 | | edge-ai-platform POC | 從中搬 relay / tunnel / cluster / wsconn 模組 | Phase 0 完成後 POC 就封存 | ### 11.2.3 對第三方套件的相依 **前端**(沿用 local-tool 版本): - Next.js 16(App Router) - React 19 - Tailwind 4 - Radix UI - Zustand - **新增**:無(都沿用 local-tool 的 stack) **後端**(沿用 POC 架構): - Go 1.26 - Gin - gorilla/websocket - hashicorp/yamux - **新增(Phase 0 用 stub,但介面要預留)**:無實作層面的新依賴 **Phase 1 會新增**: - PostgreSQL / pgx - Redis / go-redis - JWT library(例如 `golang-jwt/jwt`) - AWS SDK 或 minio-go - bcrypt - email library(sendgrid 或 SES) --- ## 11.3 Phase 0 的已知限制(透明告知) 使用者(內部 FAE)在使用 Phase 0 雛形時需知道: - **Auth 是 stub**:重啟 backend 後所有 user / session 消失,需重新註冊 - **資料不持久**:上傳的模型在 backend 重啟後會消失(local fs 存的話仍在,但 in-memory metadata 會消失) - **Pairing Token 不撤銷**:Phase 0 一旦發出就無法主動撤銷,只能等 15min TTL - **不支援大規模**:同時 10+ user 可能遇到效能問題 - **安全性極弱**:絕對不可用真實密碼,也不可佈署到公開網際網路 以上限制會在 visionA Cloud 前端明顯位置顯示 Banner(「⚠️ 雛形版本,僅供內部測試」)。 --- ## 11.4 不可跨越的紅線 以下情況必須立即停下專案重新討論: 1. **local-tool regression** — 任何新改動導致 local-tool 既有測試 fail 2. **Auth stub 意外對外** — 任何真實使用者能訪問 Phase 0 環境 3. **資料隔離穿透** — 使用者 A 能看到 B 的資料 4. **Pairing 流程無法在任何企業網路跑通** — 代表核心技術路線需重新評估 5. **Phase 0 超時 2 個月以上** — 代表 Scope 有問題,需重新定義 --- ## 11.5 開放問題(待使用者決定) 以下問題目前沒有明確答案,建議在 Phase 0 進行中釐清: - [ ] **Q1**:雛形環境要部署到哪?本機 / 公司內部 VM / 外部 cloud?(影響安全設計) - [ ] **Q2**:`visionA` 是正式產品名嗎?還是只是代號?(影響 domain 選擇與對外命名) - [ ] **Q3**:Pairing Token 的 TTL 15 分鐘合適嗎?(影響使用者體驗) - [ ] **Q4**:Phase 0 是否允許「一個 user 只能 pairing 一台 agent」的限制?(簡化設計但影響測試覆蓋) - [ ] **Q5**:內部 FAE 測試後,哪些回饋算是 Phase 0 bug(要修),哪些推到 Phase 1?(判準) - [ ] **Q6**:轉檔 API spec 要交給 converter 團隊的正式時機?(影響他們的排程) --- ## 連結 - 上一章:[開發範圍與階段](roadmap.md) - 跳回:[PRD 索引](PRD.md)