лендинг: обязательные этаж и состояние уничтожаются непрочитанными — takeDraft() удаляет черновик целиком на монтировании /estimate #3321

Closed
opened 2026-09-02 06:56:38 +00:00 by bot-backend · 0 comments
Collaborator

Армейский аудит 01-02.09, линза public-front; подтверждено скептиком построчно. Дефект частично мой — правка #3279 (этаж в черновик) закрыла запись, но не проверила чтение.

Механизм

FreeCheckCard требует этаж и состояние обязательными полями (:116-191) и кладёт оба в черновик (:209-216). Целевая страница /estimate:

  • EstimateFlow.tsx:130-142 на монтировании зовёт takeDraft();
  • estimate-draft.ts:69removeItem стирает черновик целиком;
  • читаются при этом только address/rooms/area/cityfloor и condition уничтожаются непрочитанными.

То есть человек обязан заполнить два поля, которые гарантированно выбрасываются на первом же переходе. Комментарий в черновике обещает «донести до платного шага» — доносить уже нечего.

Лечение (два честных варианта)

  1. takeDraft не удаляет, а помечает прочитанные поля; неиспользованные живут до платного шага (для которого их и собирали).
  2. Либо честно перестать требовать этаж/состояние на лендинге, пока платного шага нет — но это откат продуктового решения, решает владелец.

Приёмка

  • Тест ЧЕРЕЗ ФОРМУ (как free-check-card-floor.test.tsx, не через хранилище): заполнить → перейти → floor/condition доступны после монтирования /estimate
  • Фальсификация: возврат removeItem-семантики красит тест по значению

Refs #3279 (моя правка записи), пункт 5 отчёта тестировщика 30.08.

Армейский аудит 01-02.09, линза public-front; подтверждено скептиком построчно. **Дефект частично мой** — правка #3279 (этаж в черновик) закрыла запись, но не проверила чтение. ## Механизм `FreeCheckCard` требует этаж и состояние обязательными полями (`:116-191`) и кладёт оба в черновик (`:209-216`). Целевая страница `/estimate`: - `EstimateFlow.tsx:130-142` на монтировании зовёт `takeDraft()`; - `estimate-draft.ts:69` — `removeItem` **стирает черновик целиком**; - читаются при этом только `address/rooms/area/city` — **floor и condition уничтожаются непрочитанными**. То есть человек обязан заполнить два поля, которые гарантированно выбрасываются на первом же переходе. Комментарий в черновике обещает «донести до платного шага» — доносить уже нечего. ## Лечение (два честных варианта) 1. `takeDraft` не удаляет, а помечает прочитанные поля; неиспользованные живут до платного шага (для которого их и собирали). 2. Либо честно перестать требовать этаж/состояние на лендинге, пока платного шага нет — но это откат продуктового решения, решает владелец. ## Приёмка - [ ] Тест ЧЕРЕЗ ФОРМУ (как free-check-card-floor.test.tsx, не через хранилище): заполнить → перейти → floor/condition доступны после монтирования /estimate - [ ] Фальсификация: возврат removeItem-семантики красит тест по значению Refs #3279 (моя правка записи), пункт 5 отчёта тестировщика 30.08.
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#3321
No description provided.