docs: update project README
This commit is contained in:
36
README.md
36
README.md
@@ -14,6 +14,9 @@
|
|||||||
- Сцены (загружаются с сервера)
|
- Сцены (загружаются с сервера)
|
||||||
- Таймер "включить на 4 часа"
|
- Таймер "включить на 4 часа"
|
||||||
- **Расписания** -- одноразовые таймеры и cron-задачи с выбором дней недели. Просмотр и отмена активных задач.
|
- **Расписания** -- одноразовые таймеры и cron-задачи с выбором дней недели. Просмотр и отмена активных задач.
|
||||||
|
- **API-ключи** -- просмотр, создание, отзыв и повторная активация гостевых ключей для администраторов.
|
||||||
|
- **Статистика и лог событий** -- просмотр сводки по группам и последних событий сервера.
|
||||||
|
- **Геофенс** -- опциональное автовыключение света при уходе от дома.
|
||||||
|
|
||||||
## Стек
|
## Стек
|
||||||
|
|
||||||
@@ -21,6 +24,9 @@
|
|||||||
- Riverpod -- управление состоянием
|
- Riverpod -- управление состоянием
|
||||||
- Dio -- HTTP-клиент
|
- Dio -- HTTP-клиент
|
||||||
- SharedPreferences -- локальное хранение настроек
|
- SharedPreferences -- локальное хранение настроек
|
||||||
|
- Geolocator -- геолокация
|
||||||
|
- Workmanager -- периодические фоновые задачи
|
||||||
|
- Flutter Local Notifications -- локальные уведомления
|
||||||
|
|
||||||
## Структура проекта
|
## Структура проекта
|
||||||
|
|
||||||
@@ -31,15 +37,19 @@ lib/
|
|||||||
│ └── home_config.dart -- модель "дома" (сервер)
|
│ └── home_config.dart -- модель "дома" (сервер)
|
||||||
├── services/
|
├── services/
|
||||||
│ ├── api_client.dart -- обёртка Dio для Ignis API
|
│ ├── api_client.dart -- обёртка Dio для Ignis API
|
||||||
|
│ ├── geofence_worker.dart -- фоновая проверка геофенса
|
||||||
│ └── settings_service.dart -- хранение домов в SharedPreferences
|
│ └── settings_service.dart -- хранение домов в SharedPreferences
|
||||||
├── providers/
|
├── providers/
|
||||||
│ └── providers.dart -- Riverpod-провайдеры
|
│ └── providers.dart -- Riverpod-провайдеры
|
||||||
├── screens/
|
├── screens/
|
||||||
|
│ ├── api_keys_screen.dart -- управление API-ключами
|
||||||
|
│ ├── event_log_screen.dart -- лог событий
|
||||||
│ ├── homes_screen.dart -- список домов
|
│ ├── homes_screen.dart -- список домов
|
||||||
│ ├── home_edit_screen.dart -- добавление/редактирование дома
|
│ ├── home_edit_screen.dart -- добавление/редактирование дома
|
||||||
│ ├── remote_screen.dart -- пульт управления группами
|
│ ├── remote_screen.dart -- пульт управления группами
|
||||||
│ ├── group_edit_screen.dart -- создание группы
|
│ ├── group_edit_screen.dart -- создание группы
|
||||||
│ └── schedules_screen.dart -- расписания
|
│ ├── schedules_screen.dart -- расписания
|
||||||
|
│ └── stats_screen.dart -- статистика
|
||||||
└── widgets/
|
└── widgets/
|
||||||
├── group_card.dart -- карточка группы с управлением
|
├── group_card.dart -- карточка группы с управлением
|
||||||
└── color_picker.dart -- HSV-пикер цвета
|
└── color_picker.dart -- HSV-пикер цвета
|
||||||
@@ -60,6 +70,17 @@ flutter build apk --release
|
|||||||
|
|
||||||
APK: `build/app/outputs/flutter-apk/app-release.apk`
|
APK: `build/app/outputs/flutter-apk/app-release.apk`
|
||||||
|
|
||||||
|
> Сейчас release APK подписывается debug-ключом из Flutter-шаблона. Для личной установки на телефон этого достаточно, для настоящего релиза подпись нужно заменить.
|
||||||
|
|
||||||
|
## Проверки
|
||||||
|
|
||||||
|
```bash
|
||||||
|
flutter analyze
|
||||||
|
flutter test
|
||||||
|
```
|
||||||
|
|
||||||
|
Текущий baseline после коммита `ffc2ea1` зелёный: анализатор без issues, тесты проходят.
|
||||||
|
|
||||||
## Настройка
|
## Настройка
|
||||||
|
|
||||||
При первом запуске приложение попросит добавить "дом" -- указать адрес сервера Ignis и API-ключ. После этого откроется пульт управления группами.
|
При первом запуске приложение попросит добавить "дом" -- указать адрес сервера Ignis и API-ключ. После этого откроется пульт управления группами.
|
||||||
@@ -84,9 +105,22 @@ APK: `build/app/outputs/flutter-apk/app-release.apk`
|
|||||||
| POST | `/schedules/cron` | Cron-расписание |
|
| POST | `/schedules/cron` | Cron-расписание |
|
||||||
| GET | `/schedules/tasks` | Список задач |
|
| GET | `/schedules/tasks` | Список задач |
|
||||||
| DELETE | `/schedules/{job_id}` | Отменить задачу |
|
| DELETE | `/schedules/{job_id}` | Отменить задачу |
|
||||||
|
| GET | `/auth/me` | Информация о текущем ключе |
|
||||||
|
| GET | `/api-keys` | Список гостевых ключей |
|
||||||
|
| POST | `/api-keys` | Создать гостевой ключ |
|
||||||
|
| POST | `/api-keys/revoke` | Отозвать ключ |
|
||||||
|
| POST | `/api-keys/activate` | Активировать ключ |
|
||||||
|
| GET | `/stats/summary` | Сводная статистика |
|
||||||
|
| GET | `/stats/log` | Лог событий |
|
||||||
|
|
||||||
Авторизация: заголовок `X-API-Key`.
|
Авторизация: заголовок `X-API-Key`.
|
||||||
|
|
||||||
|
## Текущие ограничения
|
||||||
|
|
||||||
|
- Целевая платформа сейчас Android.
|
||||||
|
- API-ключи пока хранятся в `SharedPreferences`; это следующий приоритетный технический долг.
|
||||||
|
- Архитектура всё ещё содержит крупный `providers.dart` и много сырых `Map<String, dynamic>`.
|
||||||
|
|
||||||
## Лицензия
|
## Лицензия
|
||||||
|
|
||||||
Частный проект.
|
Частный проект.
|
||||||
|
|||||||
Reference in New Issue
Block a user