mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 08:28:31 +00:00
59 lines
4.3 KiB
Markdown
59 lines
4.3 KiB
Markdown
# Разработка и деплой
|
||
|
||
## Окружение (cowork-сессии)
|
||
|
||
- Эталон кода — **git-репозиторий** (в сессии живёт в `/tmp/hpc`, восстанавливается из
|
||
`houseplan-card.git.bundle`: `git clone houseplan-card.git.bundle hpc`).
|
||
- Папка пользователя `houseplan/houseplan-card/` — зеркало репо (rsync после каждого коммита)
|
||
+ актуальный `houseplan-card.git.bundle`.
|
||
|
||
### ⚠️ Грабли файловой синхронизации (критично)
|
||
1. Сетевой mount иногда отдаёт файлы **обрезанными/перемешанными** — правки через Edit-tool
|
||
с Windows-стороны ненадёжны. Правило: **править python-патчами по чистой копии в /tmp,
|
||
писать через bash**, assert на count(old)==1.
|
||
2. **Сборку rollup вести ТОЛЬКО в /tmp/hpc** (`npm ci` уже сделан). Сборка на mount однажды
|
||
дала синтаксически валидный, но битый бандл («wi is not defined»), который валил рендер
|
||
ВСЕХ дашбордов HA (карточка грузится как extra_module на каждой странице!).
|
||
3. `.git` на mount не создаётся («Operation not permitted» на dot-каталогах) — поэтому bundle.
|
||
|
||
## Сборка
|
||
|
||
```bash
|
||
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` (до правки среднего датчика).
|