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>
143 lines
5.1 KiB
Markdown
143 lines
5.1 KiB
Markdown
# 7. 發佈與交付策略
|
||
|
||
## 7.1 發佈通路(Q 決定:內部 Gitea / GitHub Releases)
|
||
|
||
**決策**:
|
||
- ✅ **內部 Gitea Releases**(首選)
|
||
- ✅ **GitHub Releases**(備援 / 合作夥伴用)
|
||
- ❌ **不上** Mac App Store、Microsoft Store、Snap Store、Flatpak
|
||
|
||
**理由**:
|
||
- 內部工具性質,不需要商店觸達
|
||
- 商店上架需要 sandbox(App Store)、開發者帳號 / 簽章(所有商店),均已被 Q2 排除
|
||
- Gitea / GitHub Releases 提供版本管理與下載追蹤即可
|
||
|
||
## 7.2 發佈頻率
|
||
|
||
| 類型 | 頻率 | 觸發 |
|
||
|------|------|------|
|
||
| 主版本(1.0、2.0) | 1-2 次/年 | 重大功能加減 |
|
||
| 次版本(1.1、1.2) | 1 次/月 | 新功能 / 重大改進 |
|
||
| 修補版本(1.0.1)| 隨時 | Bug fix / 安全性 |
|
||
|
||
## 7.3 發佈產出物
|
||
|
||
每個 release 包含以下檔案:
|
||
|
||
| 檔名 | 平台 | 格式 | 預計大小 |
|
||
|------|------|------|---------|
|
||
| `visionA-local-{version}-macos-x64.dmg` | macOS 14/15 x86_64 | `.dmg` | ~220 MB |
|
||
| `visionA-local-{version}-windows-x64.exe` | Windows 10/11 x86_64 | Inno Setup `.exe` | ~200 MB |
|
||
| `visionA-local-{version}-linux-x64.AppImage` | Ubuntu 22.04/24.04 x86_64 | `.AppImage` | ~200 MB |
|
||
| `visionA-local-{version}-checksums.txt` | 全平台 | 文字 | < 1 KB(SHA256)|
|
||
| `RELEASE_NOTES.md` | 全平台 | Markdown | 依版本而異 |
|
||
|
||
**注意**:不提供 ARM 架構、不提供 `.deb` / `.rpm` / `.pkg`。
|
||
|
||
## 7.4 發佈前檢查清單(Launch Checklist)
|
||
|
||
每次 release 前必須通過:
|
||
|
||
### 功能面
|
||
- [ ] 三平台安裝檔可於對應 OS 成功安裝(手動測試)
|
||
- [ ] 三平台首次啟動可完成 First-Run 流程
|
||
- [ ] 三平台均可接 Kneron USB 並 connect 成功
|
||
- [ ] 三平台 Mock 模式可啟動並顯示假推論結果
|
||
- [ ] 三平台攝影機串流正常
|
||
- [ ] 三平台前端 cluster / relay / tray UI 已完全清除(**第三輪 Q-C 決策**,M1 必達)
|
||
|
||
### 效能面
|
||
- [ ] 安裝時間 ≤ 3 分鐘(測試機 SSD)
|
||
- [ ] 首次推論時間 ≤ 15 秒
|
||
- [ ] Mock idle CPU ≤ 3%、RAM ≤ 400 MB
|
||
- [ ] 安裝檔大小符合 6.2 節上限
|
||
|
||
### 相容性
|
||
- [ ] macOS 14 + 15 各測試一次
|
||
- [ ] Windows 10 + 11 各測試一次
|
||
- [ ] Ubuntu 22.04 + 24.04 各測試一次
|
||
|
||
### 文件
|
||
- [ ] RELEASE_NOTES.md 已撰寫
|
||
- [ ] 安裝指南更新(含 Gatekeeper / SmartScreen 警告處理)
|
||
- [ ] 內部 Wiki / Slack 通知已準備好
|
||
|
||
### 非需要項目(明確不做)
|
||
- ~~程式碼簽章~~(Q2)
|
||
- ~~notarization~~(Q2)
|
||
- ~~法律文件(Terms / Privacy)~~(內部工具)
|
||
- ~~商店審核~~
|
||
- ~~auto-update 清單~~(Q6)
|
||
|
||
## 7.5 發佈流程
|
||
|
||
```
|
||
1. 開發完成 → 合併到 main branch
|
||
2. 打 tag:git tag v1.0.0 && git push --tags
|
||
3. CI 觸發 → 三平台 build(GitHub Actions 或 self-hosted runner)
|
||
├─ macOS runner:wails build -platform darwin/amd64 → .dmg
|
||
├─ Windows runner:wails build -platform windows/amd64 → Inno Setup → .exe
|
||
└─ Linux runner:wails build -platform linux/amd64 → appimagetool → .AppImage
|
||
4. 產生 checksums.txt
|
||
5. 人工執行 Launch Checklist
|
||
6. 上傳到 Gitea / GitHub Releases
|
||
7. 內部公告(Slack channel / Email):
|
||
- 新版本號
|
||
- 主要變更
|
||
- 下載連結
|
||
- 升級說明(因為沒 auto-update,需手動下載)
|
||
```
|
||
|
||
## 7.6 使用者升級路徑
|
||
|
||
因為 Q6 決定不做 auto-update:
|
||
|
||
```
|
||
1. 使用者從 Slack / Email 得知有新版
|
||
2. 手動到 Gitea / GitHub Releases 下載新版安裝檔
|
||
3. 安裝新版(舊版 config / 模型資料保留在 OS 慣例資料目錄;macOS:`~/Library/Application Support/visiona-local/`)
|
||
4. 首次啟動新版會自動讀取舊 config
|
||
```
|
||
|
||
**舊版本相容性**:
|
||
- config.json 結構必須向後相容(加欄位可以、改語意要寫 migration)
|
||
- 模型檔案格式不變(.nef 為 Kneron 標準)
|
||
- logs 目錄結構不變
|
||
|
||
## 7.7 Rollback 策略
|
||
|
||
若新版本爆出重大問題:
|
||
1. 在 Gitea / GitHub Releases 將該版本標記為 pre-release 或刪除
|
||
2. 內部通知:「請暫停升級 vX.Y.Z,改用 vX.Y.Z-1」
|
||
3. 使用者已升級者:手動下載舊版重裝(config 資料保留)
|
||
|
||
因為無 auto-update,rollback 成本相對低。
|
||
|
||
## 7.8 支援與回報
|
||
|
||
- **Bug 回報通路**:內部 Slack channel / Gitea Issues
|
||
- **Feature Request**:同上
|
||
- **文件**:內部 Wiki
|
||
- **無** SLA,best-effort 支援
|
||
|
||
## 7.9 長期維護策略
|
||
|
||
visionA-local 的維護預算應與 edge-ai-platform 主線共用:
|
||
|
||
- 核心業務邏輯(device / model / inference / camera)的修改同步從 edge-ai-platform cherry-pick
|
||
- visionA-local 特有的部分(installer、payload、tray、wails shell)獨立維護
|
||
- 目標:visionA-local 的**獨有程式碼 < 30%**,其餘都能與 edge-ai-platform 共享
|
||
|
||
## 7.10 非目標再次確認(發佈相關)
|
||
|
||
本章節再次強調發佈相關的非目標:
|
||
|
||
- ❌ 不上任何商店(Mac App Store / Microsoft Store / Snap Store 等)
|
||
- ❌ 不做程式碼簽章(macOS Developer ID / Windows EV cert)
|
||
- ❌ 不做 notarization
|
||
- ❌ 不做 auto-update
|
||
- ❌ 不做 telemetry / crash report
|
||
- ❌ 不做 license key
|
||
- ❌ 不做法律文件(Terms / Privacy Policy)— 因為是內部工具
|
||
- ❌ 不支援 ARM 架構(未來再評估)
|