Implement Task 3.1: Core Extractor Logic with TDD approach.
Changes:
- Add ExtractorService class with batch processing and download support
- Update ERP_LOCATORS with extractor-specific selectors from Python reference
- Add integration tests for single and multiple order extraction
- Add unit tests for batch creation logic
- Update existing tests to skip gracefully without ERP credentials
Features:
- Navigate to discrete material plan page with nested iframes
- Setup query interface (search icon, order query, limit settings)
- Batch download with configurable batch size (default: 100)
- Progress callback support for real-time updates
- Error handling for individual batch failures
- File download handling with proper wait strategies
Reference: playwrite/utils/discrete_material_plan_extractor.py
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>