mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
**High-1.** Комнаты хранятся в тех же координатах, что и перегородки: `roomPoly` отдаёт сырой полигон конфига. Обе обвязки делили его на `NORM_W` ещё раз, комната уезжала в область ~0.0001, и `junctionAt` не находил ни одного совпадения. Узел на T-стыке к середине стены комнаты — тот самый случай, ради которого ТЗ прошло два раунда ревью, — молча исчезал. Воспроизведено вызовом `optimizePlans`: `partitionsMerged === 1` там, где ожидается 0. **High-2.** Завершаемая цепочка к моменту слияния ещё лежит в `room_drafts`: каждый клик персистит её через `_persistActiveDraftSegment`, а удаляется черновик строкой ниже вызова слияния. Собственные концы цепочки считались чужим примыканием, и стык с существующей стеной не срастался. Активный черновик теперь исключается — ровно так же, как это делает `plan-snap-overlay` (`activeDraftId`). Дыры в тестах, которые это пропустили, закрыты по существу, а не заплаткой: - `demo/smoke_wall_chain_merge.mjs` рисует продолжение реальными кликами через `_markupClick`, а не присваиванием `_path`, — то есть исполняет тот путь, на котором дефект и жил. Клики задаются в координатах плана и переводятся через живой view box, иначе смок целится мимо только что нарисованной стены. - `test/plan-optimizer.test.mjs` получил комнату с примыканием к середине стороны: юниты модуля этого не ловили, потому что передают полигон уже в согласованном масштабе, минуя обвязку. - Мутанты `partition-merge-rescales-rooms` и `chain-merge-sees-own-draft` сторожат оба места: проверены применением патча, 1 и 2 падения. Issue: #229 User-Visible: no