mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 08:28:31 +00:00
4.3 KiB
4.3 KiB
Разработка и деплой
Окружение (cowork-сессии)
- Эталон кода — git-репозиторий (в сессии живёт в
/tmp/hpc, восстанавливается изhouseplan-card.git.bundle:git clone houseplan-card.git.bundle hpc). - Папка пользователя
houseplan/houseplan-card/— зеркало репо (rsync после каждого коммита)- актуальный
houseplan-card.git.bundle.
- актуальный
⚠️ Грабли файловой синхронизации (критично)
- Сетевой mount иногда отдаёт файлы обрезанными/перемешанными — правки через Edit-tool с Windows-стороны ненадёжны. Правило: править python-патчами по чистой копии в /tmp, писать через bash, assert на count(old)==1.
- Сборку rollup вести ТОЛЬКО в /tmp/hpc (
npm ciуже сделан). Сборка на mount однажды дала синтаксически валидный, но битый бандл («wi is not defined»), который валил рендер ВСЕХ дашбордов HA (карточка грузится как extra_module на каждой странице!). .gitна mount не создаётся («Operation not permitted» на dot-каталогах) — поэтому bundle.
Сборка
cd /tmp/hpc && npm ci # один раз
npx rollup -c # → dist/houseplan-card.js
node --check dist/houseplan-card.js
cp dist/houseplan-card.js custom_components/houseplan/frontend/
Деплой на дачу (ha.jbstudio.pro)
- SSH: порт 323, root, ключ
ha_jb(пользователь загружает в чат; в песочнице /tmp/ha_jb, chmod 600). - JS:
scp -P 323 -i /tmp/ha_jb dist/houseplan-card.js root@ha.jbstudio.pro:/config/custom_components/houseplan/frontend/ - Интеграция целиком: tar c custom_components/houseplan (--exclude pycache) → tar x на сервере.
- Проверка обязательна:
md5sumлокально == на сервере ==curl http://homeassistant:8123/houseplan_files/houseplan-card.js | md5sum(внутри SSH-аддонаlocalhost— НЕ HA, использовать хостhomeassistant). - Изменения Python требуют рестарта HA (
ha core restart, держит соединение до конца, HTTP поднимается через 1–3 мин). Изменения JS — только обновление страницы (static path отдаётся с no-cache). - После деплоя JS — проверить в браузере (Ctrl+F5) и console (не должно быть ошибок из houseplan-card.js; битый бандл роняет все дашборды).
Релиз
Тег vX.Y.Z + GitHub Release → workflow .github/workflows/release.yml собирает и прикладывает
houseplan-card.js. Версию бампать синхронно: src/houseplan-card.ts (CARD_VERSION),
package.json, custom_components/houseplan/manifest.json, custom_components/houseplan/const.py.
Воспроизводимые скрипты (данные)
- Извлечение геометрии/подложек из прототипа и генерация
src/data/*— см. историю коммитов и docs/ARCHITECTURE.md (трансформации SVG→базовое пространство: f1 0.647/(490,27), f2 0.896/(351,21)). - Подгонка комнат: рендер плана с прямоугольниками поверх (cv2) → снап к стенам → ручная доводка.
Прод-объекты в HA (дача)
- Дашборд
plan-doma, панельный вид, карточкаcustom:houseplan-card(icon_size 2.5). - Интеграция houseplan: entry загружен,
.storage/houseplan.layout— раскладка (сервер). - Старый прототип
/config/www/houseplan/(iframe) сохранён как запасной, не трогать. - Бэкапы configuration.yaml:
.bak-avgtemp(до правки среднего датчика).