feat(sf): граддокументация (статус+ПАГЕ-реквизиты) из planning_projects в analyze (#1061) #1154
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1154
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/granddoc-status-lookup"
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?
Что сделано
granddoc_lookup.py:parcel_granddoc(db, parcel_wkt)— ST_Intersects кplanning_projects, regex-парсинг ПАГЕ № + дата + предмет,is_activeфлаг, сортировка active-first / paga_date desc.ird_analyze.py:block["granddoc"] = parcel_granddoc(db, geom_wkt)рядом сplanning_projects/reservations. Docstring Returns обновлён.test_granddoc_lookup.py(13 тестов) + 2 новых теста вtest_ird_analyze.py. Все 31 тест зелёные.Источник
planning_projects(на проде, 1170 строк). Без новых миграций.Closes #1061
✅ APPROVE — граддокументация (status+ПАГЕ) в analyze (закрывает #1061).
parcel_granddoc(db, geom_wkt)— ST_Intersects к planning_projects + regex-парсинг ПАГЕ + is_active + сортировка active-first/paga_date-desc. Ключgranddocв DB-дешёвой секции, без signature-change._PAGA_RE=ПАГЕ\s*№\s*(\d+)\s+от\s+(\d{2})\.(\d{2})\.(\d{4})— линейный, без вложенных квантификаторов → нет ReDoS (в отличие от #1131)._parse_pagagraceful (ValueError на дате → None). Сортировка_neg_datesentinel корректна (active-first, свежие-первыми, None-дата в хвост)._patch_overlayпатчитparcel_granddoc→[] → existing тесты с object()-db не падают. 13 lookup + 2 analyze теста. graceful (Operational/ProgrammingError→[]), CAST psycopg v3.Merging (squash).
ℹ️ #1153 (OCR/PyMuPDF) остаётся
needs-human+blocked— жду решения по AGPL-лицензии.