feat: fuzzy matcher v2 — Objective mapping coverage 8.5%→20% #286
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#286
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/fuzzy-matcher-v2-coverage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Task #44 Part A — re-trigger Objective↔DOM.РФ mapping pipeline + добавить v2 pruned-threshold mode.
Discovery: existing
objective_backfill.py(pg_trgm in-DB similarity, не rapidfuzz) никогда не запускался на проде — zerofuzzy_trgmrows. DB audit 2026-05-17: 1068 EKB obj unmapped.Audit (DB, EKB region_cd=66)
is_reviewed=false)Expected after both runs: 129 (existing) + 133 (v1) + 47 (v2) ≈ 309 / 1516 ≈ 20% coverage (вместо текущих 8.5%).
Changes
backend/app/services/etl/objective_backfill.py:AUTO_ACCEPT_THRESHOLD_V2 = 0.80constantmin_thresholdparam onfind_match_candidates()(default 0.6)match_methodparam onauto_apply_matches()(default'fuzzy_trgm')backend/app/api/v1/admin_etl.py:?v2=truequery param наPOST /api/v1/admin/etl/objective-backfill— threshold=0.80, method=fuzzy_v2, search range 0.80–1.0threshold_used+match_method_usedдля audit trailfixes/Fix_Mapping_Coverage_Fuzzy_v2_May17.mdHow to trigger after merge (sequential)
Verify after run
Risk
fuzzy_v2rows (0.80–0.85) — higher false-positive risk, все сis_reviewed=falseдля review queuefuzzy_trgmrows (0.85+) — безопасны для auto-use в velocity calculationsON CONFLICT (objective_complex_name, objective_group) DO NOTHINGRelated: task #44 Part A · prerequisite for Part D (SF#17 rosreestr fallback)
Merged via deep-code-reviewer — verdict APPROVE.
Проверено:
CAST(:x AS type)clean (нет::traps)with db.begin_nested()per-row)dict[str, object]корректен (новые float/str поля)match_methodcolumn — TEXT (не ENUM) → значение'fuzzy_v2'ОК без миграцииfixes/Fix_Mapping_Coverage_Fuzzy_v2_May17.mdexistsRequired manual steps (post-deploy):
Verify через SQL tunnel (
localhost:15432):Followups (отдельными задачами):
fuzzy_v2rows сis_reviewed=false— 47 строк без процесса review накопятся как technical debt. Опционально: фильтр в velocity query наis_reviewed=true OR match_score >= 0.85(consistent с PR #288data_confidencepattern).mv_layout_velocitydefinition — учитывает ли онis_reviewed? Если no — v2 rows влияют на velocity сразу после REFRESH.code/modules/Objective_Backfill_ETL.mdотсутствует — добавить при следующем касании модуля.