|
|
0265ae2a70
|
feat: cron-based scheduler with auto-download after rescan
- Replace asyncio sleep loop with APScheduler AsyncIOScheduler + CronTrigger
- Add schedule_time (HH:MM), schedule_days (days of week), auto_download_after_rescan fields to SchedulerConfig
- Add _auto_download_missing() to queue missing episodes after rescan
- Reload config live via reload_config(SchedulerConfig) without restart
- Update GET/POST /api/scheduler/config to return {success, config, status} envelope
- Add day-of-week pill toggles to Settings -> Scheduler section in UI
- Update JS loadSchedulerConfig / saveSchedulerConfig for new API shape
- Add 29 unit tests for SchedulerConfig model, 18 unit tests for SchedulerService
- Rewrite 23 endpoint tests and 36 integration tests for APScheduler behaviour
- Coverage: 96% api/scheduler, 95% scheduler_service, 90% total (>= 80% threshold)
- Update docs: API.md, CONFIGURATION.md, features.md, CHANGELOG.md
|
2026-02-21 08:56:17 +01:00 |
|
|
|
63da2daa53
|
Add scheduler service and comprehensive unit tests
- Created src/server/services/scheduler_service.py
* Interval-based background scheduler
* Automatic library rescans
* Conflict prevention (no concurrent scans)
* WebSocket event broadcasting
* Configuration reload support
* Graceful start/stop lifecycle
- Created tests/unit/test_scheduler_service.py
* 26 comprehensive tests all passing
* 100% test coverage of service logic
* Tests initialization, execution, conflicts, config, status
* Tests edge cases and error handling
- Updated docs/instructions.md
* Marked scheduler service task as completed
* Documented 26/26 passing tests
|
2026-01-31 15:09:54 +01:00 |
|