Multi-Source Integration Phase 3.2. /api/v1/search with cross-source filters + POST body params + Redis 5min hot cache. New files: app/schemas/search.py — SearchParams (~20 filters, Pydantic v2) app/schemas/search_response.py — SearchResponse + SearchResultItem app/services/search_query.py — build_search_query (psycopg v3, CAST(:x AS type)) app/services/cache.py — SearchCache async wrapper (singleton lru_cache) app/api/v1/search.py — POST /search endpoint tests/test_search_api.py — unit + integration tests Edited: app/main.py — include search.router prefix=/api/v1 app/core/config.py — settings.redis_url default pyproject.toml — add redis>=5.0.0 Queries listings_search_mv (matview from PR #469). Cache failures swallowed (degrade to slow-but-correct). Sort whitelisted dict (no SQL injection). Refs Master Plan sec 9.1 + 7.2. |
||
|---|---|---|
| .. | ||
| v1 | ||
| __init__.py | ||