Created detailed implementation guide (704 lines) for adding real-time progress
reporting to the scanning system, addressing user request to track files_scanned,
new_items, and errors during scan operations.
Problem:
- Current scan API only returns 0% then 100% progress
- No visibility into how many files have been scanned
- No tracking of new items discovered or errors encountered
- Frontend cannot display meaningful progress to users
Solution Overview:
- Extend JobResult with progress details: TotalFiles, FilesScanned, NewItems, Errors
- Add progress callback to MediaScanner for real-time updates
- Implement batching (every 10 files) to reduce mutex contention
- Update scan status API to expose new metrics
- Add comprehensive integration tests using test_helpers.go
Implementation Plan (8 steps):
1. Extend JobResult struct with new fields
2. Add progress callback mechanism to WorkerService
3. Track scan statistics in MediaScanner
4. Report progress in real-time during scan
5. Update scan status API response
6. Update unit tests
7. Add integration tests with test_helpers.go
8. Build and test in container
Key Design Decisions:
- Batch progress updates every 10 files for performance (reduces mutex contention)
- Use callback pattern to decouple scanner from job management
- Maintain backward compatibility with existing scan API
- Follow service layer pattern (no business logic in handlers)
- All integration tests use setupTestServer() from test_helpers.go
Testing Strategy:
- Unit tests for WorkerService progress tracking
- Integration tests for end-to-end scan with progress updates
- Container-only testing for scanner functionality
- Verified against PROJECT_GUIDELINES.md constraints
Document is ready for immediate implementation - all code examples included
and validated against project standards.