street_sales_vs_listings() строила пары ДКП-сделка/объявление только по
совпадению улицы (ILIKE) + rooms + area + дата — без корреляции города.
deals.address/listings.address хранят "<Город>, <Улица>", а street_pattern —
голое имя улицы, которое одинаково матчит одноимённые улицы разных городов
обл.66. Прод-репро: Нижний Тагил + Ленина, rooms=2, area~44.3 — 4 из 8
сделок получали listing-match из другого города, median_discount_pct
уезжал в -44.7% (широкая выборка по всем городам с этой улицей: -63.6%).
Фикс зеркалит уже принятый паттерн /street-deals (#C1): target_city
резолвится через _resolve_target_city(address) и передаётся в TVF
седьмым параметром (DEFAULT NULL — обратная совместимость). deals-сторона
фильтруется строго (city заполнена на 100%), listings-сторона терпима к
NULL (city заполнена частично: avito 63%, yandex 19%, cian 4.6%, domklik
0.6%, n1 0%) — симметрично паттерну asking_to_sold_ratio.py (#2583 H2).