3.1 KiB
ТЗ #44 — Явные фильтры и группировка устройств
- Issue: https://github.com/Matysh/houseplan-card/issues/44
- Приоритет: P2
- Статус ТЗ: policy proposal ready for owner review
- Связано: device inbox #29, field registry #33
Цель
Убрать скрытые настройки, влияющие на discovery. Каждый ключ либо получает поддерживаемый advanced UI и documented default, либо мигрирует в фиксированное product rule.
Решение v1
Оба текущих ключа остаются поддерживаемыми и становятся видимыми в Advanced разделе inbox:
group_lights
- default
true; - label: «Объединять несколько светильников комнаты»;
- preview показывает, какие bindings будут группой/отдельными marker;
- переключение не применяется до Save и не удаляет explicit markers;
- existing light-group marker сохраняет lifecycle; конфликт bindings preview.
exclude_integrations
- default — текущий
EXCLUDED_DOMAINS/product list; - UI — searchable multi-select интеграций, реально присутствующих в registry, плюс reset to recommended defaults;
- изменение влияет только на automatic candidates/seed, не скрывает explicit live marker и не удаляет tombstone;
- reason в inbox — «Исключена интеграция X».
Название storage key exclude_integrations сохраняется для compatibility;
семантика и default фиксируются в registry #33.
Исследование перед включением Save
Локальный config-audit считает значения/отклонения от defaults без вывода ids. Synthetic fixtures моделируют реальные классы: group lights, parent device, service/bridge, explicit override, tombstone. Если audit показывает, что ключ невозможно объяснить без вредного поведения, owner может отдельным решением перевести его в fixed rule до реализации UI.
UX/transaction
Preview diff: новые/скрытые/grouped candidates counts и конкретный список в локальной session. Apply пишет settings один раз, rebuild devices и создаёт named undo/config snapshot. Cancel no-op. Два клиента используют config rev.
Приёмка
- ни один runtime discovery key не скрыт от пользователя/registry;
- defaults совпадают frontend, backend, docs и fixtures;
- explicit marker никогда не исчезает из-за filter change;
- preview объясняет каждую изменившуюся binding;
- old config даёт прежний result до user action.