visionA/local-tool/.autoflow/02-prd/vision-and-non-goals.md
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

87 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3. 產品願景與非目標
## 3.1 產品願景
**visionA-local 是一顆「裝起來像一般桌面 app」的 Kneron AI 邊緣推論工具,讓任何人在任何機器上都能三分鐘內開始推論。**
我們相信:內部工具也應該有「消費級產品」的使用體驗。環境依賴、連網要求、管理員權限——這些讓 edge-ai-platform 難以在客戶現場順利跑起來的摩擦點,通通要在 visionA-local 消失。
## 3.2 非目標Non-Goals— 明確列出 visionA-local **不做** 的事
以下功能在 MVP 以及可預見的 v1.x 範圍內**都不會實作**。列出非目標是為了避免開發過程中出現 scope creep也讓三方討論時有明確界線。
### 3.2.1 網路 / 多人協作相關 — 全部不做
| 非目標 | 為什麼不做 |
|--------|-----------|
| **Cluster / 多裝置叢集管理** | 單機工具不需要叢集。cluster API、cluster 頁面、叢集 workspace 全部刪除 |
| **Relay / tunnel / 遠端連線** | 只跑 localhost沒有遠端存取的需求。relay token、tunnel client、hwid 全部刪除 |
| **多人協作 / 權限管理** | 一人一機,無帳號、無權限、無 ACL |
| **Gitea URL 整合** | 原本用於雲端 relay 註冊local 版不需要 |
### 3.2.2 生命週期 / 營運相關 — 全部不做
| 非目標 | 為什麼不做 |
|--------|-----------|
| **Auto-update自動更新** | 使用者 Q6 明確決定不做。使用者需手動從 Gitea Releases 下載新版 |
| **程式碼簽章 / notarization** | 使用者 Q2 明確決定都不買macOS Developer ID $99/年 + Windows EV cert $300-600/年)。內部工具可接受 Gatekeeper / SmartScreen 警告 |
| **Telemetry / 崩潰回報** | 使用者 Q12 明確決定不做。沒有匿名使用追蹤、沒有崩潰上傳 |
| **License key / 啟用機制** | 內部工具不需要防外流機制 |
| **WCAG 2.2 AA 正式合規**(第四輪 R4-3| 使用者明確決定不做稽核。僅保留 shadcn/Radix 提供的預設無障礙屬性(盡力而為)。未來要發佈給外部客戶或政府單位時再補。詳見 [`nonfunctional.md`](./nonfunctional.md) §6.8.3 |
### 3.2.3 平台 / 架構相關 — 暫不做(但保留未來擴充空間)
| 非目標 | 為什麼不做 | 未來可能性 |
|--------|-----------|-----------|
| **ARM 架構支援** | 使用者 Q4 決定:三平台都只做 x86_64使用者目前是 Intel Mac | 之後有需求可加 macOS arm64 + Linux arm64 |
| **Mac App Store 上架** | 內部工具,且 App Store 需要 sandbox 限制 USB 存取 | 無計畫 |
| **Microsoft Store 上架** | 同上 | 無計畫 |
| **Snap / Flatpak** | 發佈流程過重AppImage 已涵蓋 | 無計畫 |
| **macOS 13 以下 / Windows 10 以下 / Ubuntu 20.04 以下** | 使用者 Q3 決定:只支援各平台最新兩版 | 無計畫 |
### 3.2.4 功能相關 — 刻意砍掉
| 非目標 | 為什麼不做 |
|--------|-----------|
| **韌體燒錄 / Flash** | 使用者 Q9 明確決定砍掉。`server/internal/flash/` 整包刪除,相關 UI 也移除 |
| **系統列 Tray常駐圖示** | **第三輪 Q-A 決策**Q7 已決定「關閉視窗 = 結束程式」Tray 失去背景常駐價值;加上跨平台圖資產(.icns / .ico / .png@各 DPI與 Wails tray 踩坑成本高CP 值不划算。`server/internal/tray/` 整包刪除GUI controller 亦無需保留 |
| **多 Kneron dongle cluster 協作** | 可以同時接多顆,但不做叢集協調 |
| **Kneron 以外的硬體支援** | 本工具專為 Kneron KL 系列設計 |
### 3.2.5 商業 / 營運相關 — 全部不做
| 非目標 | 為什麼不做 |
|--------|-----------|
| **商業模式 / 訂閱制 / IAP** | 內部工具,零商業化需求 |
| **廣告** | 同上 |
| **使用者帳號 / 登入** | 單機工具,無帳號 |
| **雲端同步 / 備份** | 所有資料存本機macOS`~/Library/Application Support/visiona-local/`Windows / Linux 待 Architect 補慣例路徑),不上雲 |
| **分享 / 協作功能** | 不支援匯出 share link 給同事 |
| **產品定價** | 免費(內部工具) |
| **法律文件Terms / Privacy Policy** | 內部工具,但若未來要發佈給外部客戶需補 |
## 3.3 非目標的交叉引用
- **Architect Round 1** Section 6「要砍掉的程式碼清單」列出具體路徑與本節 3.2.1、3.2.4 對應。
- **Design Round 1** Section 1「前端頁面去留」列出要砍的 `/clusters` 頁面與 `cluster-*` 元件,與本節 3.2.1 對應。
- **功能清單**[`features/feature-inventory.md`](./features/feature-inventory.md))用 ✅ / ❌ 標示每個 API 與頁面的去留,這是本節的完整對照表。
## 3.4 「如果有人要求加這些功能怎麼辦?」
當 MVP 開發過程中若有人使用者、FAE、其他工程師提出要加上任何非目標裡的功能
1. **先指向本節**:「這在 PRD 的非目標清單裡MVP 不做。」
2. **如果真的有充分理由**:回到三方聯合討論,重新評估是否把某項從非目標移出。
3. **絕對不要**:私下塞進 MVP 範圍。一旦破壞非目標邊界,瘦身 50% 程式碼的目標就守不住了。
## 3.5 非目標的風險
列出非目標本身也有風險:
| 風險 | 可能情境 | 緩解 |
|------|---------|------|
| **使用者因 Gatekeeper / SmartScreen 警告而放棄安裝** | 不做程式碼簽章的後果 | First-Run 文件 / 歡迎頁清楚說明「點右鍵開啟」的步驟 |
| **沒 auto-update 導致舊版永遠在外面跑** | 不做自動更新的後果 | 透過內部 Slack / Email 通知新版,每次新版本都要求使用者手動更新 |
| **沒 telemetry 導致無法知道使用者在哪裡卡住** | 不做遙測的後果 | 依賴主動回報(內部 Slack channel、定期 user interview |
| **不支援 ARM Mac 會讓 M 系使用者要跑 Rosetta效能 + 穩定性問題)** | 只做 x86_64 的後果 | 使用者目前是 Intel Macm 系需求出現時再評估 |