docs(local-tool): progress.md 記錄 M7 Windows 一鍵 build + splash regression

- 新增 M7-A:Windows 一鍵 build 工具鏈踩坑紀錄(11 項修好)
- 新增 M7-B:splash regression P0 修復(visiona-local/frontend 殘留 wizard → 改為 splash+redirect)
- 補「M1 驗收流程漏看 Wails 視窗內容」到未解決問題,作為後續 M 任務驗收 checklist
- 補 ffmpeg GPL release blocker 到未解決問題清單

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jim800121chen 2026-04-12 03:35:20 +08:00
parent 570e040a67
commit 83981e5b1b

View File

@ -1,9 +1,9 @@
# 專案進度 — visionA-local
## 目的:全新專案(從 edge-ai-platform 衍生的 local 版本)
## 當前階段:第二階段 — M2-M6 全部完成 ✅
## 當前狀態:使用者驗收中
## 最後更新:2026-04-11
## 當前階段:第二階段 — M7 Windows 實機 build + splash regression 修復
## 當前狀態:Windows 端待驗證重 build 後 UI
## 最後更新2026-04-12
## 🎉 M1 達成總結
- `dist/visiona-local.dmg` (70MB) 可雙擊安裝
@ -71,6 +71,55 @@
| L-3 | Wails /ipc/raise endpoint | ✅ 隨機 port + wails-ipc-port 檔案 |
| L-4 | stale process 清理 | ✅ macOS/Linux lsof+psWindows 留 TODO |
## M7 — Windows 實機 build + splash regression 修復2026-04-12
### M7-AWindows 一鍵 build 工具鏈(使用者在 Windows 機器上實機跑 bootstrap
新增 `local-tool/scripts/bootstrap-linux.sh` + `bootstrap-windows.ps1`,目標是使用者 clone repo 後一行指令完成依賴安裝 + vendor 下載 + payload 打包 + wails build + installer 產出。
| # | 任務 | 狀態 |
|---|------|------|
| M7-A1 | 統一專案目錄名為 `local-tool`(連字號),清掉所有 `local_tool` 殘留 | ✅ |
| M7-A2 | bootstrap-linux.shapt + go 1.22.5 + node 20 + pnpm + wails | ✅ 未在 Ubuntu 實機驗證 |
| M7-A3 | bootstrap-windows.ps1winget 安裝 git/go/node/python/msys2/inno setup + build | ✅ Windows 實機驗證通過 |
**Windows build 踩坑紀錄**(每個都修好並 push
1. **PowerShell 5.1 不支援 `&&`** → 改用陣列 + `-join ' && '`
2. **中文亂碼** → ps1 加 UTF-8 BOM
3. **`pip3: command not found`** → Makefile 偵測 pip/pip3/`python -m pip` + bootstrap `MSYS2_PATH_TYPE=inherit` 讓 bash 繼承 Windows PATH
4. **`unzip: command not found`** → Makefile 改用 Python zipfile 解壓,移除 unzip 依賴
5. **`server.exe` 沒 build** → 新增 `build-server-windows` cross-build target
6. **Microsoft Store `python3` stub** → Makefile 偵測時排除 `*WindowsApps*` 路徑bootstrap 主動找真實 Python 並以 `VISIONA_PYTHON` 環境變數傳入
7. **`/tmp/ffmpeg-win.zip` 路徑問題** → Windows 版 python.exe 不懂 MSYS2 的 `/tmp`,改用相對路徑 `vendor/ffmpeg/windows/ffmpeg-win.zip`
8. **Inno Setup `ISCC.exe` 找不到** → winget 裝到 user-scope `%LOCALAPPDATA%\Programs\Inno Setup 6\`,非傳統 `Program Files (x86)`。Find-Iscc 多層偵測 + 新增 `ISCC` 環境變數 override + user-scope 固定路徑 + 登錄檔 fallback
9. **`ChineseTraditional.isl` 不存在** → Inno Setup 6.3+ 官方移除繁體中文語系,改用 `#ifdef WITH_TRAD_CHINESE` 條件宏,預設只用英文 installer UI不影響 app 本身 i18n
10. **`make exe` 成功但 dist 空** → PS → bash quoting 問題,改寫 tmp `.visiona-build.sh` 檔再執行;另外拆出 `exe-only` target 讓使用者刪掉 dist 能快速重跑 iscc 不重 build wails
11. **Makefile `exe` recipe 診斷輸出** → 印 cwd / iscc exit code / dist 內容,避免靜默失敗
**成果**`E:\visionA\local-tool\dist\visiona-local-0.1.0-windows-x64.exe` 成功產出iscc 正常 compile 通過。
### M7-B🔴 splash regression 修復P0
**根因**`visiona-local/frontend/` 是 M1 階段從 edge-ai-platform 複製過來的 **installer wizard HTML/JS/CSS**,整組沒清理。`main.go``//go:embed all:frontend` 直接把這堆 wizard 當 Wails 主視窗內容,使用者開 app 看到的是 `Edge AI Platform Installer` 而不是 Next.js 主 UI。
**影響範圍**macOS dmg 也有同樣 bug只是 M1 驗收時是用瀏覽器連 `http://localhost:3721/` 驗證 server 回應,沒真的打開 Wails 視窗看 UI所以 regression 一路混過 M1-M6 直到 Windows 實機驗證才被發現。
**修法**commit `570e040`,刪 1248 行 / 新增 79 行):
- `visiona-local/frontend/index.html` → 極簡 splashlogo + spinner + status
- `visiona-local/frontend/app.js` → ES module輪詢 `GetServerStatus()` binding拿到 `running=true` + `url``window.location.replace(url + '/')` 跳到 Next.js 主 UI
- `visiona-local/frontend/style.css` → 深色 splash 樣式
Next.js 主 UI 完全不使用 Wails JS binding純 HTTP API`wails://` 跳到 `http://127.0.0.1:<port>/` 後功能完整可用。
| # | 任務 | 狀態 |
|---|------|------|
| M7-B1 | 清掉 frontend/ 的 edge-ai-platform wizard 殘留 | ✅ |
| M7-B2 | 改寫為 splash + redirect | ✅ |
| M7-B3 | Windows 實機重 build + 測試 splash → Next.js UI 跳轉 | ⏳ 待使用者驗證 |
| M7-B4 | macOS 重 build 驗證同樣修復有效 | ⏳ 待排程 |
## 專案概述
visionA-local 是 `/Users/jimchen/Innovedus/edge-ai-platform` 的 local 版本,目標是把原本要 deploy 到 EC2/staging Docker 環境的網頁工具,改造成可在本地單機執行的桌面應用,並打包成 GUI 安裝檔,支援 macOS / Windows / Ubuntu 三平台。
@ -85,10 +134,10 @@ visionA-local 是 `/Users/jimchen/Innovedus/edge-ai-platform` 的 local 版本
| PRD | ✅ 已完成 | 2026-04-11 | v1.2 定稿 |
| 設計規格 | ✅ 已完成 | 2026-04-11 | 第四輪修訂定稿 |
| 系統架構 / TDD | ✅ 已完成 | 2026-04-11 | 第四輪修訂 + Plan B 補件 |
| 開發(增量式) | 🔄 進行中 | - | M1 啟動2026-04-11 |
| 開發(增量式) | 🔄 進行中 | - | M1-M6 macOS ✅M7 Windows build 完成splash 修復待 Windows 驗證 |
| Review | ⏳ 待開始 | - | - |
| 測試 | ⏳ 待開始 | - | - |
| 打包 / 安裝檔 | ⏳ 待開始 | - | - |
| 打包 / 安裝檔 | 🔄 進行中 | - | macOS dmg ✅Windows exe 成功產出UI 待驗證Linux AppImage 待 Linux 機器驗證 |
| 交付 | ⏳ 待開始 | - | - |
## 當前待辦
@ -99,8 +148,15 @@ visionA-local 是 `/Users/jimchen/Innovedus/edge-ai-platform` 的 local 版本
- [x] Architect Agent 產出正式 Design Doc + TDD2026-04-11
- [x] 第三輪使用者決策(砍 tray、B4、C2、D2、E1/E2/E3
- [x] Design Agent 依第三輪決策修訂設計規格2026-04-11
- [x] **PM Agent 依第三輪決策修訂 PRD**2026-04-11 恢復完成)
- [x] **Architect Agent 依第三輪決策修訂架構文件**2026-04-11 恢復完成)
- [x] PM Agent 依第三輪決策修訂 PRD2026-04-11
- [x] Architect Agent 依第三輪決策修訂架構文件2026-04-11
- [x] bootstrap-linux.sh + bootstrap-windows.ps12026-04-12
- [x] Windows 一鍵 build 踩坑全清11 項修好 push2026-04-12
- [x] Windows `dist/visiona-local-0.1.0-windows-x64.exe` 成功產出2026-04-12
- [x] M7-B splash regression 修復commit 570e0402026-04-12
- [ ] **使用者 Windows 重 build + 驗證 splash → Next.js 主 UI 跳轉**
- [ ] **macOS 重 build 驗證 splash 修復有效**(之前 M1 驗收漏的 UI 環節)
- [ ] Ubuntu 端實機驗證 bootstrap-linux.sh
- [ ] 三方互相審閱PM↔Design↔Architect 交叉 review
- [ ] 使用者確認三份文件
@ -228,8 +284,10 @@ visionA-local 是 `/Users/jimchen/Innovedus/edge-ai-platform` 的 local 版本
## 未解決問題
- **Kneron 預置模型 re-distribution 授權**B4 決策):開發階段先假設可用,發佈前必須跟 Kneron 官方確認。若不允許需改為首次啟動線上下載,會破壞「完全離線」承諾。
- **ffmpeg GPL 授權 release blocker**M6macOS 上的 ffmpeg static build 全是 GPL暫定用 `VISIONA_ALLOW_GPL_FFMPEG=1` 放行,發佈前需法務 review 或改走自 build LGPL / 線上下載 / 砍 ffmpeg 三條路。
- **內部 Gitea Releases / GitHub Releases 基礎設施**:發佈策略假設有此通路,待確認。
- **CI runner 三平台是否齊備**macOS / Windows / Linux runner 狀況待確認。
- **M1 驗收流程漏看 Wails 視窗內容**M1-13 當初是用瀏覽器連 `http://localhost:3721/` 驗證 server 回應,沒真的開 Wails window 看 UI導致 edge-ai-platform installer wizard 殘留一路混過 M1-M6 到 Windows 實機驗證才發現。後續 M 任務的驗收 checklist 必須強制「開 app window 確認主 UI 是 Next.js 而非 splash / wizard / 白畫面」。
## 第一輪三方分析產出(已完成)
- PM`/Users/jimchen/visionA/local-tool/.autoflow/01-requirements/pm-analysis-round1.md`