Three-pronged fix for duplicate listings appearing in the UI: 1. Backend: Replace direct rpush cache writes with staged population (write to temp key, then atomic RENAME to live key). Skip cache writes entirely for POI-enriched requests. Clean staging keys on invalidation. 2. Frontend: Add AbortController to cancel in-flight streaming requests when loadListings is called again, preventing data mixing. 3. Frontend: Deduplicate features by URL during stream accumulation as a safety net against any remaining server-side duplicates. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| district_service.py | ||
| export_service.py | ||
| floorplan_detector.py | ||
| image_fetcher.py | ||
| listing_cache.py | ||
| listing_fetcher.py | ||
| listing_service.py | ||
| passkey_service.py | ||
| poi_distance_calculator.py | ||
| poi_service.py | ||
| query_splitter.py | ||
| route_calculator.py | ||
| task_service.py | ||