Commit Graph

13 Commits

Author SHA1 Message Date
Misaka_Company
7a8a38a3b6 refactor: improve discrete material plan processing logic with better status handling
- Restructure conditional flow to check status before detail count
- Add handling for orders with no material plan data
- Add handling for completed orders (status=完成)
- Add warning for orders with unrecognized status
- Fix deletion condition to check for non-zero pending quantity

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-24 17:13:56 +08:00
Misaka_Company
ed7eaf038b refactor: optimize performance and code quality with significant improvements
Performance optimizations:
- Pre-load database materials into HashSet (O(1) lookup) instead of O(n) per material query
- Add 60s safety timeout on loading waits to prevent deadlocks
- Simplify navigation loop with while True pattern

Code quality improvements:
- Replace print-based logging with proper logging module
- Add _get_input_value() helper to reduce duplication
- Move all imports to top of file (re, time, TimeoutError)
- Remove redundant docstrings and consolidate logic
- Add detailed module docstring explaining optimizations

Bug fixes:
- Fix iframe variable naming conflicts (detail_main_frame, detail_inner_frame)
- Add error handling for individual order processing failures
- Simplify setup_query_interface() logic
- Change password to placeholder for security

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 13:57:59 +08:00
Misaka_Company
82819ae9d1 refactor: improve button navigation logic with proper state detection
- Add button-wrapper element locator for accessing action/navigation buttons
- Create dedicated button objects (delete, next material, collapse)
- Add _is_button_enabled() method using Playwright's is_enabled()
- Replace index-based navigation with button state-driven loop
- Add row number change detection to wait for data loading
- Simplify navigation logic with explicit button click handling

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 13:06:17 +08:00
Misaka_Company
35b568d647 feat: add cumulative pending quantity validation before material deletion
Added validation to check if cumulative pending quantity is empty before allowing material deletion, with appropriate emoji indicators for delete eligibility.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-10 17:57:03 +08:00
Misaka_Company
cff5e78c1d refactor: optimize material deletion with exact code matching and database queries
- 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>
2026-02-10 10:53:53 +08:00
Misaka_Company
2ca53f6a55 style: normalize code formatting across the codebase
- Standardize quote style (single to double quotes)
- Improve code formatting consistency
- Apply formatting to utilities, GUI components, and tools
- Update imports and docstrings for consistency

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-05 14:56:35 +08:00
Misaka_Company
c176063bfa feat: add material matching logic for discrete material plan cleaner
- Add db/materials_to_delete.py for querying materials to delete by manager
- Add manager_name parameter to DiscreteMaterialPlanCleaner
- Implement material keyword matching logic in process_order
- Update file paths from orderID.txt to ProductionID.txt

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 16:50:14 +08:00
Misaka_Company
902ff9b831 refactor: use database for production order queries
- Add db/production_order_query.py component for querying production orders
- Replace file-based orderID.txt with database-driven approach
- Read ProductionID.txt (总排号) and query [26年压力表合同数据] table
- Update both extraction and cleaning scripts to use new component
- Change parameter: order_id_file → production_id_file

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-23 16:06:40 +08:00
Misaka_Company
4b0a882b69 refactor: improve material code input selection
Replace the class-based locator strategy with a text-based filter using regex to accurately identify the material code input field. This change targets elements matching "材料编码" followed by 11 digits, increasing reliability. Also uncommented page2.pause() to assist with debugging the iteration loop.
2026-01-23 14:30:35 +08:00
Misaka_Company
ebd53b168e refactor: improve locator precision and data extraction
Refine element selection by introducing a specific parent container `.card-table-side-box` to enhance locator accuracy. Replace the previous text-parsing approach for material codes with direct input value retrieval. Additionally, add support for extracting cumulative pending and outbound quantities to improve data completeness.
2026-01-23 13:52:52 +08:00
Misaka_Company
cf88800444 feat: Check preparation status before cleaning data
Added logic to extract and validate the "Material Preparation Status" (备料状态) before modifying discrete material plans.

The cleanup process now only proceeds if the status is "审批通过" (Approval Passed). Orders with other statuses are skipped to prevent errors during modification. This change also includes code cleanup by removing commented-out debug statements.
2026-01-23 11:11:22 +08:00
Misaka_Company
201f65d715 feat: implement material plan data cleaning automation
Remove manual exit prompt in main script to allow automated execution.
Add logic in DiscreteMaterialPlanCleaner to navigate the "Material Plan" popup, handling nested iframes and waiting for data to load. Implement iteration over material details to extract codes and names, handling cases where no details exist.
2026-01-22 18:14:56 +08:00
Misaka_Company
8708709cac feat: add discrete material plan data cleaning tool
Implement a new automation script and utility to handle the cleaning of
discrete material plan maintenance data.

- Add main_clean.py as the primary entry point, configuring the cleaner
  instance and reading order IDs.
- Add DiscreteMaterialPlanCleaner in utils/ utilizing Playwright to automate
  browser interactions.
- Implement logic for user authentication (login/logout), UI setup for
  queries, and processing individual orders.
- Include verbose logging and debug mode support for troubleshooting.
2026-01-22 15:55:38 +08:00