feat: polish phase 7 forms and schedules
This commit is contained in:
38
README.md
38
README.md
@@ -5,7 +5,7 @@
|
||||
## Возможности
|
||||
|
||||
- **Мульти-дом** -- поддержка нескольких серверов Ignis (квартира, дача, друзья). Каждый дом -- отдельный сервер со своим URL и API-ключом.
|
||||
- **Группы ламп** -- создание, удаление, управление. При создании группы можно выбрать нужные лампы из списка обнаруженных устройств, пересканировать сеть.
|
||||
- **Группы ламп** -- создание, удаление и управление. При создании группы есть product-валидация, автогенерация `ID`, предупреждение о конфликтах по устройствам и более честный перескан сети.
|
||||
- **Управление освещением:**
|
||||
- Включение/выключение
|
||||
- Яркость 10--100% с шагом 10%
|
||||
@@ -13,10 +13,10 @@
|
||||
- RGB-цвет через HSV-пикер
|
||||
- Сцены (загружаются с сервера, отображаются с человекочитаемыми названиями)
|
||||
- Таймер "включить на 4 часа"
|
||||
- **Расписания** -- одноразовые таймеры и cron-задачи с выбором дней недели. Просмотр и отмена активных задач.
|
||||
- **API-ключи** -- просмотр, создание, отзыв и повторная активация гостевых ключей для администраторов.
|
||||
- **Расписания** -- одноразовые таймеры с выбором даты/времени и повторяющиеся задачи с выбором дней недели. Просмотр, создание, валидация и отмена активных задач.
|
||||
- **API-ключи** -- просмотр, создание, отзыв и повторная активация гостевых ключей для администраторов с отдельным UX для только что созданного ключа.
|
||||
- **Статистика и лог событий** -- просмотр сводки по группам и последних событий сервера.
|
||||
- **Геофенс** -- опциональное автовыключение света при уходе от дома.
|
||||
- **Геофенс и расстояния** -- live-дистанция до дома в UI и опциональное автовыключение света при уходе. Геофенс работает для текущего активного дома, показывает диагностический статус и использует cooldown/re-arm поведение.
|
||||
- **Устойчивость к ошибкам** -- гранулярные состояния загрузки (`LoadState`), централизованная обработка сетевых сбоев, soft-ошибки при управлении ползунками без спама в UI.
|
||||
|
||||
## Стек
|
||||
@@ -58,22 +58,23 @@ lib/
|
||||
├── features/
|
||||
│ ├── api_keys/providers/ -- управление гостевыми API-ключами
|
||||
│ ├── auth/providers/ -- auth/me и auth-state
|
||||
│ ├── homes/ -- дома, геолокация, geofence sync
|
||||
│ ├── groups/ -- валидация и логика форм групп
|
||||
│ ├── homes/ -- дома, геолокация, geofence sync/runtime
|
||||
│ ├── remote/providers/ -- polling групп, устройства, сцены, control errors
|
||||
│ ├── schedules/providers/ -- задачи расписания
|
||||
│ ├── schedules/ -- логика и providers расписаний
|
||||
│ ├── shared/providers/ -- базовые core providers
|
||||
│ └── stats/providers/ -- статистика и лог событий
|
||||
├── providers/
|
||||
│ └── providers.dart -- compatibility barrel для публичных provider-экспортов
|
||||
├── screens/
|
||||
│ ├── api_keys_screen.dart
|
||||
│ ├── event_log_screen.dart
|
||||
│ ├── homes_screen.dart
|
||||
│ ├── home_edit_screen.dart
|
||||
│ ├── remote_screen.dart
|
||||
│ ├── group_edit_screen.dart
|
||||
│ ├── schedules_screen.dart
|
||||
│ └── stats_screen.dart
|
||||
│ ├── api_keys_screen.dart -- экран гостевых API-ключей
|
||||
│ ├── event_log_screen.dart -- последние события сервера
|
||||
│ ├── homes_screen.dart -- список домов, distance/geofence статус
|
||||
│ ├── home_edit_screen.dart -- создание и редактирование дома
|
||||
│ ├── remote_screen.dart -- основной экран управления светом
|
||||
│ ├── group_edit_screen.dart -- создание группы с выбором устройств
|
||||
│ ├── schedules_screen.dart -- создание и просмотр расписаний
|
||||
│ └── stats_screen.dart -- статистика по командам
|
||||
└── widgets/
|
||||
├── build_info_text.dart -- лейбл с версией сборки
|
||||
├── group_card.dart
|
||||
@@ -107,10 +108,17 @@ flutter test
|
||||
|
||||
Текущий baseline зелёный: `flutter analyze`, `flutter test` и release APK сборка проходят штатно.
|
||||
|
||||
Дополнительно тестами уже прикрыты:
|
||||
- typed parsing/load-state для основных backend-ответов;
|
||||
- geofence distance/runtime логика;
|
||||
- чистая логика форм расписаний и групп.
|
||||
|
||||
## Настройка
|
||||
|
||||
При первом запуске приложение попросит добавить "дом" -- указать адрес сервера Ignis и API-ключ. После этого откроется пульт управления группами.
|
||||
|
||||
Если задать координаты дома, экран домов начнёт показывать расстояние до активного дома. Если дополнительно включить автовыключение при уходе и выдать Android фоновые разрешения на геолокацию и уведомления, приложение сможет в фоне выключать свет при удалении от текущего активного дома.
|
||||
|
||||
Для добавления второго дома: кнопка "домик" в левом верхнем углу пульта -> экран домов -> кнопка "+".
|
||||
|
||||
API-ключи хранятся отдельно от конфигурации домов в `flutter_secure_storage`. Старые ключи из `SharedPreferences` мигрируются автоматически.
|
||||
@@ -125,7 +133,7 @@ API-ключи хранятся отдельно от конфигурации
|
||||
|
||||
- Целевая платформа сейчас Android.
|
||||
- Release APK пока подписывается debug-ключом из Flutter-шаблона.
|
||||
- Геофенс всё ещё требует отдельной продуктовой и технической доводки: multi-home semantics, background permissions и retry/cooldown поведение пока не доведены до конца.
|
||||
- Build info в APK показывает дату сборки и короткий git hash текущего `HEAD`. Если сборка делается поверх незакоммиченного рабочего дерева, hash будет от последнего коммита, а не от локальных незакоммиченных изменений.
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
Reference in New Issue
Block a user