# M9-5 Windows 實機驗證 checklist > 對應 plan:`../m9-5-validation-plan.md` > 平台:Windows 10 / 11(x86_64) > 預估時間:3-4 小時 > 執行人:使用者(下週) --- ## 0. 前置準備(15 分鐘) - [ ] 確認 Windows 版本:`winver`、紀錄:__________ - [ ] visionA-local A 階段 build 已安裝(含 M9-1 ~ M9-4) - [ ] 清空舊狀態:刪除 `%APPDATA%\visiona-local\`(PowerShell:`Remove-Item -Recurse -Force "$env:APPDATA\visiona-local\"`) - [ ] 準備硬體: - [ ] KL520 KDP1 legacy dongle:__________ - [ ] KL520 KDP2 dongle:__________ - [ ] KL720 dongle:__________ - [ ] **WinUSB driver 已綁定**(重要、KneronPLUS Windows 必要): - [ ] 開「裝置管理員」→「通用序列匯流排控制器」 - [ ] 確認看到 `Kneron USB Device` 或類似條目 - [ ] 若沒有、跑 Zadig 工具綁定 WinUSB driver(installer 應已處理) - [ ] Chrome / Edge 任一最新版開啟、F12 DevTools 準備好 - [ ] Console / PowerShell 開好 --- ## 1. Functional 升級流程驗證(90 分鐘) ### 1.1 情境 A:KL520 KDP1 → KDP2 完整 4-stage(30 分鐘) **前置**:插 KL520 KDP1 dongle - [ ] 啟動 visionA-local(雙擊 `visiona-local.exe` 或 Start 選單) - [ ] **Windows Defender 首次掃描**:可能延遲 30-60 秒(KneronPLUS dll 簽章)、若超過 60 秒持續啟動 → P1 bug - [ ] Wails 視窗開啟、控制台顯示 server URL - [ ] 點「開啟瀏覽器」、Devices 頁出現 - [ ] **紅色 badge** `KDP1 (legacy)` 顯示 - [ ] 點升級、confirm modal、from/to 正確 - [ ] 點「開始升級」、upgrading phase - [ ] **progress modal 不顯示 ✕ / 取消** - [ ] 紅色 banner「請勿拔除裝置」顯示 - [ ] stage 序列:preparing → loading → flashing → verifying - [ ] ESC 不關 modal、點外部不關 - [ ] 升級在 60 秒內完成(**實測時長**:______ 秒) - [ ] modal 顯示綠勾、自動關閉、toast 顯示 6 秒 - [ ] Devices 卡片 badge 變綠 + `v2.2.0` - [ ] Server log(`%APPDATA%\visiona-local\server.log`)沒有 panic **截圖**: - [ ] `.autoflow/06-testing/screenshots/windows-A-before.png` - [ ] `.autoflow/06-testing/screenshots/windows-A-upgrading.png` - [ ] `.autoflow/06-testing/screenshots/windows-A-success.png` ### 1.2 情境 B:KL520 KDP2 short-circuit(15 分鐘) - [ ] 黃色 badge / 點升級 - [ ] **3 stage 序列**(沒 loading) - [ ] 60 秒內完成(**實測**:______ 秒) ### 1.3 情境 C:KL720 升級(15 分鐘) - [ ] 點升級、confirm 顯示「3 分鐘」 - [ ] 3 stage(KL720 走 short-circuit) - [ ] 200 秒內完成(**實測**:______ 秒) ### 1.4 情境 D:來回升級(15 分鐘) - [ ] 重跑情境 A 一次 - [ ] **無 Error 15 SEND_DATA_TOO_LARGE** - [ ] 兩次都成功 ### 1.5 多裝置同時連接(15 分鐘) - [ ] KL520 + KL720 同時插 - [ ] 兩張卡片 - [ ] KL520 升級進行中、試 KL720 升級 - [ ] 被擋(409 或 modal 不開) - [ ] KL520 完成後 KL720 可升級 --- ## 2. Reliability 失敗注入(45 分鐘) ### 2.1 #1 scan_not_found(5 分鐘) - [ ] 拔 USB、點升級 - [ ] error modal「找不到裝置」 ### 2.2 #3 loader_write_failed(10 分鐘) **注入**:loading stage 時、Task Manager 強殺 `python.exe`(或 PowerShell 跑 `Stop-Process -Name python -Force`) - [ ] error modal「引導程式載入失敗」 - [ ] 「拔插後重試」按鈕 - [ ] **無 brick warning**(recoverable) ### 2.3 #4 upgrade_mid_failed(10 分鐘) **注入**:flashing stage 時、強殺 python - [ ] error modal「韌體寫入失敗」 - [ ] errorCode `FW_UPGRADE_*` - [ ] 「重試」按鈕 ### 2.4 #5 disconnect_during_op(10 分鐘) **注入**:flashing stage 時、**拔 USB** - [ ] error modal「裝置已斷開」 - [ ] **brick warning role=note** - [ ] **無 Retry 按鈕** - [ ] **Contact Support destructive 按鈕** - [ ] 點 Contact Support、開 Outlook / 預設 mail handler ### 2.5 #6 timeout(10 分鐘) - [ ] 拔 USB 後等 KL520 > 60s - [ ] error modal「操作超時」 --- ## 3. UX 驗證(30 分鐘) ### 3.1 Badge 4 色 | State | 觸發 | 紀錄 | |-------|------|------| | current(綠) | | [ ] | | older(黃) | | [ ] | | legacy(紅) | KDP1 | [ ] | | unknown(灰) | scan 過渡期 | [ ] | ### 3.2 Modal 警告 banner 全程顯示 - [ ] 4 個 stage 都顯示「請勿拔除裝置」 ### 3.3 Toast 停留 6 秒 - [ ] 計時驗證 ### 3.4 複製錯誤訊息 - [ ] 點複製、變「已複製 ✓」 - [ ] PowerShell `Get-Clipboard` 確認內容 ### 3.5 mailto: 開啟 - [ ] destructive reason 點 Contact Support - [ ] Outlook / Windows Mail / 預設 mail handler 開啟 --- ## 4. Integration 驗證(30 分鐘) ### 4.1 SIGTERM 延遲關閉 ⚠ **Windows SIGTERM 行為不直觀**——`taskkill /F` 等於 SIGKILL、不會走 graceful。 **替代方法**: - 開兩個 visionA-local 實例(second 應該失敗、single-instance lock)→ 觀察 first instance behavior - 或:跑升級、然後 Task Manager「End Task」(不 force)視為 SIGTERM 等效 - [ ] 啟動升級流程 - [ ] flashing stage 時、Task Manager → End Task(不 Force) - [ ] visionA-local server 應延遲關閉、log 顯示「delaying shutdown」 - [ ] 升級完成才真正退出 ### 4.2 Wails OnBeforeClose 攔截 - [ ] 啟動升級流程 - [ ] flashing stage 時、點 Wails 視窗右上 **✕** - [ ] **視窗不關** - [ ] Frontend modal 出現「韌體切換進行中...」 - [ ] modal 顯示 task info(device name / chip / stage / etaSeconds) - [ ] 「繼續等待」+「強制關閉」按鈕 - [ ] 點強制關閉、第二層 FORCE 確認 - [ ] 輸入「force」小寫 → disabled - [ ] 輸入「FORCE」 → enabled - [ ] 點「繼續等待」、modal 關、升級繼續 - [ ] 升級完成、再點 ✕ → 視窗正常關 ### 4.3 Alt+F4 攔截 ⚠ Windows 特有:使用者可能用 Alt+F4 關視窗 - [ ] 升級進行中、Alt+F4 - [ ] **預期**:同 ✕ 按鈕、攔截 modal 顯示 - [ ] 若 Alt+F4 直接關 → P1 bug --- ## 5. Windows 特有觀察點 ### 5.1 USB driver 重新枚舉 升級成功後 device re-enumerate、Windows USB stack 可能不穩: - [ ] 升級成功後 5-8 秒內、Devices 頁卡片自動更新(依 needsReset + rescan) - [ ] 若超過 30 秒仍未更新 → P1 bug(既有 KL520 reset bug 重現) ### 5.2 Defender 即時掃描 - [ ] 啟動時間是否 > 60 秒(首次)/ > 10 秒(後續) - [ ] 升級期間 Defender 是否擾動 USB I/O(罕見但可能) --- ## 6. 驗證結果摘要 | 類別 | 結果 | 備註 | |------|------|------| | §1 Functional | | | | §2 Reliability | | | | §3 UX | | | | §4 Integration | | | | §5 Windows 特有 | | | **升級時長實測**: | Combo | 實測 | 護欄 | Pass / Fail | |-------|------|------|-----------| | KL520 KDP1→KDP2 | __秒 | 60s | | | KL520 short-circuit | __秒 | 60s | | | KL720 | __秒 | 200s | | --- ## 7. Bug 回報 依 `../m9-5-validation-plan.md §11` 格式回報到 `.autoflow/06-testing/bugs/M9-5-BUG-{NN}.md`。 標題加「[Windows]」前綴方便分流。 **完成簽核**:________________ 日期:________________