12 KiB
CODE-REVIEW — issue #323, заход r1
SHA материала: 69facb991882b336a8e4122abf7733faec56d5ba (после ребейза
конвейером: fec74ff3 → 69facb99, поверх легло 1 коммит dev; предыдущего
верхнего коммита в родословной ветки нет — это исходный ребейз перед первым
циклом ревью, разбор полный).
Трек: trivial (§5.1). AC зафиксированы автором в теле issue при переводе
в S5-ready:
- бейдж
HACS-Custom→HACS-Default(README.md, README.ru.md); - секция установки — вместо «⋮ → Custom repositories» обычный поиск «House Plan» в HACS; my-кнопка, перезапуск, добавление интеграции и заметка про Lovelace-ресурс сохраняются.
Класс изменения: C (документация), без кода — src/**,
custom_components/**/*.py не тронуты.
Скоуп диффа
README.md | 11 ++++++-----
README.ru.md | 12 +++++++-----
docs/STATUS.md | 2 +-
docs/TESTING.md | 2 +-
4 files changed, 15 insertions(+), 12 deletions(-)
Два коммита, оба с трейлерами Issue: #323 / User-Visible: no:
343af61a— README.md + README.ru.md: бейдж и секция установки;69facb99— попутно найденные устаревшие места: строка HACS вdocs/STATUS.md(описывала очередь из 835 PR) и пункт установки вdocs/TESTING.md(начинался с custom repository).
Как проверялось
AC — по коду (docs), проверено чтением
- AC1 (бейдж).
README.md:3иREADME.ru.md:3—HACS-Custom→HACS-Default, URL и alt-текст остались консистентны с прежним статичным shields.io-бейджем (не live-бейдж, разница только в тексте/подписи). Выполнено. - AC2 (секция установки).
README.md:88-95,README.ru.md:91-99— шаги «⋮ → Custom repositories» / «добавьте URL» убраны, заменены на «найдите House Plan в поиске HACS и установите»; my-кнопка (my.home-assistant.io/.../hacs_repository), шаг перезапуска, шаг «Add integration → House Plan» и абзац про ручную регистрацию Lovelace-ресурса (resources: /houseplan_files/houseplan-card.js) сохранены дословно. Выполнено. Проверено чтением, не исполнением (docs-only, поведения карточки правка не касается).
hacs.json.name = "House Plan (card + storage)" — поиск по подстроке
«House Plan» в HACS находит запись; формулировка в README не вводит
пользователя в заблуждение.
Гейты — прогнаны
| Гейт | Команда | Результат |
|---|---|---|
| Typecheck | npx tsc --noEmit |
зелёный, без вывода |
| Unit-тесты | npm test |
зелёный: 1358 объявлено, 1357 pass, 1 skipped, 0 fail |
| Build | npm run build |
зелёный, dist/houseplan-card.js собран за 9.3s |
| Синхронность трёх копий бандла | git status --short после build |
пусто — dist/, custom_components/houseplan/frontend/, demo/srv/assets/ не тронуты и не разошлись (класс D не менялся, дифф его и не затрагивал) |
Три гейта прогнаны, потому что они всегда дешёвые и прогоняются в каждом
раунде независимо от объёма диффа — их результат актуален именно для
69facb99, не унаследован.
Гейты — не прогонялись, и почему
node scripts/check-docs.mjs— не нужен: диплом не трогаетsrc/**, отпечаток скриншотов не может устареть от правки в README/STATUS/TESTING.npm run invariants -- --config …— геометрия,layout, толщина стен,marker.space,open_spansдиффом не затронуты.- Браузерные смоки (
demo/smoke_*.mjs) — диплом не меняет ни одной видимой в карточке строки или поведения;node scripts/smoke-select.mjsне запускал, т.к. измененные символы — это markdown-текст README/STATUS/ TESTING, а не код/тесты, по которым инструмент ищет связи. Смоки рендерятdemo/srv/demo.html, README/STATUS/TESTING в это дерево не попадают. npm run golden:verify— рендер, геометрия и стили не менялись.python -m pytest tests_backend -q—custom_components/**/*.pyне тронут.- Perf-профили — не названы в AC, geometry/perf-пути не задеты.
Находки
Medium — В СКОУПЕ задачи
M1. docs/USER-GUIDE.md и docs/USER-GUIDE.ru.md не обновлены и
противоречат исправленному README.
Обе версии полного руководства (на которое README ссылается как на «Full user guide» / «Полное руководство», и куда RU-README прямо отправляет за «пошаговыми сценариями») в разделе «HACS» / «Установка через HACS» по‑прежнему учат добавлять репозиторий вручную:
docs/USER-GUIDE.md:82-83
1. Add `https://github.com/Matysh/houseplan-card` to HACS as a custom
**Integration** repository.
docs/USER-GUIDE.ru.md:82
1. В HACS добавьте `https://github.com/Matysh/houseplan-card` как
пользовательский репозиторий категории **Integration**.
Воспроизведение: пользователь читает README → видит «House Plan is in the HACS default catalog — no custom repository needed», переходит по ссылке «Full user guide» за подробностями → получает противоположную и устаревшую инструкцию (добавить custom repository вручную) в том же самом разделе «HACS». Это ровно та проблема, которую issue #323 ставит целью убрать («лишние шаги, которых больше не требуется»), просто в соседнем файле того же класса C.
Автор этой же ветки уже расширял скоуп за пределы «только README»: коммит
69facb99 правит docs/STATUS.md и docs/TESTING.md как «попутно
найденные устаревшие места» — тот же тип дефекта (стале-упоминание
custom-repository потока), тот же класс C. USER-GUIDE — тот же случай,
не пойманный при том же самом sweep (вероятная причина: непрямое
совпадение по тексту — «custom Integration repository» с жирным между
словами в EN и строчная «пользовательский» без грепаемого «HACS-Custom» в
RU, — оба ускользают от точного grep по фразе «custom repository»).
Без этой правки задача не решает заявленный сценарий полностью: у пользователя остаётся действующий (и более заметный, т.к. это «полное руководство») путь к устаревшей инструкции.
Что делать: привести шаг 1 в обоих docs/USER-GUIDE*.md к тому же
виду, что и в README (поиск в HACS вместо добавления custom-repository), в
рамках этого же issue — Medium в скоупе, отдельный issue не заводится
(#202).
Других мест с той же формулировкой не нашлось (проверено
grep -rniE "custom.{0,20}repositor|HACS-Custom|пользовательск\S*\s+репозитор" --include="*.md" ., исключая CHANGELOG и node_modules; docs/DEVELOPMENT.md,
CONTRIBUTING.md чисты).
Проверено и корректно
- Бейдж и секция установки в обоих README согласованы между собой (EN/RU), порядок шагов и сохранённые фрагменты (my-кнопка, restart, add integration, YAML-ресурс) идентичны прежним, кроме заменённого шага.
docs/STATUS.mdHACS-строка иdocs/TESTING.mdinstall-чеклист приведены в соответствие факту (hacs/default#9004merged 2026-08-25) без потери информации (post-merge checklist сохранён).- Трейлеры
Issue: #323/User-Visible: noна обоих коммитах корректны: продукт (карточка/интеграция) не меняется, значит changelog не требуется. docs/CHANGELOG.md/docs/CHANGELOG.ru.mdне тронуты — согласуется сUser-Visible: no.- Диплом не трогает
dist/**,custom_components/houseplan/frontend/**,demo/golden/baselines/**(класс D) — верно для чисто текстовой правки. - «Одно число — один источник»: числовых пользовательских величин дифф не вводит и не меняет, правило не применимо к этому диффу за вычетом M1, которое устройство ровно того же типа дефекта, но текстовое, а не числовое.
Чего не проверял (и осознанно)
- Живой поиск «House Plan» в HACS UI — недоступен в окружении ревьюера (нет
запущенного HA/HACS-инстанса); утверждение принято по ссылке на
hacs/default#9004(merged, зафиксировано владельцем в чате 2026-08-27, процитировано в теле issue) и поhacs.json.name. - Скриншоты/докс-фингерпринт — не проверялись, т.к.
src/**не тронут иcheck-docs.mjsне применим (см. таблицу гейтов выше). - Отсутствие меты типа (
bug/feature/tech-debt) на issue #323 при наличииtrivial— замечено (§5.1 требует типbugв списке критериев короткого трека), но это принятое владельцем вS2-analysisрешение (владелец лично перевёл вS5-readyи взял в работу), не предмет код-ревью и не блокирует; не выношу отдельной находкой.
Вердикт
High: 0. Medium: 1, в скоупе задачи (M1) — чинится в этом же issue. Полный набор AC доказан, но задача не закрывает сценарий целиком, пока второй документ с теми же инструкциями противоречит первому — поэтому вердикт жёлтый, а не зелёный, несмотря на 0 High.