fix(site-finder): remount analysis-дерева при смене cad (#2445-B4) #2454

Merged
bot-backend merged 1 commit from fix/analysis-remount-on-cad-change into main 2026-07-05 19:20:37 +00:00
Collaborator

Summary

Аудит-находка B4 (epic #2445). AnalysisPageContent рендерился без key, привязанного к cad. Клиентская навигация между двумя участками под тем же [cad]-роут-шаблоном (RecentParcels/CompareTable → next/link) переиспользовала инстанс компонента, оставляя instance-local state от старого участка под новым.

Агент нашёл, что баг шире одного §7: утекали также §7 useCreateConcept результат, §3 выбранный конкурент/фильтры, ChatPanel thread — все instance-local, не keyed.

Fix

key={cad} на <AnalysisPageContent> (whole-tree remount) — форсит чистый remount всех детей разом. cad-keyed TanStack Query данные не затронуты (перечитываются из кэша, без refetch-водопада — verified: staleTime 5мин, нет useEffect-HTTP). Тот же идиом уже в compare/page.tsx:230.

Test plan

  • 247 vitest тестов зелёные (2 новых: same-cad preserves + different-cad resets)
  • test 2 усилен после ревью: rerender() с изменённым key пиннит сам механизм (прежний unmount()+render() сбрасывал бы безусловно) — verified проходит под arm64
  • tsc --noEmit, next lint, prettier — чисто
  • code-reviewer: APPROVE (главный риск — refetch-водопад — проверен, чист)

Refs #2445

## Summary Аудит-находка B4 (epic #2445). `AnalysisPageContent` рендерился без `key`, привязанного к `cad`. Клиентская навигация между двумя участками под тем же `[cad]`-роут-шаблоном (RecentParcels/CompareTable → `next/link`) переиспользовала инстанс компонента, оставляя instance-local state от старого участка под новым. Агент нашёл, что баг **шире** одного §7: утекали также §7 `useCreateConcept` результат, §3 выбранный конкурент/фильтры, ChatPanel thread — все instance-local, не keyed. ## Fix `key={cad}` на `<AnalysisPageContent>` (whole-tree remount) — форсит чистый remount всех детей разом. `cad`-keyed TanStack Query данные не затронуты (перечитываются из кэша, **без refetch-водопада** — verified: staleTime 5мин, нет useEffect-HTTP). Тот же идиом уже в `compare/page.tsx:230`. ## Test plan - [x] 247 vitest тестов зелёные (2 новых: same-cad preserves + different-cad resets) - [x] test 2 **усилен** после ревью: `rerender()` с изменённым key пиннит сам механизм (прежний `unmount()+render()` сбрасывал бы безусловно) — verified проходит под arm64 - [x] tsc --noEmit, next lint, prettier — чисто - [x] code-reviewer: ✅ APPROVE (главный риск — refetch-водопад — проверен, чист) Refs #2445
bot-backend added 1 commit 2026-07-05 19:11:44 +00:00
fix(site-finder): remount analysis tree on cad change (#2445-B4)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 7s
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 1m0s
CI / openapi-codegen-check (pull_request) Successful in 1m59s
3711a960bf
AnalysisPageContent не имел key, привязанного к cad, поэтому клиентская
навигация между участками под тем же [cad]-роутом переиспользовала инстанс —
результат useCreateConcept §7, выбранный конкурент/фильтры §3 и thread
ChatPanel утекали от предыдущего участка. key={cad} форсит чистый remount;
cad-keyed TanStack-данные не затронуты (перечитываются из кэша, без refetch-
водопада). Паттерн уже используется в compare/page.tsx.

Усилен regression-тест 2: rerender() с изменённым key (пиннит сам механизм)
вместо unmount()+render() (сбрасывал бы state безусловно).

Refs #2445
bot-backend merged commit c0c666cccc into main 2026-07-05 19:20:37 +00:00
bot-backend deleted branch fix/analysis-remount-on-cad-change 2026-07-05 19:20:38 +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#2454
No description provided.