ee0b9466d4
Fixed two critical bugs in filter_deals_by_criteria(): Bug #1: CRASH on None property type - Issue: Code called .lower() on None when propertyTypeDescription was null - Impact: Would crash MCP tool in production with incomplete data - Fix: Check if deal_type is None/empty before calling .lower() Bug #2: Missing data passes through filters - Issue: Deals with None/missing values passed filters when they shouldn't - Example: Filtering by area=60-70 would include deals with assetArea=None - Impact: get_valuation_comparables returned inflated results with bad data - Fix: Explicitly check for None when filter is active and exclude those deals Changes: - Property type filter: Check for None/empty before normalization - Area filter: Exclude deals with missing area when min/max_area specified - Room filter: Exclude deals with missing rooms when min/max_rooms specified - Price filter: Exclude deals with missing price when min/max_price specified - Invalid data: Changed from 'pass' to 'continue' to exclude bad data Added 6 comprehensive unit tests: - test_filter_excludes_missing_property_type - test_filter_excludes_missing_area - test_filter_excludes_missing_rooms - test_filter_excludes_missing_price - test_filter_excludes_invalid_numeric_data - test_filter_allows_missing_data_when_no_filter This fixes the E2E issue where get_valuation_comparables was returning incomplete results. Now filters properly exclude deals with missing data. Test results: 34/34 passing (6 new tests added) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>