23eb1ba64c
Kotlin Compose app: подключение по коду SAC, списки и карточки, действия оператора, биометрия, push и deep links. Co-authored-by: Cursor <cursoragent@cursor.com>
86 lines
5.6 KiB
Markdown
86 lines
5.6 KiB
Markdown
# Seaca
|
||
|
||
**Seaca** (Security Event Alert Center App) — нативный мобильный клиент [Security Alert Center (SAC)](https://git.kalinamall.ru/PapaTramp/security-alert-center) для Android.
|
||
|
||
Оператор видит те же данные, что и в веб-интерфейсе SAC: обзор, события, отчёты, проблемы и хосты. Push-уведомления приходят по тем же правилам severity и cooldown, что Telegram/email/webhook на сервере. Управление пользователями, каналами оповещений и привязкой устройств — **только в веб-SAC** (раздел «Настройки»).
|
||
|
||
## Связанные репозитории
|
||
|
||
| Репозиторий | Роль |
|
||
|-------------|------|
|
||
| [security-alert-center](https://git.kalinamall.ru/PapaTramp/security-alert-center) | Сервер SAC: API, UI, оповещения, управление мобильными устройствами |
|
||
| [ssh-monitor](https://git.kalinamall.ru/PapaTramp/ssh-monitor) | Агент Linux |
|
||
| [RDP-login-monitor](https://git.kalinamall.ru/PapaTramp/RDP-login-monitor) | Агент Windows |
|
||
|
||
## Стек
|
||
|
||
| Слой | Технология |
|
||
|------|------------|
|
||
| UI | Kotlin, Jetpack Compose, Material 3 |
|
||
| Сеть | Retrofit / OkHttp, Kotlin Serialization |
|
||
| Хранение | DataStore + Android Keystore (токены, URL сервера) |
|
||
| Push | **Firebase Cloud Messaging (FCM)** |
|
||
| Минимум SDK | Android 8.0 (API 26) |
|
||
|
||
### FCM — бесплатно?
|
||
|
||
**Да.** Firebase Cloud Messaging — бесплатный сервис Google для доставки push на Android (и не только). Платный тариф Firebase нужен для других продуктов (Analytics, Crashlytics на больших объёмах и т.д.); для стандартных data/notification push лимиты практически не ограничивают типичный SAC. Данные событий формируются на **вашем** SAC-сервере; через FCM уходит только компактный payload (заголовок, id, deep link).
|
||
|
||
Альтернатива без Google (UnifiedPush) в этом проекте не планируется.
|
||
|
||
## Что есть в приложении
|
||
|
||
- Обзор, события, отчёты, проблемы, хосты (списки и карточки)
|
||
- Ack / Resolve для роли `operator` и выше
|
||
- Push с переходом в карточку события или problem
|
||
- Биометрическая блокировка при открытии (локально)
|
||
- Первичная привязка к серверу по **коду регистрации**, который выдаёт администратор в веб-SAC
|
||
|
||
## Чего нет в приложении (только веб)
|
||
|
||
- Управление пользователями SAC
|
||
- Настройки каналов (Telegram, SMTP, webhook), severity, policy
|
||
- Выдача и отзыв кодов регистрации, список устройств, способ входа на устройство — всё это в **Настройки → Мобильные устройства** на сервере
|
||
|
||
## Привязка телефона к серверу
|
||
|
||
1. Администратор в веб-SAC включает «Разрешать подключение мобильных устройств».
|
||
2. Создаёт **код регистрации** для пользователя (срок действия, одноразовый или с лимитом использований).
|
||
3. Оператор в Seaca: URL сервера (или из QR) + код + логин/пароль (если код не привязан к предварительной сессии).
|
||
4. Приложение регистрирует FCM-токен; устройство появляется в списке на сервере.
|
||
5. Администратор может отключить устройство, сменить разрешённый способ входа, переименовать.
|
||
|
||
Подробный план — [docs/ROADMAP.md](docs/ROADMAP.md).
|
||
|
||
## Статус
|
||
|
||
**Версия:** `0.4.0` (Android: Kotlin, Compose; enroll, UI, ack/resolve, FCM)
|
||
|
||
## Документация
|
||
|
||
| Документ | Назначение |
|
||
|----------|------------|
|
||
| [docs/operator-guide.md](docs/operator-guide.md) | Инструкция для оператора |
|
||
| [docs/ROADMAP.md](docs/ROADMAP.md) | План разработки |
|
||
| [SAC: seaca-mobile.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/seaca-mobile.md) | Админ: коды, устройства, сессия |
|
||
| [SAC: seaca-fcm.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/seaca-fcm.md) | FCM на сервере |
|
||
|
||
## Сборка
|
||
|
||
Требуется **JDK 17+** (Android Studio JBR или отдельная установка) и Android SDK (`local.properties` с `sdk.dir=…`).
|
||
|
||
```bash
|
||
# Опционально: google-services.json в app/ (из Firebase, не в git) — для FCM
|
||
./gradlew assembleDebug
|
||
# Windows:
|
||
gradlew.bat assembleDebug
|
||
```
|
||
|
||
APK: `app/build/outputs/apk/debug/app-debug.apk`
|
||
|
||
Без `google-services.json` приложение собирается, но FCM не инициализируется (просмотр данных работает).
|
||
|
||
## Лицензия
|
||
|
||
Как у остальных репозиториев семейства SAC (уточняется владельцем проекта).
|