mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-06 06:38:57 +00:00
@@ -13,7 +13,19 @@
|
||||
- **Связано:** #253, #277, #289, #291, #293, #297,
|
||||
`docs/RESIZE.md`, `docs/WALL-THICKNESS.md`, `docs/CANVAS.md`
|
||||
|
||||
## 1. Сценарий и подтверждённая причина
|
||||
## 1. Персона, поверхность, момент и видимый результат
|
||||
|
||||
Персона — администратор дома. Поверхность — desktop Plan editor, инструмент
|
||||
Resize; момент — обычный ресайз стены готового плана. Повреждение копится
|
||||
незаметно и может проявиться лишь через несколько следующих правок или дней.
|
||||
|
||||
**До:** после серии обычных ресайзов случайная стена в другом месте плана вдруг
|
||||
рисуется другой толщиной или теряет рабочую ручку, хотя её никто не трогал.
|
||||
**После:** ресайз либо проходит внешне как раньше, либо в редком неоднозначном
|
||||
случае заканчивается прежним сообщением об ошибке без изменения плана, но
|
||||
никогда не портит другую стену.
|
||||
|
||||
### Подтверждённая причина
|
||||
|
||||
Пользователь безопасно сдвигает одну стену комнаты. Moving wall едет
|
||||
параллельно себе, а две соседние стены меняют длину. После жеста визуально всё
|
||||
@@ -147,6 +159,12 @@ handle disabled до pointer capture. Непредсказуемый runtime rej
|
||||
уже существующее сообщение `resize.commit_failed`; новый persisted reason или
|
||||
новый UX в этой задаче не вводится.
|
||||
|
||||
### UX и i18n
|
||||
|
||||
Новых контролов, состояний и текстов нет. Enabled/disabled handle, toast и
|
||||
доступные имена сохраняют существующий контракт #277/#293; новых RU/EN ключей
|
||||
не добавляется. Меняется только атомарность данных за прежним жестом.
|
||||
|
||||
## 6. Scope
|
||||
|
||||
### Входит
|
||||
@@ -223,6 +241,9 @@ midpoint на продолжении за пределами edge; endpoint на
|
||||
настоящая off-grid coordinate дальше `LATTICE_NOISE_STEPS`; conflicting shared
|
||||
destinations. Каждый negative candidate отклоняется до сохранения.
|
||||
|
||||
**Доказательство:** table-driven unit pure carrier preflight плюс integration
|
||||
test отказа candidate builder до мутации preview/config.
|
||||
|
||||
### AC6. Шесть edit-walk запусков больше не несут этот долг
|
||||
|
||||
Проходят:
|
||||
@@ -248,6 +269,9 @@ Valid pointer drag показывает exact candidate до release, затем
|
||||
rooms/walls/open spans; Redo возвращает тот же exact candidate. Forced carrier
|
||||
failure даёт ноль writes/history и существующую локализованную ошибку один раз.
|
||||
|
||||
**Доказательство:** production-bundle pointer smoke с чтением DOM preview,
|
||||
persisted config и history до release, после commit, Undo/Redo и forced reject.
|
||||
|
||||
### AC8. Мутационный страж
|
||||
|
||||
Mutation возвращает proportional `t` mapping для interior endpoint либо
|
||||
|
||||
Reference in New Issue
Block a user