mirror of
https://github.com/Matysh/houseplan-card
synced 2026-10-05 22:29:05 +00:00
Validate / hacs (push) Failing after 12s
Validate / hassfest (push) Failing after 13s
Validate / frontend (push) Successful in 3m2s
Validate / golden (push) Failing after 51s
Validate / backend (push) Failing after 6m50s
Validate / smoke (push) Failing after 13m44s
Validate / performance (push) Failing after 24m13s
60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
# ТЗ #36 — Явный Glow override на уровне комнаты
|
||
|
||
- Issue: https://github.com/Matysh/houseplan-card/issues/36
|
||
- Приоритет: P2
|
||
- Статус ТЗ: draft, рекомендованное product decision зафиксировано ниже
|
||
- Зависимость: foundation независимого overlay #55
|
||
|
||
## Цель
|
||
|
||
Комната может явно наследовать, включить или выключить Glow независимо от
|
||
последующего изменения space default и data fill.
|
||
|
||
## Рекомендуемое решение владельцу
|
||
|
||
Room override влияет только на визуализацию внутри чистого пола комнаты и не
|
||
меняет физическую проницаемость границ. Комната с Glow off не становится
|
||
стеной: light transport через двери/виртуальные границы продолжается, но base
|
||
и pools не рисуются в её clip. Если за ней находится Glow-on комната и
|
||
геометрический путь света существует, свет может появиться там. Это сохраняет
|
||
разделение «настройка представления» и «физическая модель».
|
||
|
||
## Модель
|
||
|
||
- `space.settings.glow_enabled?: boolean` — default overlay пространства;
|
||
- `room.settings.glow?: boolean | null` — `null/absent` inherit, `true` on,
|
||
`false` off.
|
||
- Effective resolver: `room.glow ?? space.glow_enabled ?? false`.
|
||
- Поле `fill_mode` больше не определяет room Glow после миграции #55.
|
||
|
||
## UX
|
||
|
||
Room settings, раздел «Заливка и свет»: radio «Как у пространства / Включён /
|
||
Выключен». Рядом read-only effective state. Выбор data fill находится отдельно.
|
||
Переключение не стирает fill, light sources, radius или room geometry.
|
||
|
||
## Нормативная матрица
|
||
|
||
| Effective Glow комнаты | Base darkness | Local pools | Tunnel/transport |
|
||
|---|---:|---:|---|
|
||
| off | нет | нет | геометрия продолжает расчёт |
|
||
| on | да | да | по существующим opening/virtual rules |
|
||
|
||
Physical wall всегда блокирует; дверь/ворота используют текущий tunnel; окно не
|
||
становится межкомнатным проходом. `show_borders:false` не меняет физику.
|
||
|
||
## Edge cases
|
||
|
||
Nested rooms получают собственный clean-floor clip; parent Glow не рисуется в
|
||
hole. Перегородки/колонны вычитаются как сейчас. Glow under hover остаётся
|
||
pointer-transparent. Комната без sources всё равно получает base, если Glow on.
|
||
|
||
## Проверки и приёмка
|
||
|
||
- resolver truth table inherit/on/off;
|
||
- соседние rooms on→off→on через open boundaries;
|
||
- doors, virtual walls, physical walls, nested/hole, partitions/columns;
|
||
- room fill temp/LQI/custom одновременно с override;
|
||
- migration/read compatibility #55;
|
||
- один room override переживает смену space default и reload.
|