visionA/local-tool/.autoflow/02-prd/pm-cross-review.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

69 lines
8.7 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.

# PM 交叉審閱報告
> 審閱者PM Agent
> 日期2026-04-11
> 審閱對象Design 第三輪修訂版 + Architect 第三輪修訂版
> 基準PRD v1.1(含第三輪決策 Q-A / Q-B / Q-C / Q-E1/E2/E3
---
## ✅ 對齊的項目
- **6 個核心 User StoryUS-1~US-5、US-7~US-9**Design 的 First-Runspec/04、Wireframesspec/03、狀態設計spec/08與 Architect 的 API 清單、依賴打包、lifecycle 章節皆能找到對應落地。US-6tray已在 PRD v1.1 標註移除,兩端同步刪除。
- **IA 與 Settings 四分頁**Design IA4 主區 + 一般/硬體/模型/進階)與 PRD feature-inventory 4.2 完全一致Workspace 升一級、外觀分頁取消並把語言併入一般分頁都正確落地。
- **資料目錄macOS `~/Library/Application Support/visionA-local/`**PRD、Design First-Run、Architect TDD §6Log 路徑、lifecycle §2single-instance lockapi-endpoints §3IPC port 檔案)全部一致,未見 `~/.visiona-local/` 殘留。
- **非功能需求落地**Architect 的 packaging.md 預估 ~195-210MBPRD 上限 300MB、目標 ≤ 220MB 內、Python runtime 雙策略PRD 6.3 的零預裝)、離線 wheel 安裝PRD 6.4)、只 bind 127.0.0.1PRD 6.6)、中英雙語 + 跟隨系統主題PRD 6.8)皆完整對應。
- **三平台、x86_64、無簽章**Architect D3/D4、packaging §1 與 PRD 6.5、release-strategy 一致。R3/R5 Gatekeeper / SmartScreen 的 workaround 已寫進 Design First-Run 歡迎頁 + `SignatureWarningNotice` 元件 + Architect packaging §2.5。
- **M1 一次清乾淨前端 cluster/relay UIQ-C**Architect design-doc §5 M1-7 已明確列為 M1 必做,且 Design 02-pages-diff 的刪除清單一致。
- **Tray 整條已砍Q-A**Design 05-tray.md 確認刪除、Architect `tray-and-lifecycle.md` 只保留 lifecycle 內容並加註、`server/internal/tray/` 列入 removed-code。
---
## ⚠️ 發現的問題
### 對 Design 的問題
- **D-01 [🟡 需修]** **sidebar 一級入口數量描述不一致**PRD feature-inventory 4.3 寫「sidebar 為 **5 項一級入口**Dashboard / Devices / Models / Workspace / Settings」但 Design spec/01-IA §1.2 明確把 Settings 放在 sidebar **最下方並用 divider 與主導航區隔**= 4 主 + Settings 特殊位置)。兩端語意其實一致,但字面上會引起工程師混淆。**建議 PM 端把 PRD 4.3 改為「4 個主導航 + Settings底部獨立區」與 Design 對齊**(由 PM 自行修)。
- **D-02 [🟡 需修]** **Mock 切換入口驗收條件未覆蓋 AC-2.4**PRD AC-2.4 要求「Mock 與真實模式可隨時在 Settings 切換,切換不需重啟 app」。Design design-spec.md §「待確認 #4」列出切換入口為 Settings > 硬體 + Devices 頁右上 pill + First-Run Step 2Wireframe 3.3 Devices 頁也有 pill**沒有明確說「切換不需重啟」** 這個非功能條件。建議 Design 在 spec/08-states §8.7 的「切換 Mock/Real 模式」補一句:「切換透過 /api/system/restart 或純前端 state無需關閉 app」並與 Architect 確認該 API 行為。
- **D-03 [🟢 建議]** **US-3AC-3.5 Windows UAC 說明 / AC-3.6 Linux udev 說明對話框)只散落在 First-Run Step 3 Phase 2B 的排錯清單**PRD 明確要求「顯示說明對話框」Design 只把這兩項做成「可點擊展開的排錯項目」。建議強化成 OS 偵測後的主動 modal至少首次 connect 失敗時觸發一次),與 US-3 的 AC 更精準對齊。不做不至於違反 AC 文字,但體驗上可再好一點。
- **D-04 [🟢 建議]** **Workspace wireframe 缺少 AC-5.4「即時 FPS / 延遲 / CPU / RAM 占用」的明確位置**spec/03-wireframes §3.4 Control 區只畫了 `Perf: FPS 24 / Latency: 42ms`,沒畫 CPU / RAM。建議在 Control Panel 下補一個小型資源監視區塊,或直接把 `performance-metrics` 元件畫進 wireframe避免開發階段漏做。
### 對 Architect 的問題
- **A-01 [🔴 阻斷]** **R9 Plan BKneron 授權不過 → 首次啟動線上下載)沒有落地設計**risks-and-mitigations R9 把 Plan B 寫成「改為首次啟動線上下載」,但 Architect 的 `dependency-bundling.md``packaging.md``build-pipeline.md` **完全沒有** 設計對應流程(例如:下載進度 UI、URL 設定、斷線重試、完整性 checksum、AppData 內的模型資料夾結構、跟 First-Run Step 1 的整合點)。這會讓「開發到一半才發現授權不過」變成**架構重做**的風險。**建議 Architect 補一份極簡的 R9 Plan B TDD**(不用實作,但要描述資料流與 fallback 時機),並且與 Design 討論 First-Run 要不要插入「下載模型」步驟(會影響 4.4 現有流程圖)。這一項直接影響能否安心進入開發。
- **A-02 [🟡 需修]** **Settings 頁 Server Port 改動缺 API 支援**Design spec/03-wireframes §3.5「硬體」分頁有 `Server Port預設 3721衝突時可改`,但 Architect 的 `api-endpoints.md` 保留的 `/api/system/*` 並沒有「變更 port」的 endpointpackaging / lifecycle 也沒說明變更 port 之後 Wails 殼要怎麼重新連 WebView因為 WebView URL 寫死在 lifecycle §1。建議(a) 增加 `POST /api/system/config` 或明確說明「port 只能從 Wails menu 改,改完要重啟 server」(b) 在 TDD 補一段說明 port 衝突錯誤流程PRD 5.4.1 有定義但 TDD 未對應)。
- **A-03 [🟡 需修]** **i18n 範圍未涵蓋 Wails 安裝精靈**PRD 6.8.1 + Design spec/10 要求「所有 UI 字串、錯誤訊息、First-Run 文案都需雙語」Architect `i18n.md` §1 雖然有寫「Wails app安裝精靈、錯誤對話框Go 端 i18n map」但 §2 之後只展開前端 locale 檔結構,**Go 端 i18n map 的具體實作未展開**(沒有檔案路徑、沒有 key 清單、沒有語系偵測方式)。建議補 §3「Go 端 i18n 實作」,至少說明:檔案位置、語系偵測 API、key 命名慣例。
- **A-04 [🟡 需修]** **idle 資源目標在 TDD 與 PRD 不一致**PRD 6.1 要求 Mock idle CPU ≤ 3%(上限 5%、RAM ≤ 400MB上限 500MBArchitect TDD §5 只寫「CPU < 5%、RAM < 500MB」——這是**上限**而非**目標**。會導致開發時只盯上限建議 TDD §5 補上目標值 / 上限值兩欄與 PRD 對齊
- **A-05 [🟢 建議]** **安裝時間目標PRD 6.1 ≤ 3 分鐘 / 上限 5 分鐘)在 TDD 沒有對應的技術預算拆解**Architect dependency-bundling / packaging 完全沒有解壓 90MB python + pip install 5 wheel 要花多久的估算如果最後超過 5 分鐘PRD 的北極星指標5 分鐘內跑出第一次推論 95%」會直接破功建議 Architect dependency-bundling.md 補一張各步驟時間預算表」(解壓 / venv / pip install / 啟動 server / WebView load即使是估算也好
---
## ❓ 需要使用者或三方討論的問題
1. **R9 Plan B 什麼時候要做決定**目前 R9 標為 P1 release blocker但若等到 M6 才確認 Kneron 授權屆時才發現要做 Plan B可能要延宕 1-2 個月。**建議 Orchestrator 在進入 M1 前就請使用者 / Kneron 業務啟動授權溝通**平行進行不要等
2. **port 衝突 UX 決策歸屬**PRD 5.4.1 + Design 8.2 都畫了更改 Port按鈕 Architect 沒有對應 API三方需要決定(a) 做到底 API + 重啟流程(b) 簡化為請使用者關閉占用程式後重啟」(砍掉按鈕)。Design / Architect 需同步
3. **M1 端到端 smoke test 的驗收定義**Architect M1-13 Mock 模式看到 3 台假裝置跑推論 UI 完全沒有 cluster / relay / tunnel 入口」。建議使用者 / PM 確認這個就是 M1 Definition of Done以免 M1 延伸到連真實裝置也要通」。
---
## 結論
**是否可以進入開發階段?** **有條件是**
**條件清單(照順序處理)**
1. **[阻斷] A-01**Architect R9 Plan B 的簡版設計資料流 + First-Run 整合點否則開發到後期有架構重做風險
2. **[需修] D-02 / A-02**Mock 切換與 Server Port 變更的 API / 重啟行為要三方對齊否則 Wireframe 按鈕會變成空按鈕
3. **[需修] A-03 / A-04**Architect Go i18n 實作章節TDD §5 效能目標對齊 PRD
4. **[需修] D-01**PM 自行把 PRD 4.3 sidebar 描述對齊 Design IA5 4 + Settings)。
5. **[討論] Q1 Kneron 授權**Orchestrator M1 啟動前協助使用者聯繫 Kneron 平行確認不要等到 M6
以上條件完成後三方文件可視為 ready進入 Reviewer 審查 + 開發M1階段其餘 🟢 建議項目可在 M1 / M2 迭代時處理不作為開發阻斷