feat(etl): гео-проход auto_core_geo_v6 для tier_b/ambiguous mapping (#2177 остаток) #2244

Merged
bot-backend merged 1 commit from feat/mapping-geo-pass into main 2026-07-03 01:19:59 +00:00
Collaborator

Summary

  • Остаток core-pass (tier_b=31 без dev-подтверждения, ambiguous=14) решается географией: mode-адрес objective-проекта → DaData /clean/address → haversine до domrf-точки latest-снапшота. tier_b confirm ≤500 м; ambiguous — ровно один кандидат в радиусе и геокодились все кандидаты ядра (guard по ревью: «один в радиусе» при негеокодящемся соседе — артефакт отсутствия данных → reject partial_geocode, слепой confirm запрещён; регрессия-тест).
  • Новый минимальный sync DaData-клиент в gendesign backend (httpx, Token+X-Secret как в tradein-эталоне, graceful None на всё, секреты не логируются); env DADATA_* на проде уже есть (проверено). Кэш геокода + cap 200 вызовов/прогон (платный тариф).
  • CLI --geo-pass [--apply] [--max-distance-m], дефолт dry-run; apply — method auto_core_geo_v6, score 0.80, note с дистанцией, SAVEPOINT + ON CONFLICT DO NOTHING (идемпотентно, ре-ран видит свежие tier_a строки).

Test plan

  • 56 тестов (haversine, confirm/reject по дистанции, ambiguous-резолв/оба-в-радиусе/partial_geocode, cap LIMIT+2, dry-run/apply, DaData-моки), ruff clean
  • code-reviewer ⚠️→resolved (blind-confirm guard добавлен с регрессией; секреты/квота/SQL проверены)
  • post-merge: прод dry-run (дистанции глазами) → apply → счётчик auto_core_geo_v6 в mapping

Refs #2177

## Summary - Остаток core-pass (tier_b=31 без dev-подтверждения, ambiguous=14) решается географией: mode-адрес objective-проекта → **DaData /clean/address** → haversine до domrf-точки latest-снапшота. tier_b confirm ≤500 м; ambiguous — ровно один кандидат в радиусе **и геокодились все кандидаты ядра** (guard по ревью: «один в радиусе» при негеокодящемся соседе — артефакт отсутствия данных → reject `partial_geocode`, слепой confirm запрещён; регрессия-тест). - Новый минимальный sync DaData-клиент в gendesign backend (httpx, Token+X-Secret как в tradein-эталоне, graceful None на всё, секреты не логируются); env DADATA_* на проде уже есть (проверено). Кэш геокода + **cap 200 вызовов/прогон** (платный тариф). - CLI `--geo-pass [--apply] [--max-distance-m]`, дефолт dry-run; apply — method `auto_core_geo_v6`, score 0.80, note с дистанцией, SAVEPOINT + ON CONFLICT DO NOTHING (идемпотентно, ре-ран видит свежие tier_a строки). ## Test plan - [x] 56 тестов (haversine, confirm/reject по дистанции, ambiguous-резолв/оба-в-радиусе/partial_geocode, cap LIMIT+2, dry-run/apply, DaData-моки), ruff clean - [x] code-reviewer ⚠️→resolved (blind-confirm guard добавлен с регрессией; секреты/квота/SQL проверены) - [ ] post-merge: прод dry-run (дистанции глазами) → apply → счётчик auto_core_geo_v6 в mapping Refs #2177
bot-backend added 1 commit 2026-07-03 01:05:02 +00:00
feat(etl): гео-проход auto_core_geo_v6 (#2177 остаток)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 6s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m45s
CI / backend-tests (pull_request) Successful in 14m3s
18a2cf0d2e
bot-backend merged commit 031bafde86 into main 2026-07-03 01:19:59 +00:00
bot-backend deleted branch feat/mapping-geo-pass 2026-07-03 01:19:59 +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#2244
No description provided.