feat(sf): прогрев zone_regulation_cache по терзонам ЕКБ (#1059/C8b) #1106
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#1106
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/1059-zone-regulation-refresh"
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?
Дополняет C8b (#1099): проактивно наполняет
zone_regulation_cache, чтобы analyze отдавалird.zone_regulationиз кэша (быстро), без live-urbanCard в hot-пути.Проблема
zone_regulation_cache(м.133) наполняется лениво — первый запрос участка в незакэшированной зоне платит за live-urbanCardгеопортала. Кэш сейчас пуст.Решение
backend/app/workers/tasks/zone_regulation_refresh.py— Celeryrefresh_zone_regulations: WFS-перечисление всех терзон ЕКБ (territorial_zone) → дедуп поurban_index→ репрезентативная точка зоны (shapely.representative_point, гарантированно внутри полигона) →zone_regulation_at(urbanCard) →upsert_zone_regulation.celery_app.pyinclude +beat_schedule.pyzone-regulation-refresh-monthly(1-е число 06:30 МСК, после planning).Валидация
pytest test_zone_regulation_refresh.py→ 4 passed (дедуп по индексу, skip пустых/битых геометрий, representative_point внутри полигона).ruffclean; beat:zone-regulation-refresh-monthlyзарегистрирован.zone_regulation_cacheм.133). Зависит от TLS-фикса #1103 (merged).Scope
Self-contained: НЕ трогает
parcels.py. Закрывает C8b-пробел «кэш пуст» → #1059 заработает из кэша приenable_ird_analyze=true.✅ APPROVE — прогрев zone_regulation_cache, прямо закрывает latency-пункт #1102.
shapely.representative_point— гарантированно внутри полигона (vs centroid для вогнутых), defensive try/except → None на битой геометрии. Дедуп поurban_index(set seen, ~100 зон один раз).upsert_zone_regulation(db, reg) is not None→ счётчик (контракт #1099); commit-once + db.close finally.30 6 1(1-е 06:30) без коллизий (planning 06:00). celery include корректен. imports резолвятся (shapely стека + #1083/#1099 merged).Архитектурно выносит ~100 urbanCard-резолвов с hot-пути analyze в monthly-прогрев → снимает worst-case latency из #1102 (cache-first после прогона).
Merge → deploy-verify (background worker, flag-независим → /health-green достаточно).