Display error messages as separate sections with code blocks instead of
table rows. This improves readability for long error messages that would
overflow in table cells.
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
Track materials that are not in the delete list and display them in
a new "未处理物料" (Unmatched Materials) section in the report.
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
Wrap the order processing logic in try-finally to guarantee cleanup
of the popup page regardless of whether processing succeeds or fails.
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
- Add ExecutionConfig for dryrun settings in config schema
- Create DeleteProgressWindow widget for real-time progress display
- Integrate delete execution flow in MaterialValidationTab with threading
- Add dryrun checkbox for admin users in settings
- Add progress callback support to DiscreteMaterialPlanCleaner
- Add markdown report generation with statistics
- Include tkinterweb and markdown2 dependencies for report rendering
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
Add dryrun boolean parameter to DiscreteMaterialPlanCleaner.
When dryrun=True, the save_button_locator.click() is skipped,
allowing preview of changes without actually saving.
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
- Add get_materials_to_delete_by_managers() function in db/materials_to_delete.py
- Supports querying by single manager, multiple managers, or all managers
- Uses IN clause for multi-manager queries
- Refactor DiscreteMaterialPlanCleaner to accept manager_names parameter
- Accepts str, List[str], or None (for all managers)
- Automatically normalizes parameter types in __init__
- Updates preload_data() with appropriate log messages
Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
This change adds robust wait mechanisms to prevent race conditions when
performing delete and save operations in the ERP system.
Changes:
- Add row number change detection after delete to confirm completion
- Add save button disappearance detection to confirm save completion
- Add row number range check (7000-8000) to skip specific rows
- Enable previously commented save button click
- Improve logging with detailed status messages
- Add timeout handling (10s for delete, 60s for save)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Apply consistent code formatting including:
- Single quotes to double quotes for string literals
- Multi-line formatting for long expressions
- Trailing whitespace cleanup
- Blank line adjustments for PEP 8 compliance
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Rename utility files to use English names for better cross-platform compatibility:
- utils/离散备料计划维护数据提取.py → utils/discrete_material_plan_extractor.py
- utils/离散备料计划维护数据清理.py → utils/discrete_material_plan_cleaner.py
Update all import statements across the codebase and documentation references.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>