Часть A1 (#10 correctness): address ILIKE '%street%' давал ложные совпадения («Мира» матчит «Адмирала Макарова») → раздувало аналоги оценки. Добавлен word-boundary regex (~* :street_regex, \m..\M) рядом с ILIKE-prefilter в trade_in.py (street-deals) и estimator.py (_fetch_dkp_corridor). Bind-param, не f-string. Только предикат street-match, anchor/pricing не тронуты. Часть D (#16): cian_state_parser hand-rolled unescape был order-dependent (\" заменялся раньше \ → порча) → backslash в описании ронял парс всей страницы. Заменён на атомарный json.loads внешней quoted-строки. Тесты: «Мира»≠«Адмирала Макарова» но =«Мира 5»; backslash-в-описании парсится. 22 passed, ruff clean. A2 (trgm index) / B (FDW options) / C (matview refresh) / E (geo centroid) ОТЛОЖЕНЫ — нужна live tradein-DB / investigation (follow-up в #769). |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| admin.py | ||
| brand.py | ||
| geocode.py | ||
| me.py | ||
| search.py | ||
| trade_in.py | ||