abin 5aa374625f docs: add autoflow project docs and test infrastructure
- Add .autoflow/ with health check, PRD, Design Doc, TDD, progress tracking
- Add tests/conftest.py with PyQt5/KP SDK stubs for unit testing
- Add pytest config to pyproject.toml (pythonpath, import-mode, test naming)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 19:31:52 +08:00

142 lines
6.0 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.

# 專案健檢報告
## 基本資訊
- **專案名稱**Cluster4NPU UI — Visual Pipeline Designer
- **版本**v0.0.3
- **程式碼來源**:本地路徑 `C:\Users\sungs\Documents\abin\temp\cluster4npu`
- **Git 分支**developer主分支為 main
- **最後 commit**feat: Reorganize test scripts and improve YOLOv5 postprocessing
- **健檢日期**2026-04-05
---
## 技術堆疊
| 層級 | 技術 | 版本 |
|------|------|------|
| 語言 | Python | >=3.9, <3.12 |
| GUI 框架 | PyQt5 | >=5.15.11 |
| 視覺節點編輯器 | NodeGraphQt | >=0.6.40 |
| 影像處理 | OpenCV | (runtime dependency) |
| 數值運算 | NumPy | (runtime dependency) |
| 硬體 SDK | Kneron KP SDK | (runtime, NPU dongle 驅動) |
| 套件管理 | uv | — |
| 打包 | PyInstaller (main.spec) | — |
**支援硬體:** Kneron NPU dongles — KL520、KL720、KL1080
---
## 專案結構概覽
```
cluster4npu/
├── main.py # 應用程式入口點
├── config/ # 設定與主題 (settings.py, theme.py)
├── core/
│ ├── pipeline.py # Pipeline 分析、stage 偵測、驗證
│ ├── functions/
│ │ ├── InferencePipeline.py # 多 stage pipeline 執行引擎(多執行緒)
│ │ ├── Multidongle.py # NPU dongle 管理與自動偵測
│ │ ├── camera_source.py # 相機輸入來源
│ │ ├── video_source.py # 影片輸入來源
│ │ ├── result_handler.py # 推論結果處理
│ │ ├── workflow_orchestrator.py
│ │ ├── mflow_converter.py # .mflow 格式轉換
│ │ └── yolo_v5_postprocess_reference.py
│ └── nodes/ # 節點定義5 種類型)
│ ├── base_node.py
│ ├── input_node.py
│ ├── model_node.py
│ ├── preprocess_node.py
│ ├── postprocess_node.py
│ ├── output_node.py
│ ├── simple_input_node.py
│ └── exact_nodes.py
├── ui/
│ ├── windows/ # 主視窗login.py, dashboard.py, pipeline_editor.py
│ ├── components/ # 可重用元件node_palette, properties_widget, common_widgets
│ └── dialogs/ # 對話框deployment, performance, stage_config 等)
├── utils/ # 工具函式file_utils, folder_dialog, ui_utils
├── example_utils/ # 範例後處理工具ByteTrack 等)
├── tests/ # 測試腳本42 個,多為腳本式,非正式 test suite
├── resources/ # 資源檔案
└── output/ # 推論輸出結果
```
---
## 文件完整度
| 文件類型 | 狀態 | 位置 | 備註 |
|---------|------|------|------|
| README | ✅ 有 | `README.md` | 詳細,含安裝、架構說明 |
| 產品需求 / PRD | ⚠️ 部分 | `PROJECT_SUMMARY.md` | 有願景與待開發功能,但非正式 PRD 格式 |
| 開發路線圖 | ✅ 有 | `DEVELOPMENT_ROADMAP.md` | 四個 Phase有具體目標 |
| 架構設計文件 | ❌ 無 | — | README 內有簡介,但無正式 Design Doc |
| API 文件 | ❌ 無 | — | 無正式 API 文件 |
| 設計稿 | ❌ 無 | 只有 `Flowchart.jpg` | 無 Wireframe 或 UI 規格 |
| 技術設計文件 (TDD) | ❌ 無 | — | 無 |
| 測試計畫 | ❌ 無 | — | 有測試腳本但無正式測試計畫 |
| 部署文件 | ⚠️ 部分 | README 內 | 有基本步驟,無完整部署文件 |
| Release Notes | ✅ 有 | `release_note.md` | 目前到 v0.0.2 |
---
## 程式碼健康度
- **測試覆蓋率**:⚠️ 部分測試 — `tests/` 下有 42 個腳本,但多為情境測試腳本(非 pytest 單元測試),缺乏系統性覆蓋
- **程式碼品質**:中等 — 有明確的模組分離部分根目錄腳本debug_*.py, force_cleanup.py 等)為開發過程遺留,結構略混亂
- **安全性**:低風險(本地桌面應用,無網路 API
- **技術債**
- 根目錄有多個 debug/cleanup 腳本未整理
- tests/ 下腳本命名與分類混亂(部分非 test_ 開頭)
- 缺乏正式的 pytest 測試架構
---
## 現有功能清單
| 功能 | 描述 | 狀態 |
|------|------|------|
| 視覺化 Pipeline 編輯器 | 拖拽節點建立 PipelineNodeGraphQt | ✅ 完成 |
| 5 種節點類型 | Input / Preprocess / Model / Postprocess / Output | ✅ 完成 |
| Pipeline 驗證 | 即時 stage 偵測與錯誤標示 | ✅ 完成 |
| .mflow 檔案格式 | Pipeline 儲存與載入JSON | ✅ 完成 |
| 多 NPU Dongle 支援 | KL520 / KL720 / KL1080 自動偵測 | ✅ 完成 |
| 多 stage 推論引擎 | 多執行緒 Pipeline 執行 | ✅ 完成 |
| 效能監控 | FPS、延遲即時顯示 | ✅ 完成(有 known bugs |
| 相機 / 影片 / 圖片輸入 | 多種輸入來源 | ✅ 完成 |
| 專案管理 | 登入畫面、最近專案、新增/載入 Pipeline | ✅ 完成 |
| YOLOv5 後處理 | 偵測結果格式化 | ✅ 完成(最近改善) |
| ByteTrack 追蹤 | 物件追蹤後處理 | ✅ 完成example_utils |
---
## 缺失項目摘要(待開發)
根據 `PROJECT_SUMMARY.md``DEVELOPMENT_ROADMAP.md`
1. **效能視覺化**:並行 vs 循序執行比較、Speedup 指標顯示Phase 1
2. **Benchmarking 系統**自動化效能測試、圖表比較Phase 1
3. **裝置管理介面**視覺化裝置分配、負載平衡Phase 2
4. **即時監控 Dashboard**FPS/延遲圖表、資源使用率Phase 2
5. **優化引擎**自動化建議、效能預測Phase 3
已知 Bug
- 節點屬性顯示問題
- 輸出視覺化(含後處理)
---
## CI/CD 與基礎設施
| 項目 | 狀態 |
|------|------|
| Docker | ❌ 無 |
| CI/CD | ❌ 無 |
| 部署設定 | ❌ 無(本地桌面應用,有 PyInstaller spec |
| 環境變數管理 | ❌ 無 |
| 版本控制 | ✅ GitGitHub 遠端) |