Some checks failed
NTFY Notification / notify (push) Failing after 3s
Fix critical bug in BOM matching validation: when [部件] worksheet matches 1 record
but returns 2 sub-components, system incorrectly reports "matched 2 records".
Root Cause:
- matchResult("rowCount") incorrectly used componentMaterials.count (material count)
- instead of bomMatchResult("rowCount") (worksheet row count)
- Caused 1-row match returning 2 sub-components to be misreported as "2 matches"
Solution:
1. M08_ComponentProcessor.ProcessComponentRecord: Add matchedRowNum parameter,
receive matched row number from caller, avoid redundant internal matching
2. M09_BOMExtractor: Implement two-phase matching flow
- Phase 1: Call MatchBOMRecord to get standard match result (with correct rowCount)
- Phase 2: If match succeeds, call ProcessComponentRecord to process component logic
- matchResult("rowCount") always uses standard match's rowCount (worksheet row count)
Fix Results:
- Scenario 1: [部件] matches 1 row, returns 1 component → rowCount=1 ✅
- Scenario 2: [部件] matches 1 row, returns 2 sub-components → rowCount=1 ✅ (no false positive)
- Scenario 3: [部件] matches 0 rows → rowCount=0, correct error ✅
- Scenario 4: [部件] matches 2+ rows → rowCount=2, correct error ✅
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>