gendesign/tradein-mvp/backend/app
bot-backend dffe1ccc18 fix(tradein): data-layer tail A2+B+C — trgm index, FDW options, matview refresh (Refs #769)
Хвост #769 (A1+D смержены #798; E отложен — geo-radius client-risk).

A2 (#10 index): 086 — pg_trgm GIN индекс на deals.address (был seq-scan на
street-match). Идемпот (IF NOT EXISTS), plain CREATE INDEX (txn-safe).

B (#13 FDW): 087 — ALTER SERVER gendesign_remote OPTIONS fetch_size=10000 +
use_remote_estimate=true (лучше планируется 6.8M-row FDW import). DO-block
читает srvoptions → ADD-or-SET, идемпотентно.

C (#14 matview): listings_search_mv активно читается search_query.py но НИКОГДА
не рефрешился (refresh_search_matview.py существует, в beat/scheduler не было).
scheduler.py: + trigger_refresh_search_matview_run (по образцу asking_to_sold,
через _claim_run advisory-lock #750, run_in_executor — refresh CONCURRENTLY с
autocommit). 088 — seed scrape_schedules (03:00-04:00 UTC ночь, ON CONFLICT DO
NOTHING). ruff clean.

Post-deploy QA: EXPLAIN deals street-query → Bitmap Index Scan; FDW remote-estimate.
2026-05-30 20:38:32 +03:00
..
api fix(tradein): word-boundary street match + cian unescape robustness (Refs #769 A1+D) (#798) 2026-05-30 17:18:33 +00:00
core fix(ratio): ppm² потолок asking→sold в конфиг, default 1.2M (Refs #767) (#790) 2026-05-30 16:57:09 +00:00
observability feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00
schemas docs(tradein): clarify n_analogs vs analogs[] top-10 cap (#698) (#737) 2026-05-30 15:00:48 +00:00
services fix(tradein): data-layer tail A2+B+C — trgm index, FDW options, matview refresh (Refs #769) 2026-05-30 20:38:32 +03:00
tasks fix(ratio): ppm² потолок asking→sold в конфиг, default 1.2M (Refs #767) (#790) 2026-05-30 16:57:09 +00:00
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
main.py feat(tradein): enrich GlitchTip SDK init — integrations + PII scrub (#396) (#643) 2026-05-29 09:23:17 +00:00