feat(section7): editable section footprint + корпус plural/program hint (#1953) #2102

Merged
bot-backend merged 2 commits from feat/section7-editable-footprint into main 2026-06-30 09:48:12 +00:00

2 commits

Author SHA1 Message Date
0413d59b89 test(quarter-dump): un-rot freshness date-bomb (hardcoded 2026-01-01 → now−1d)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Successful in 1m5s
CI / openapi-codegen-check (pull_request) Successful in 1m59s
CI / backend-tests (pull_request) Successful in 14m18s
test_nspd_path_used_when_zouit_count_nonzero хардкодил dump fetched_at =
datetime(2026, 1, 1) как «свежий». С 2026-06-30 разница превысила
_DUMP_MAX_AGE_DAYS=180 → код уходил в stale-ветку (_trigger_harvest →
_empty_unavailable) → nspd_zouit_overlaps=[] → assert 0 == 1. Не регрессия
этой ветки: PR #2101 был frontend-only (backend-tests не гонял полный suite),
PR-B — первый backend-PR после пересечения порога, поэтому date-bomb всплыл
здесь. Свежесть теперь относительна now (now − 1 день) — устойчиво к дате прогона.
2026-06-30 14:33:16 +05:00
83a063f0ee feat(section7): editable section footprint + корпус plural/program hint (#1953)
Some checks failed
CI / changes (pull_request) Successful in 7s
CI / frontend-tests (pull_request) Successful in 1m12s
CI / openapi-codegen-check (pull_request) Successful in 2m4s
CI / backend-tests (pull_request) Failing after 14m21s
PR-B (follow-up к unify-concept). Закрывает «вписать пятно» из round-3:
- BuildingProgramItem получает опциональные footprint_w_m/footprint_d_m
  (float|None, ge=4 le=120, default None → каталог; ADDITIVE, byte-for-byte
  backward-compat). place_program кладёт ручное пятно когда заданы ОБА габарита,
  иначе каталожное. api-types.ts регенерирован под новую схему.
- ConceptProgramForm: пятно секции теперь редактируемое (ширина × глубина);
  пусто → возврат к каталогу; Σ пятно и ориентир КСИТ считаются от эффективного
  габарита. building_program несёт footprint в Section7Concept.
- ConceptVariantsResult: грамматика «корпус» (1 корпус / 2–4 корпуса / 5+
  корпусов) в headline / подписи карты / partial-fit; program-вариант получает
  свой хинт вместо STRATEGY_HINTS[balanced].
- Тесты place_program: footprint-override и partial-footprint fallback.
2026-06-30 13:59:14 +05:00