fix(ptica): тип постановления — по первому упоминанию, а не по порядку проверок (#2464) #2980
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#2980
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/2464-detect-kind"
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?
Дефект
_detect_kindпроверял «резервир» первым и возвращалрезервированиебезусловно:Постановление об изъятии, где резервирование упомянуто вскользь — типовая формулировка «ранее зарезервированных земель», ссылка на утративший силу акт о резервировании — классифицируется как резервирование.
Ошибка не единичная.
kindвextract_reservationsвычисляется один раз на весь документ и проставляется каждой записи:Один документ с 40 участками → 40 неверных строк в
land_reservation.Правка
Побеждает то слово, что встретилось раньше. Тема документа стоит в заголовке, поэтому позиция — сигнал сильнее порядка проверок.
Важно, что решение симметрично: заголовок «О резервировании» так же выигрывает у «изъятия» в теле («зарезервированные участки не подлежат изъятию»). Простая смена порядка проверок дала бы обратный перекос — на это поставлен отдельный контроль.
Текущих ошибок на проде нет — измерено
Уточняю первую редакцию этого описания: 27 строк в
land_reservationне проходили через этот парсер. Они из другой трубы.izyatie_ocr.pyвообще не зовёт_detect_kind— он ставитreservation_kind = "изъятие"константой. То есть парсер из этого PR не записал на прод ни одной строки, и текущей порчи от дефекта нет по той же причине, по какой нет и данных.Правка закрывает возможность, а не чинит существующую порчу — говорю это прямо, чтобы никто не записал сюда прод-победу.
Отдельная находка по ходу проверки, к этому PR не относится: у всех 27 строк OCR-пути
act_dateвзята из первого попавшегося «от DD.MM.YYYY» в тексте, и 11 строк из двух разных документов (развязка на Сибирском тракте и улица Энергостроителей) делят одну дату 2004-07-06 при проектах 2019-х годов. Выношу отдельно.Как проверено
origin/mainдва теста красные с конкретным неверным значением:assert 'резервирование' == 'изъятие'.test_rezervirovanie_in_title_still_wins) зелёный с обеих сторон — он бы покраснел на «починке» через смену порядка проверок.test_all_parcels_of_the_document_are_affected) идёт черезextract_reservationsна трёх реальных кад-номерах с прода: показывает, что ошибка уходит во все строки, а не в одну.default_kind— зелёные с обеих сторон.basis_act: «Сообщение о планируемом изъятии земельных участков…»).pytest backend/tests/services/scrapers/— 310 passed, 6 skipped. Существующие 14 тестов парсера не тронуты.Часть эпика #2464.