fix(tradein/avito): рейтинг дома перестаёт уезжать в адрес объявления (#2814) #2815

Merged
bot-backend merged 1 commit from fix/2814-avito-address-rating-tail into main 2026-08-10 09:47:16 +00:00
Collaborator

Замер, тест и разбор — в #2814.

Одна строка регулярки + тест. Режем хвост «·<цифра>» (рейтинг дома «·4,9», счётчик «·2 отзыва»), который Авито с 27.07 рендерит внутри того же <p>, откуда берётся адрес.

Прод 2026-08-10: 1 123 активных объявления с таким адресом, у 1 123 из них нет координат — доля 100%; у чистых адресов координаты есть у 4 766 из 5 715. Строка без geom молча выпадает из comp-пула (Tier W берёт через ST_DWithin), а это 12.7% свежих аналогов.

По любой «·» резать нельзя — разделитель района пишется «, 59 · р-н Академический», за точкой буква; тест test_district_marker_after_dot_survives держит эту границу, плюс три прежних хвоста (CSS/метро/«от N мин.») проверены на регрессию.

Чинит только новые вставки — base.py не перезаписывает адрес при конфликте осознанно (#2777). Бэкфилл 1 123 существующих строк оставлен в #2814 для database-expert.

Замер, тест и разбор — в #2814. **Одна строка регулярки + тест.** Режем хвост «·<цифра>» (рейтинг дома «·4,9», счётчик «·2 отзыва»), который Авито с 27.07 рендерит внутри того же `<p>`, откуда берётся адрес. Прод 2026-08-10: **1 123 активных объявления с таким адресом, у 1 123 из них нет координат — доля 100%**; у чистых адресов координаты есть у 4 766 из 5 715. Строка без `geom` молча выпадает из comp-пула (Tier W берёт через `ST_DWithin`), а это 12.7% свежих аналогов. По любой «·» резать нельзя — разделитель района пишется «, 59 · р-н Академический», за точкой буква; тест `test_district_marker_after_dot_survives` держит эту границу, плюс три прежних хвоста (CSS/метро/«от N мин.») проверены на регрессию. Чинит только новые вставки — `base.py` не перезаписывает адрес при конфликте осознанно (#2777). Бэкфилл 1 123 существующих строк оставлен в #2814 для database-expert.
bot-backend added 1 commit 2026-08-10 09:32:45 +00:00
fix(tradein/avito): рейтинг дома перестаёт уезжать в адрес объявления (#2814)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 9s
CI / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m50s
CI Trade-In / frontend-checks (pull_request) Has been skipped
ab5c4b86cd
Авито с 27.07 рендерит рейтинг и число отзывов внутри того же <p> в
data-marker="item-location", откуда serp.py берёт адрес: «ул. Ткачей,17·5,0 · 4
отзыва». Прод 2026-08-10: 1 123 активных объявления с таким адресом, и у 1 123 из
1 123 нет координат — доля 100%, 711 из них геокодер уже пробовал. Контроль в тех
же данных: у чистых адресов координаты есть у 4 766 из 5 715 (83%).

Строка без geom молча выпадает из comp-пула: Tier W отбирает через ST_DWithin, а
NULL не проходит предикат и нигде не считается. 2 446 из 3 270 безкоординатных
попадают в свежий пул аналогов — 12.7% аналогов невидимы радиусному поиску.

Режем по «·», за которой идёт ЦИФРА (рейтинг «·4,9», счётчик «·2 отзыва»). По
любой «·» нельзя: разделитель района пишется «, 59 · р-н Академический» — за
точкой буква, и этот хвост _deglue_house_marker намеренно сохраняет (#1773).
Тест проверяет обе стороны плюс три прежних хвоста (CSS, метро, «от N мин.»).

Чинит только новые вставки: base.py пишет address = COALESCE(listings.address,
EXCLUDED.address), адрес при конфликте не перезаписывается осознанно (#2777).
Бэкфилл 1 123 существующих строк вынесен в #2814 для database-expert.
bot-backend merged commit 5ee4126ed0 into main 2026-08-10 09:47:16 +00:00
bot-backend deleted branch fix/2814-avito-address-rating-tail 2026-08-10 09:47:18 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2815
No description provided.