feat: add batch processing for multiple file uploads

- Add BatchState management in taskStore with progress tracking
- Implement batch processing service with concurrency control
  - Direct Track: max 5 parallel tasks
  - OCR Track: sequential processing (GPU VRAM limit)
- Refactor ProcessingPage to support batch mode with BatchProcessingPanel
- Update UploadPage to initialize batch state for multi-file uploads
- Add i18n translations for batch processing (zh-TW, en-US)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
egg
2025-12-12 17:05:16 +08:00
parent d5bc311757
commit d20751d56b
11 changed files with 1469 additions and 5 deletions

View File

@@ -0,0 +1,43 @@
# Change: 新增批次處理功能
## Why
目前系統支援批次上傳多個檔案,但處理時需要使用者逐一點選每個任務進行處理。這對於大量文件的處理場景非常不便。需要新增批次處理功能,讓使用者可以一次設定並啟動所有上傳的任務。
## What Changes
### 1. 批次狀態管理
- 擴展 taskStore 支援批次任務追蹤
- 新增批次進度狀態(總數、已完成、處理中、失敗)
- 儲存批次統一設定
### 2. 批次處理邏輯
- 上傳完成後分析所有檔案決定處理軌道
- 根據軌道類型分流處理:
- Direct Track最多 5 個並行CPU 運算)
- OCR Track單一佇列GPU VRAM 限制)
- 兩類任務可同時進行
### 3. 批次設定 UI
- 修改 ProcessingPage 支援多任務模式
- 統一設定介面:
- 處理策略(自動判斷/強制 OCR/強制 Direct
- Layout ModelOCR 專用)
- 預處理模式OCR 專用)
- 批次進度顯示(整體進度 + 各任務狀態)
### 4. 處理策略
- **自動判斷**(推薦):系統分析每個檔案後自動選擇最佳 track
- **全部 OCR**:強制所有檔案使用 OCR track
- **全部 Direct**:強制所有 PDF 使用 Direct track
## Impact
- Affected specs: frontend-ui (修改)
- Affected code:
- `frontend/src/store/taskStore.ts` - 擴展批次狀態
- `frontend/src/pages/ProcessingPage.tsx` - 支援多任務處理
- `frontend/src/pages/UploadPage.tsx` - 傳遞多任務 ID
- `frontend/src/services/apiV2.ts` - 新增批次處理輔助函數
- `frontend/src/i18n/locales/*.json` - 新增翻譯
- 後端無需改動(利用現有 API