mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +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
3.3 KiB
3.3 KiB
ТЗ #12 — Vacuum Tier C: подсветка убираемой комнаты
- Issue: https://github.com/Matysh/houseplan-card/issues/12
- Приоритет: P2
- Статус ТЗ: ready for review
- Зависимости: Stage 1 resolver; room dialog #28 используется для текстового статуса
Цель
Интеграции без координат, но с текущим segment/service-area, показывают место уборки на уровне комнаты без выдуманного puck или trail.
Normalized activity adapter
Pure adapter registry возвращает:
type VacRoomActivity = {
sourceEntity: string;
rawSegments: string[];
state: 'cleaning' | 'inactive' | 'unknown';
integration: string | null;
};
Stage 1 adapters: документированные Roborock segment attributes/services; Matter RVC добавляется только после подтверждения HA contract. Неизвестный attribute не угадывается по порядку/первому числу.
Mapping
- Сначала explicit
marker.vacuum.segment_map[rawSegment] = room_id. - Затем exact canonical name match, только если source предоставляет имя.
- Неоднозначный/удалённый room id не подсвечивается и получает диагностику.
- UI в vacuum section показывает observed segments и room dropdown; mapping сохраняется только явным Save.
- Несколько активных segments могут подсветить несколько комнат.
room_highlight становится поддерживаемым boolean: default on для Tier C,
явный off скрывает визуал, но не очищает mapping.
Визуал и поведение
- Только при semantic cleaning state: мягкий 3 s breathing fill внутри существующей clean-floor path и небольшой robot badge в room label/dialog.
prefers-reduced-motion: статичный outline/badge без pulse.- Цвет не заменяет configured fill/Glow; overlay имеет отдельный class и
pointer-events:none. - Tier C не создаёт puck, path, fake coordinate, glow source или area split.
- Hidden/removed/HA-disabled vacuum не влияет на комнаты.
Эдж-кейсы
Room rename не ломает explicit id map; room deletion делает mapping stale; space mismatch блокирует highlight; segment меняется во время dialog; robot returning/paused/docked прекращает pulse; несколько vacuum в комнате дают один badge с count/accessible text.
Проверки и приёмка
- adapter fixtures по интеграциям, invalid/array/string segment forms;
- mapping priority, ambiguity, room delete/rename, disabled marker;
- browser/golden обычный и reduced-motion;
- room dialog сообщает «Пылесос убирает эту комнату»;
- без координат пользователь получает честную room-level индикацию и никогда не видит движущийся объект в вымышленной точке.