From bb1e399d2e129b35368bb903801c73f1d1f1063f Mon Sep 17 00:00:00 2001 From: "claude[bot]" <209825114+claude[bot]@users.noreply.github.com> Date: Mon, 21 Sep 2026 11:04:08 +0000 Subject: [PATCH] docs: review document for #606 Issue: #606 User-Visible: no --- docs/reviews/SPEC-REVIEW-606-r1.md | 221 +++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 docs/reviews/SPEC-REVIEW-606-r1.md diff --git a/docs/reviews/SPEC-REVIEW-606-r1.md b/docs/reviews/SPEC-REVIEW-606-r1.md new file mode 100644 index 00000000..8b3f5758 --- /dev/null +++ b/docs/reviews/SPEC-REVIEW-606-r1.md @@ -0,0 +1,221 @@ +# SPEC-REVIEW-606-r1 — «Показать тренажёр и исправить перепутанные bookshelf/shelf_floor» + +Issue: [#606](https://github.com/Matysh/houseplan-card/issues/606) +Этап: spec (полный трек — автор в S2-analysis назвал нарушенный критерий §5: +«одна поверхность» не выполняется, затронуты `assets/furniture/**`, генератор, +`src/furniture-*`, каталог палитры, i18n четырёх языков, PDF/static-путь, golden +и совместимость публичного ID; `small`/`trivial` неприменимы) +Заход: r1 (первый; разделы «Унаследовано из r0» и «Закрытие раунда r0» не нужны — §2.10 +применяется со второго захода) + +## Вердикт + +**Зелёный.** High: 0. Medium в скоупе: 0. Medium вне скоупа: 0. Low: 2 (обе +сняты решением ревьюера с записью ниже, доработка не требуется). + +## Скоуп разбора + +Полный разбор: тело issue #606 целиком — исходное описание проблемы/объёма +работ/критериев приёмки (написано до раздела `## ТЗ`, ТЗ явно ссылается на него +как на действующий текст) и раздел `## ТЗ`; оба комментария issue (аналитика S2 +и хендофф автора ТЗ); `docs/SCOPE.md`, `AGENTS.md`, `PROCESS.md` (§1, §2.2–§2.5, +§2.10, §4, §5, §7.1, §7.2); родительская задача [#593](https://github.com/Matysh/houseplan-card/issues/593) +(поставка `houseplan-0.4.0`, откуда унаследован текущий баг) — прочитана как +источник происхождения пакета, а не как материал этого ревью. + +Поскольку почти все содержательные утверждения ТЗ — проверяемые факты о текущем +состоянии репозитория, а не только предположения о будущем, разбор включает код +и данные на `dev` (`0d30dde1`, ветка `issue/606-furniture-catalog-corrections` +опубликована от того же коммита, продуктовый код не менялся — чистая проверка ТЗ): + +- `assets/furniture/houseplan-0.4.0/pack.json` — фактические записи `cactus` + (`menu_icon: plant`, `70×120`, `back: top`, `operation: add`), `bookshelf` + (`file: svg/plan/bookshelf.svg`, `menu_icon: wardrobe`, `100×35`), `shelf_floor` + (`file: svg/plan/shelf_floor.svg`, `menu_icon: shelving`, `100×35`), `exercise` + в `menu_icons` (уже существует, `group: other`, `file: svg/menu/exercise.svg`) — + 33 `menu_icons`, 60 `symbols`; +- содержимое `svg/plan/bookshelf.svg`, `svg/plan/shelf_floor.svg`, + `svg/plan/cactus.svg` — форма путей подтверждает описанную в issue путаницу + (первый рисует перекрёстный «ящик»-стеллаж, второй — раскрытую книгу); +- `scripts/generate-furniture-assets.mjs` — правило `path.basename(entry.file, + '.svg') !== entryId → fail`, проверка `boxFillDeviation` против `viewBox`, + проверка `menu_icon` → группа менюшки/символа, жёсткая проверка версии + манифеста (`pack_version !== '0.4.0' → fail`) и происхождения (`author`, + `license`); +- `src/furniture.ts` — `BY_ID`/`furnitureSymbol`/`furnitureArtIsLazy`/ + `furnitureGraphic`: неизвестный (не в каталоге) id возвращает `null`/`false` + на всех трёх входах, то есть простое удаление `cactus` из каталога без + резолвера действительно гасит старый объект — именно то, что ТЗ называет + «Риск 1»; +- `src/decor-image-editor.ts:407-446` (`renderShapeDialog`) — диалог свойств + строит `