feat(sql): conservative trgm backfill objective_complex_mapping +23 (#307 OBJ-2) #1331

Merged
bot-backend merged 1 commit from feat/obj2-trgm-mapping-backfill into main 2026-06-14 15:51:39 +00:00
Collaborator

Summary

Консервативный pg_trgm backfill objective_complex_mapping (#307 OBJ-2): +23 near-exact (sim=1.000) матча objective→DOM.РФ, которые миграция 150 пропустила из-за Latin/Cyrillic шума в dev-строке (TEN→ТЭН, FORTIS→Фортис, и т.п.).

  • Калибровка: tiered accept + generic-name stoplist guard — ловит FP-риск (напр. «Солнечный» Клевер→Астра — разные застройщики, общее имя → НЕ пишем). Precision ≈1.0 на этом P0-пути (feeds mv_layout_velocity).
  • 23 вставки, все nsim=1.000, distinct obj_id, is_reviewed=false (флаг на ручное подтверждение). 133 оставлены на manual (19 без DOM.РФ-кандидата, 6 generic-guarded, 108 mid/low). 18/23 сразу расширяют velocity MV (есть deal-данные за 24мес).
  • Реальный пул — 156 distinct unmapped имён под group=Екатеринбург (MV джойнит по имени, unique key (objective_complex_name, objective_group)), НЕ 302 project_id (раздуто дублями имён).
  • GIN trgm индекс на domrf_kn_objects.comm_name (существующий GIST partial WHERE is_ekb=true покрывает 0 строк latest-snapshot).
  • MV REFRESH ... CONCURRENTLY после COMMIT (как миграция 150; не блокирует readers).

Test plan

  • idempotency: прогон тела дважды в BEGIN…ROLLBACK на проде → INSERT 0 23 затем INSERT 0 0
  • precision-аудит 23 матчей (полный список в issue-комменте для ручной сверки)
  • EXPLAIN: GIN индекс используется %-оператором; MV refresh CONCURRENTLY валиден (unique pk)
  • database-expert (специалист по SQL) — глубокая валидация на проде read-only
  • post-deploy: SELECT count(*) FROM objective_complex_mapping = 286 (263+23); Малевич/новые ЖК в SF velocity

Note

Прод не тронут (разработка в ROLLBACK). is_reviewed=false — 23 матча помечены на ручное подтверждение. Остаток 133 задокументирован для будущего manual-прохода. OBJ-1 (bank_name) — нужен re-scrape (proxy), OBJ-3 (price-source migration) — отдельно.

Refs #307

## Summary Консервативный pg_trgm backfill `objective_complex_mapping` (#307 OBJ-2): **+23 near-exact (sim=1.000) матча** objective→DOM.РФ, которые миграция 150 пропустила из-за Latin/Cyrillic шума в dev-строке (TEN→ТЭН, FORTIS→Фортис, и т.п.). - **Калибровка**: tiered accept + **generic-name stoplist guard** — ловит FP-риск (напр. «Солнечный» Клевер→Астра — разные застройщики, общее имя → НЕ пишем). Precision ≈1.0 на этом P0-пути (feeds `mv_layout_velocity`). - **23 вставки**, все `nsim=1.000`, distinct obj_id, `is_reviewed=false` (флаг на ручное подтверждение). **133 оставлены на manual** (19 без DOM.РФ-кандидата, 6 generic-guarded, 108 mid/low). 18/23 сразу расширяют velocity MV (есть deal-данные за 24мес). - Реальный пул — 156 distinct unmapped **имён** под group=Екатеринбург (MV джойнит по имени, unique key `(objective_complex_name, objective_group)`), НЕ 302 project_id (раздуто дублями имён). - GIN trgm индекс на `domrf_kn_objects.comm_name` (существующий GIST partial `WHERE is_ekb=true` покрывает 0 строк latest-snapshot). - MV `REFRESH ... CONCURRENTLY` после COMMIT (как миграция 150; не блокирует readers). ## Test plan - [x] idempotency: прогон тела дважды в BEGIN…ROLLBACK на проде → `INSERT 0 23` затем `INSERT 0 0` - [x] precision-аудит 23 матчей (полный список в issue-комменте для ручной сверки) - [x] EXPLAIN: GIN индекс используется `%`-оператором; MV refresh CONCURRENTLY валиден (unique pk) - [x] database-expert (специалист по SQL) — глубокая валидация на проде read-only - [ ] post-deploy: `SELECT count(*) FROM objective_complex_mapping` = 286 (263+23); Малевич/новые ЖК в SF velocity ## Note Прод не тронут (разработка в ROLLBACK). `is_reviewed=false` — 23 матча помечены на ручное подтверждение. Остаток 133 задокументирован для будущего manual-прохода. OBJ-1 (bank_name) — нужен re-scrape (proxy), OBJ-3 (price-source migration) — отдельно. Refs #307
bot-backend added 1 commit 2026-06-14 15:42:33 +00:00
feat(sql): conservative trgm backfill of objective_complex_mapping (#307 OBJ-2)
All checks were successful
CI / changes (push) Successful in 7s
CI / frontend-tests (push) Has been skipped
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (push) Successful in 1m53s
CI / openapi-codegen-check (pull_request) Successful in 1m53s
CI / backend-tests (push) Successful in 8m49s
CI / backend-tests (pull_request) Successful in 8m46s
b421f62b3c
Add 23 near-exact (sim=1.000) objective->DOM.РФ mappings that migration 150's
dev-corroboration gate missed due to Latin/Cyrillic dev-string noise
(TEN->ТЭН, FORTIS->Фортис). Tiered accept rule with a generic-name stoplist
guard keeps precision ~1.0 on a P0 path feeding mv_layout_velocity. Add
non-partial GIN trgm index on domrf_kn_objects.comm_name (existing GIST index
is partial WHERE is_ekb=true, covers 0 latest-snapshot rows). Idempotent
(ON CONFLICT DO NOTHING), MV refreshed CONCURRENTLY post-commit. All matches
is_reviewed=false for manual sign-off.

Refs #307
bot-backend merged commit f9dd903f4d into main 2026-06-14 15:51:39 +00:00
bot-backend deleted branch feat/obj2-trgm-mapping-backfill 2026-06-14 15:51:39 +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#1331
No description provided.