feat(site-finder): «Пересчитать §7 с этой программой» из блока альтернатив (#2181 хвост) #2256

Merged
bot-backend merged 1 commit from feat/s7-apply-alternative into main 2026-07-03 06:12:02 +00:00
Collaborator

Summary

  • Недоделанный хвост плана #2181: на карточках «Как участок сходится» — secondary-CTA «Пересчитать §7 с этой программой». Клик → плавный скролл к §7 → §7 раскрывается и пересчитывается с классом/этажностью/типом застройки выбранного варианта (housing_class/floors — строго ИЗ ВАРИАНТА; из каталога берётся только геометрия секции; ревью-verified честность).
  • State pendingProgram в AnalysisPageContent, self-nulling guard (без двойного POST), кнопки задизейблены пока §7 считает («§7 считает…»); autorun/autoretry не тронуты; узкий тип PendingConceptProgram.

Test plan

  • tsc clean, eslint clean; code-reviewer APPROVE (StrictMode/гонка с autorun/честность fallback-класса разобраны)
  • post-merge: клик по варианту на минусовом участке → §7 пересчитан под выбранный класс

Refs #2181

## Summary - Недоделанный хвост плана #2181: на карточках «Как участок сходится» — secondary-CTA «Пересчитать §7 с этой программой». Клик → плавный скролл к §7 → §7 раскрывается и пересчитывается с классом/этажностью/типом застройки выбранного варианта (`housing_class`/`floors` — строго ИЗ ВАРИАНТА; из каталога берётся только геометрия секции; ревью-verified честность). - State `pendingProgram` в AnalysisPageContent, self-nulling guard (без двойного POST), кнопки задизейблены пока §7 считает («§7 считает…»); autorun/autoretry не тронуты; узкий тип `PendingConceptProgram`. ## Test plan - [x] tsc clean, eslint clean; code-reviewer ✅ APPROVE (StrictMode/гонка с autorun/честность fallback-класса разобраны) - [ ] post-merge: клик по варианту на минусовом участке → §7 пересчитан под выбранный класс Refs #2181
bot-backend added 1 commit 2026-07-03 06:07:45 +00:00
feat(site-finder): «Пересчитать §7 с этой программой» из блока альтернатив (#2181)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 15s
CI / changes (pull_request) Successful in 15s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Successful in 1m43s
CI / openapi-codegen-check (pull_request) Successful in 3m21s
1684363b5a
Хвост плана #2181: одним кликом применить вариант из блока «Как участок
сходится» к §7 «Концепция».

- SectionAlternatives: на каждой карточке варианта secondary-CTA (--accent-2,
  orange), передаёт класс/этажность/тип застройки варианта в §7 и плавно
  скроллит к #section-7. Дизейбл, пока §7 считает.
- Section7Concept: useEffect на pendingProgram — раскрывает §7, подбирает тип
  секции + пятно из каталога по КЛАССУ варианта (pickTypeForClass, как
  pickDefaultType но для заданного класса), выставляет этажность/класс/тип,
  densify=false, запускает handleGenerate; после старта зовёт onProgramApplied
  (родитель обнуляет pending → повторный клик снова срабатывает). autoRan/
  autoRetried refs не трогаются — ручной пересчёт всегда разрешён. Тонкий канал
  onPendingChange(concept.isPending) вверх для дизейбла CTA.
- AnalysisPageContent: state pendingProgram + conceptPending, проброс между
  двумя секциями.
- Новый узкий тип PendingConceptProgram в types/site-finder.

tsc --noEmit чисто, next lint без предупреждений.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bot-backend merged commit e440209d91 into main 2026-07-03 06:12:02 +00:00
bot-backend deleted branch feat/s7-apply-alternative 2026-07-03 06:12:03 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2256
No description provided.