diff --git a/README.md b/README.md index bf530c6..e274c49 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,19 @@ -# Seaca +# Seaca -**Seaca** (Security Event Alert Center App) — нативный мобильный клиент [Security Alert Center (SAC)](https://git.kalinamall.ru/PapaTramp/security-alert-center) для Android. +**Seaca** (Security Event Alert Center App) — нативный мобильный клиент [Security Alert Center (SAC)](../security-alert-center) для Android. Оператор видит те же данные, что и в веб-интерфейсе SAC: обзор, события, отчёты, проблемы и хосты. Push-уведомления приходят по тем же правилам severity и cooldown, что Telegram/email/webhook на сервере. Управление пользователями, каналами оповещений и привязкой устройств — **только в веб-SAC** (раздел «Настройки»). ## Связанные репозитории +Ссылки ведут на тот же хост, с которого открыт этот репозиторий (GitHub, kalinamall, home и т.д.). + | Репозиторий | Роль | |-------------|------| -| [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 | +| [**seaca**](.) | **Этот репозиторий** — мобильный клиент Android | +| [security-alert-center](../security-alert-center) | Сервер SAC: API, UI, оповещения, управление мобильными устройствами | +| [ssh-monitor](../ssh-monitor) | Агент Linux | +| [RDP-login-monitor](../RDP-login-monitor) | Агент Windows | ## Стек @@ -22,18 +25,17 @@ | 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) в этом проекте не планируется. - ## Что есть в приложении -- Обзор, события, отчёты, проблемы, хосты (списки и карточки) +- Обзор, события, отчёты, проблемы, хосты (списки и карточки с читаемыми полями) +- Pull-to-refresh на обзоре и в списках +- Фильтры событий и проблем (severity, status) +- Формат даты/времени на выбор (слэш, дефис, точка или системный локаль) - Ack / Resolve для роли `operator` и выше -- Push с переходом в карточку события или problem -- Биометрическая блокировка при открытии (локально) +- Push с переходом в карточку события или problem; режимы: со звуком, без звука, выключено +- Выбор звука уведомления: системный или свой (ringtone picker) +- Биометрическая блокировка при **запуске** и при возврате в приложение +- Экран «Моё устройство»: сервер, пользователь, роль, версия, настройки push, выход - Первичная привязка к серверу по **коду регистрации**, который выдаёт администратор в веб-SAC ## Чего нет в приложении (только веб) @@ -46,7 +48,7 @@ 1. Администратор в веб-SAC включает «Разрешать подключение мобильных устройств». 2. Создаёт **код регистрации** для пользователя (срок действия, одноразовый или с лимитом использований). -3. Оператор в Seaca: URL сервера (или из QR) + код + логин/пароль (если код не привязан к предварительной сессии). +3. Оператор в Seaca: URL API SAC (выдаёт администратор) + код + логин/пароль (если код не привязан к предварительной сессии). 4. Приложение регистрирует FCM-токен; устройство появляется в списке на сервере. 5. Администратор может отключить устройство, сменить разрешённый способ входа, переименовать. @@ -54,7 +56,7 @@ ## Статус -**Версия:** `0.4.0` (Android: Kotlin, Compose; enroll, UI, ack/resolve, FCM) +**Версия:** `0.5.7` (Android: Kotlin, Compose; enroll, UI, ack/resolve, FCM, биометрия, звук push, форматы даты) ## Документация @@ -62,8 +64,10 @@ |----------|------------| | [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 на сервере | +| [SAC: seaca-mobile.md](../security-alert-center) (`docs/seaca-mobile.md`) | Админ: коды, устройства, сессия | +| [SAC: seaca-fcm.md](../security-alert-center) (`docs/seaca-fcm.md`) | FCM на сервере | + +> Документы SAC лежат в репозитории **security-alert-center** (ссылка выше ведёт на тот же Git-хост, что и этот репозиторий). В README и docs **нет** prod-URL и секретов — безопасно для зеркала на GitHub; полные адреса серверов — у администратора SAC или во внутренних заметках kalinamall/home. ## Сборка diff --git a/app/src/main/java/ru/kalinamall/seaca/ui/screens/ConnectScreen.kt b/app/src/main/java/ru/kalinamall/seaca/ui/screens/ConnectScreen.kt index 6ba30af..37c3af2 100644 --- a/app/src/main/java/ru/kalinamall/seaca/ui/screens/ConnectScreen.kt +++ b/app/src/main/java/ru/kalinamall/seaca/ui/screens/ConnectScreen.kt @@ -1,4 +1,4 @@ -package ru.kalinamall.seaca.ui.screens +package ru.kalinamall.seaca.ui.screens import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -52,7 +52,7 @@ fun ConnectScreen( value = serverUrl, onValueChange = { serverUrl = it }, label = { Text("URL сервера") }, - placeholder = { Text("https://sac-api.kalinamall.ru") }, + placeholder = { Text("https://host.example") }, modifier = Modifier.fillMaxWidth(), singleLine = true, ) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 6353438..f653303 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,6 +1,6 @@ -# Roadmap — Seaca +# Roadmap — Seaca -Мобильный клиент SAC (Kotlin). Серверные задачи (API, настройки в веб-SAC, FCM с бэкенда) — в [security-alert-center](https://git.kalinamall.ru/PapaTramp/security-alert-center), фаза **v0.6 — Mobile**. +Мобильный клиент SAC (Kotlin). Серверные задачи (API, настройки в веб-SAC, FCM с бэкенда) — в [security-alert-center](../security-alert-center), фаза **v0.6 — Mobile**. --- @@ -66,12 +66,17 @@ --- -## v0.5 — Полировка (позже) +## v0.5 — Полировка ✅ (основное) - [x] Refresh token rotation (`POST /api/v1/mobile/auth/refresh`) — уже в v0.1 +- [x] Биометрия при **запуске** и при возврате в приложение +- [x] Pull-to-refresh на обзоре и в списках +- [x] Формат даты/времени (несколько пресетов + системный локаль) +- [x] Режимы push на устройстве: звук / без звука / выкл. +- [x] Звук push: системный или пользовательский (ringtone picker) +- [x] Экран «Моё устройство»: сервер, пользователь, роль, версия, настройки, «Выйти» - [ ] Виджет: число open problems - [ ] Offline-кэш последних N событий (Room) -- [x] Экран «Моё устройство»: имя, сервер, версия, «Выйти» (базовый) - [ ] Минимальная версия приложения (проверка с сервера) --- diff --git a/docs/operator-guide.md b/docs/operator-guide.md index b1a7315..5980350 100644 --- a/docs/operator-guide.md +++ b/docs/operator-guide.md @@ -1,9 +1,9 @@ -# Seaca — руководство оператора +# Seaca — руководство оператора ## Первая настройка 1. Получите от администратора: - - адрес сервера (**`https://sac-api.kalinamall.ru`** — мобильный API; веб для админов — `https://sac.kalinamall.ru`); + - **URL API SAC** для мобильного приложения (HTTPS, путь `/api/v1/…`); - код регистрации `sacmob_…`; - при необходимости — логин и пароль SAC. 2. Установите APK Seaca. @@ -16,22 +16,31 @@ | Раздел | Содержание | |--------|------------| -| Обзор | Сводка за 24 ч, открытые проблемы | +| Обзор | Сводка за 24 ч, открытые проблемы; потяните вниз для обновления | | События | Лента с фильтром по severity | -| Проблемы | Инциденты; для monitor/admin — подтвердить / закрыть | +| Проблемы | Инциденты; для operator и выше — подтвердить / закрыть | | Хосты | Агенты ssh-monitor / RDP-login-monitor | | Отчёты | Суточные отчёты SSH и RDP | +| Моё устройство | Сервер, пользователь, режим push, звук, формат даты/времени, выход | ## Push-уведомления -Появятся после настройки FCM администратором. Нажатие на уведомление открывает карточку события или проблемы. +Настраиваются на экране **Моё устройство**: + +| Режим | Поведение | +|-------|-----------| +| Push и звук | Уведомление со звуком (системным или выбранным) | +| Push без звука | Только banner, без звука | +| Без push и звука | Данные в приложении по запросу | + +Нажатие на уведомление открывает карточку события или проблемы. ## Блокировка -При возврате в приложение может запрашиваться отпечаток / PIN устройства (если включено в системе). +При **запуске** приложения и при возврате из фона может запрашиваться отпечаток / PIN устройства (если включено в системе). ## Потеря доступа Обратитесь к администратору: новый код регистрации или снятие отзыва устройства в веб-SAC. -Подробности для админов — в [seaca-mobile.md](https://git.kalinamall.ru/PapaTramp/security-alert-center/src/branch/main/docs/seaca-mobile.md) (репозиторий SAC). +Подробности для админов — в [seaca-mobile.md](../security-alert-center) (файл `docs/seaca-mobile.md` в репозитории SAC).