(low) page.tsx/handleWeightsChange: смена весов во время первичного analyze (data ещё null) молча теряется #1418

Closed
opened 2026-06-15 05:53:50 +00:00 by bot-backend · 0 comments
Collaborator

Severity: low · Категория: frontend · Файл: frontend/src/app/legacy/site-finder/page.tsx:219-230

frontend/src/app/legacy/site-finder/page.tsx:227 — handleWeightsChange ставит pendingWeightsChange только if (data?.cad_num). Если пользователь меняет веса, пока первичный analyze ещё в полёте (data===undefined), setCurrentWeights/setActiveProfileId обновятся, но debounced re-analyze не поставится. Дополнительно сам effect (page.tsx:176-199) тоже гардит if (!currentData?.cad_num) return; (стр. 183). Импакт: после завершения первичного analyze (посчитан по старым весам) ползунки сдвинуты, score им не соответствует, авто-пересчёта нет — нужно ещё раз дёрнуть «Применить». Узкий краевой случай. Фикс: при отсутствии data ставить pending и применять по завершении первичного analyze, либо дизейблить панель весов до прихода data.

Почему баг: setCurrentWeights/setActiveProfileId обновятся, но debounced re-analyze не поставится (data?.cad_num falsy). После того как первичный analyze завершится со старыми весами, новые ползунки уже применены в UI WeightProfilePanel, но score посчитан по прежним весам — и авто-пересчёта не будет, т.к. событие изменения весов уже прошло. Пользователь видит несоответствие: ползунки сдвинуты, но score им не соответствует, пока вручную не дёрнет «Применить» ещё раз. Краевой случай (изменение весов во время загрузки), отсюда low.

Как чинить: Либо ставить pendingWeightsChange всегда и проверять наличие данных уже в debounced-эффекте (там и так есть guard dataRef.current?.cad_num), либо после завершения первичного analyze сверять currentWeights с применёнными и до-триггерить пересчёт.


deep-audit «армия ботов 2» · verify+harden, confidence 0.82 · unit U80

**Severity:** low · **Категория:** frontend · **Файл:** `frontend/src/app/legacy/site-finder/page.tsx:219-230` frontend/src/app/legacy/site-finder/page.tsx:227 — `handleWeightsChange` ставит `pendingWeightsChange` только `if (data?.cad_num)`. Если пользователь меняет веса, пока первичный analyze ещё в полёте (data===undefined), `setCurrentWeights/setActiveProfileId` обновятся, но debounced re-analyze не поставится. Дополнительно сам effect (page.tsx:176-199) тоже гардит `if (!currentData?.cad_num) return;` (стр. 183). Импакт: после завершения первичного analyze (посчитан по старым весам) ползунки сдвинуты, score им не соответствует, авто-пересчёта нет — нужно ещё раз дёрнуть «Применить». Узкий краевой случай. Фикс: при отсутствии data ставить pending и применять по завершении первичного analyze, либо дизейблить панель весов до прихода data. **Почему баг:** `setCurrentWeights/setActiveProfileId` обновятся, но debounced re-analyze не поставится (data?.cad_num falsy). После того как первичный analyze завершится со старыми весами, новые ползунки уже применены в UI WeightProfilePanel, но score посчитан по прежним весам — и авто-пересчёта не будет, т.к. событие изменения весов уже прошло. Пользователь видит несоответствие: ползунки сдвинуты, но score им не соответствует, пока вручную не дёрнет «Применить» ещё раз. Краевой случай (изменение весов во время загрузки), отсюда low. **Как чинить:** Либо ставить pendingWeightsChange всегда и проверять наличие данных уже в debounced-эффекте (там и так есть guard `dataRef.current?.cad_num`), либо после завершения первичного analyze сверять currentWeights с применёнными и до-триггерить пересчёт. --- <sub>deep-audit «армия ботов 2» · verify+harden, confidence 0.82 · unit U80</sub>
bot-backend added the
week ревью 1
label 2026-06-15 05:53:50 +00:00
bot-backend added the
scope/frontend
label 2026-06-15 11:02:01 +00:00
Sign in to join this conversation.
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#1418
No description provided.