Refactor discrete material cleaner to improve maintainability and testability:
- Introduce dependency injection pattern for service components
- Add interfaces (IPageNavigator, IMaterialExtractor, IDeletionChecker)
- Extract PageNavigator service for page navigation logic
- Extract MaterialExtractor service for data extraction
- Extract DatabaseDeletionChecker service for deletion logic
- Add MaterialInfo data model for structured data
- Centralize configuration (CleanerConfig, UIConstants)
- Implement separation of concerns across services layer
Also includes comprehensive execution mechanism documentation.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Change from fuzzy material name matching to exact material code matching
- Migrate from MaterialsTypeToBeDeleted to MaterialsToBeDeleted table
- Add should_delete_material() for on-demand database queries
- Remove in-memory material list loading to reduce memory footprint
- Update documentation to reflect new matching logic
- Remove main scripts from git tracking (contain user-specific config)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Create detailed database architecture documentation with Mermaid diagrams including:
- Class hierarchy and design patterns (Factory, DAO, Strategy, Template Method)
- Connection management flows and lifecycle
- Database table structures and entity relationships
- SQL dialect handling for SQL Server and MySQL
- Data flow and batch processing logic
- Code examples and best practices
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add MaterialsToBeDeletedDAO for managing material deletion records by MaterialCode
- Add MaterialValidationResult dataclass for enhanced validation results
- Add CheckboxTreeview component with selectable checkbox functionality
- Refactor material validation UI with new columns: select, material name, code, spec, model, manager
- Add double-click to edit manager name functionality
- Add select all/deselect all buttons
- Add confirm deletion button to write selected records to database
- Prioritize MaterialsToBeDeleted.ManagerName over type-based matching when displaying
- Export results to Excel with selection state
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>