fix(mera-public): этаж и состояние переживают переход на /estimate #3327

Merged
bot-backend merged 2 commits from fix/3321-draft-fields-survive into main 2026-09-02 09:48:52 +00:00
Collaborator

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

Дефект

FreeCheckCard требует этаж и состояние обязательными и кладёт в черновик, а takeDraft() на монтировании /estimate стирал черновик целиком, прочитав только address/rooms/area/city — floor и condition уничтожались непрочитанными. Человек обязан заполнить два поля, которые гарантированно выбрасывались на первом же переходе.

Лечение

takeDraft по-прежнему забирает черновик «на вынос» (removeItem остаётся — защита от подстановки протухшего адреса), но непрочитанные потребителем floor/condition перекладывает в mera:estimate-draft-extras вместе с адресом, к которому относятся (без адреса хвост от одного дома приклеился бы к следующему в той же вкладке). readDraftExtras() читает не забирая. Пустые поля — прошлый хвост удаляется.

Честно в explicit: потребителя floor/condition пока нет нигде (grep по src/ — только типы и фикстуры приватного кабинета; платный шаг #2896 не существует). Поля теперь доживают до него.

Тесты

Через форму, как требовала приёмка (не через хранилище): заполнить FreeCheckCard пользовательскими подписями → размонтировать → смонтировать EstimateFlow (шаг, который уничтожал поля) → floor/condition доступны в extras.

  • Зелёный: Test Files 28 passed (28) / Tests 214 passed (214), tsc --noEmit чисто.
  • Фальсификация: возврат removeItem-семантики (git apply -R) красит тест ПО ЗНАЧЕНИЮ: AssertionError: после /estimate от черновика не осталось ничего: expected null not to be null.

Ручная проверка: карточка на главной с этажом/состоянием → /estimate → в sessionStorage появляется mera:estimate-draft-extras, mera:estimate-draft исчезает.

Closes #3321 (аудит 01-02.09, линза public-front; хвост моей же правки #3279 — запись починили, чтение нет). ## Дефект `FreeCheckCard` требует этаж и состояние обязательными и кладёт в черновик, а `takeDraft()` на монтировании `/estimate` стирал черновик целиком, прочитав только address/rooms/area/city — **floor и condition уничтожались непрочитанными**. Человек обязан заполнить два поля, которые гарантированно выбрасывались на первом же переходе. ## Лечение `takeDraft` по-прежнему забирает черновик «на вынос» (removeItem остаётся — защита от подстановки протухшего адреса), но непрочитанные потребителем `floor`/`condition` перекладывает в `mera:estimate-draft-extras` вместе с адресом, к которому относятся (без адреса хвост от одного дома приклеился бы к следующему в той же вкладке). `readDraftExtras()` читает не забирая. Пустые поля — прошлый хвост удаляется. Честно в explicit: **потребителя floor/condition пока нет нигде** (grep по src/ — только типы и фикстуры приватного кабинета; платный шаг #2896 не существует). Поля теперь доживают до него. ## Тесты Через форму, как требовала приёмка (не через хранилище): заполнить `FreeCheckCard` пользовательскими подписями → размонтировать → смонтировать `EstimateFlow` (шаг, который уничтожал поля) → floor/condition доступны в extras. - Зелёный: `Test Files 28 passed (28)` / `Tests 214 passed (214)`, `tsc --noEmit` чисто. - Фальсификация: возврат removeItem-семантики (`git apply -R`) красит тест ПО ЗНАЧЕНИЮ: `AssertionError: после /estimate от черновика не осталось ничего: expected null not to be null`. Ручная проверка: карточка на главной с этажом/состоянием → `/estimate` → в sessionStorage появляется `mera:estimate-draft-extras`, `mera:estimate-draft` исчезает.
bot-backend added 1 commit 2026-09-02 09:41:40 +00:00
fix(mera-public): этаж и состояние переживают переход на /estimate
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 58s
7b61ecb122
Карточка лэндинга требовала этаж и состояние обязательными и клала их в
черновик. Целевая страница на монтировании звала takeDraft, а та стирала
черновик целиком, прочитав только адрес, комнаты, площадь и город: оба
обязательных поля уничтожались непрочитанными. Человек заполнял два поля,
единственным эффектом которых было их же удаление.

takeDraft по-прежнему забирает черновик «на вынос» (адрес не должен
подставляться на следующей неделе в той же вкладке), но перекладывает
непрочитанные floor/condition в отдельный ключ вместе с адресом, к которому
они относятся, — чтобы платный шаг (#2896) не приклеил этаж одной квартиры к
другой. Потребителя у полей пока нет: платного шага нет.

Closes #3321
Light1YT added 1 commit 2026-09-02 09:46:19 +00:00
fix(mera-public): сверка адреса у хвоста черновика — в коде, не в комментарии
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 16s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m23s
390a6f05b1
readDraftExtras требует адрес, под который спрашивают, и на несовпадении
отдаёт null. Гарантия «потребитель обязан сверить» жила только в комментарии,
а takeDraft выходит раньше записи хвоста на пустом и на битом черновике — то
есть хвост от предыдущей квартиры доживал до следующего захода в той же
вкладке и дождался бы потребителя, который сверить забыл.

Плюс два непокрытых кейса: черновик без floor/condition убирает прошлый хвост;
хвост не отдаётся чужому адресу.
bot-backend scheduled this pull request to auto merge when all checks succeed 2026-09-02 09:48:08 +00:00
bot-backend merged commit 24f88988f7 into main 2026-09-02 09:48:52 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
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#3327
No description provided.