fix(report-pdf): best-effort inline §22-форсайт на холодном участке — отчёт самодостаточен #2357
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#2357
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/report-inline-forecast"
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?
Что
Находка стресс-свипа: полный отчёт «холодного» участка (не открывали страницу) выходил без §4–§6 — форсайт-ран строится лениво GET /forecast-поллингом фронта. Для «одного файла инвесткомитету» это полотчёта.
_ensure_forecast_run: при отсутствии ранаbuild_full_reportсчитает §22 синхронно прямым вызовомbuild_site_finder_report(мы уже в worker'е, ~20–30с на scoped-участок) и персистит ран — контракт сверен построчно с Celery-таском (horizons[6,12,18,24]=_horizons_for(12), district-fallback, schema "1.0", status/confidence/segment; отличие толькоparams.source="full-report-inline-forecast"— потребители по source не фильтруют, GET /forecast увидит обычный ready-ран).Тесты
19 в файле (3 новых на persist-контракт/fallback/глотание, 2 адаптированы: генерация вызвана+перечитана / упала → деградация с
persist_not_called). Каталог exporters: 189 passed. ruff+UP clean.Ревью
code-reviewer: ✅ APPROVE (дрейф контракта — нет; транзакции — безопасны, persist и раньше коммитил внутри flow; гонка двух inline-форсайтов — benign latest-wins).
Post-merge
Пересборка на реально холодном 0001001:30: §4–§6 в PDF + новый "1.0"-ран с source=inline; время в лимите.
Refs #2259