# Seaca **Seaca** (Security Event Alert Center App) — нативный мобильный клиент **Security Alert Center (SAC)** для Android. Оператор видит те же данные, что и в веб-интерфейсе SAC: обзор, события, отчёты, проблемы и хосты. Push-уведомления приходят по тем же правилам severity и cooldown, что Telegram/email/webhook на сервере. Управление пользователями, каналами оповещений и привязкой устройств — **только в веб-SAC** (раздел «Настройки»). ## Связанные репозитории | Репозиторий | Роль | |-------------|------| | security-alert-center | Сервер SAC: API, UI, оповещения, управление мобильными устройствами | | ssh-monitor | Агент Linux | | RDP-login-monitor | Агент Windows | **GitHub** | Репозиторий | URL | |-------------|-----| | security-alert-center | https://github.com/PTah/security-alert-center | | ssh-monitor | https://github.com/PTah/ssh-monitor | | RDP-login-monitor | https://github.com/PTah/RDP-login-monitor | **kalinamall** | Репозиторий | URL | |-------------|-----| | security-alert-center | https://git.kalinamall.ru/PapaTramp/security-alert-center | | ssh-monitor | https://git.kalinamall.ru/PapaTramp/ssh-monitor | | RDP-login-monitor | https://git.kalinamall.ru/PapaTramp/RDP-login-monitor | **home** (git.papatramp.ru) | Репозиторий | URL | |-------------|-----| | security-alert-center | https://git.papatramp.ru/PapaTramp/security-alert-center | | ssh-monitor | https://git.papatramp.ru/PapaTramp/ssh-monitor | | RDP-login-monitor | https://git.papatramp.ru/PapaTramp/RDP-login-monitor | ## Стек | Слой | Технология | |------|------------| | 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) | ## Что есть в приложении - Обзор, события, отчёты, проблемы, хосты (списки и карточки с читаемыми полями) - Pull-to-refresh на обзоре и в списках - Фильтры событий и проблем (severity, status) - Формат даты/времени на выбор (слэш, дефис, точка или системный локаль) - Ack / Resolve для роли `operator` и выше - Push с переходом в карточку события или problem; режимы: со звуком, без звука, выключено - Выбор звука уведомления: системный или свой (ringtone picker) - Биометрическая блокировка при **запуске** и при возврате в приложение - Экран «Моё устройство»: сервер, пользователь, роль, версия, настройки push, выход - Первичная привязка к серверу по **коду регистрации**, который выдаёт администратор в веб-SAC ## Чего нет в приложении (только веб) - Управление пользователями SAC - Настройки каналов (Telegram, SMTP, webhook), severity, policy - Выдача и отзыв кодов регистрации, список устройств, способ входа на устройство — всё это в **Настройки → Мобильные устройства** на сервере ## Привязка телефона к серверу 1. Администратор в веб-SAC включает «Разрешать подключение мобильных устройств». 2. Создаёт **код регистрации** для пользователя (срок действия, одноразовый или с лимитом использований). 3. Оператор в Seaca: URL API SAC (выдаёт администратор) + код + логин/пароль (если код не привязан к предварительной сессии). 4. Приложение регистрирует FCM-токен; устройство появляется в списке на сервере. 5. Администратор может отключить устройство, сменить разрешённый способ входа, переименовать. Подробный план — [docs/ROADMAP.md](docs/ROADMAP.md). ## Статус **Версия:** `0.5.7` (Android: Kotlin, Compose; enroll, UI, ack/resolve, FCM, биометрия, звук push, форматы даты) ## Документация | Документ | Назначение | |----------|------------| | [docs/operator-guide.md](docs/operator-guide.md) | Инструкция для оператора | | [docs/ROADMAP.md](docs/ROADMAP.md) | План разработки | ## Сборка Требуется **JDK 17+** (Android Studio JBR или отдельная установка) и Android SDK (`local.properties` с `sdk.dir=…`). ```bash # Опционально: конфиг Firebase в app/ (шаблон *.example, рабочий файл не в git) — для FCM ./gradlew assembleDebug # Windows: gradlew.bat assembleDebug ``` APK: `app/build/outputs/apk/debug/app-debug.apk` Без конфига Firebase приложение собирается, но FCM не инициализируется (просмотр данных работает). ## Лицензия Как у остальных репозиториев семейства SAC (уточняется владельцем проекта).