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:
@@ -89,3 +89,100 @@ The application MAY display:
|
||||
- **WHEN** any page describes product features
|
||||
- **THEN** the descriptions are factual and verifiable
|
||||
|
||||
### Requirement: Batch Processing Support
|
||||
|
||||
The system SHALL support batch processing of multiple uploaded files with a single configuration.
|
||||
|
||||
After uploading multiple files, the user SHALL be able to:
|
||||
- Configure processing settings once for all files
|
||||
- Start processing all files with one action
|
||||
- Monitor progress of all files in a unified view
|
||||
|
||||
#### Scenario: Multiple files uploaded
|
||||
- **WHEN** user uploads multiple files
|
||||
- **AND** navigates to processing page
|
||||
- **THEN** the system displays batch processing mode
|
||||
- **AND** shows all pending tasks in a list
|
||||
|
||||
#### Scenario: Batch configuration
|
||||
- **WHEN** user is in batch processing mode
|
||||
- **THEN** user can select a processing strategy (auto/OCR/Direct)
|
||||
- **AND** user can configure layout model for OCR tasks
|
||||
- **AND** user can configure preprocessing for OCR tasks
|
||||
- **AND** settings apply to all applicable tasks
|
||||
|
||||
---
|
||||
|
||||
### Requirement: Batch Processing Strategy
|
||||
|
||||
The system SHALL support three batch processing strategies:
|
||||
|
||||
1. **Auto Detection** (default): System analyzes each file and selects optimal track
|
||||
2. **Force OCR**: All files processed with OCR track
|
||||
3. **Force Direct**: All PDF files processed with Direct track
|
||||
|
||||
#### Scenario: Auto detection strategy
|
||||
- **WHEN** user selects auto detection strategy
|
||||
- **THEN** the system analyzes each file before processing
|
||||
- **AND** assigns OCR or Direct track based on file characteristics
|
||||
|
||||
#### Scenario: Force OCR strategy
|
||||
- **WHEN** user selects force OCR strategy
|
||||
- **THEN** all files are processed using OCR track
|
||||
- **AND** layout model and preprocessing settings are applied
|
||||
|
||||
#### Scenario: Force Direct strategy
|
||||
- **WHEN** user selects force Direct strategy
|
||||
- **AND** file is a PDF
|
||||
- **THEN** the file is processed using Direct track
|
||||
|
||||
---
|
||||
|
||||
### Requirement: Parallel Processing Limits
|
||||
|
||||
The system SHALL enforce different parallelism limits based on processing track:
|
||||
|
||||
- Direct Track: Maximum 5 concurrent tasks (CPU-based)
|
||||
- OCR Track: Maximum 1 concurrent task (GPU VRAM constraint)
|
||||
|
||||
Direct and OCR tasks MAY run simultaneously as they use different resources.
|
||||
|
||||
#### Scenario: Direct track parallelism
|
||||
- **WHEN** batch contains multiple Direct track tasks
|
||||
- **THEN** up to 5 tasks process concurrently
|
||||
- **AND** remaining tasks wait in queue
|
||||
|
||||
#### Scenario: OCR track serialization
|
||||
- **WHEN** batch contains multiple OCR track tasks
|
||||
- **THEN** only 1 task processes at a time
|
||||
- **AND** remaining tasks wait in queue
|
||||
|
||||
#### Scenario: Mixed track processing
|
||||
- **WHEN** batch contains both Direct and OCR tasks
|
||||
- **THEN** Direct tasks run in parallel pool (max 5)
|
||||
- **AND** OCR tasks run in serial queue (max 1)
|
||||
- **AND** both pools operate simultaneously
|
||||
|
||||
---
|
||||
|
||||
### Requirement: Batch Progress Display
|
||||
|
||||
The system SHALL display unified progress for batch processing.
|
||||
|
||||
Progress display SHALL include:
|
||||
- Overall progress (completed / total)
|
||||
- Count by status (processing, completed, failed)
|
||||
- Individual task status list
|
||||
- Estimated time remaining (optional)
|
||||
|
||||
#### Scenario: Batch progress monitoring
|
||||
- **WHEN** batch processing is in progress
|
||||
- **THEN** user sees overall completion percentage
|
||||
- **AND** user sees count of tasks in each status
|
||||
- **AND** user sees status of each individual task
|
||||
|
||||
#### Scenario: Batch completion
|
||||
- **WHEN** all tasks in batch are completed or failed
|
||||
- **THEN** user sees final summary
|
||||
- **AND** user can navigate to results page
|
||||
|
||||
|
||||
Reference in New Issue
Block a user