Files
seaca/docs/ROADMAP.md
T
Andrey Lutsenko e55e9fdf16 docs: README и guides для 0.5.7, относительные ссылки между репо
Обновлены возможности приложения, версия, документация без prod-URL для GitHub; sibling-ссылки работают на каждом зеркале.
2026-06-14 21:17:49 +10:00

5.8 KiB
Raw Blame History

Roadmap — Seaca

Мобильный клиент SAC (Kotlin). Серверные задачи (API, настройки в веб-SAC, FCM с бэкенда) — в security-alert-center, фаза v0.6 — Mobile.


Принятые решения

Тема Решение
UI Kotlin + Jetpack Compose (нативно)
Push FCM (бесплатный канал доставки)
Привязка Код регистрации от администратора (+ URL сервера; QR опционально позже)
Оповещения Те же правила SAC: min_severity, cooldown, dedup — канал push_mobile в policy
Админка устройств Только веб-SAC: список, отзыв, способ логина, выдача кодов
Роли viewer — просмотр; operator — ack/resolve; admin-функции — не в приложении

v0.1 — Каркас приложения

  • Gradle-проект: Compose, Navigation, Retrofit, DataStore (DI-фреймворк не используем — SacRepository вручную)
  • Экран «Подключение»: URL SAC, код регистрации, логин/пароль
  • POST /api/v1/mobile/enroll + refresh-сессия
  • Secure storage: base_url, access/refresh token, device_id
  • Ошибки сети / GET /health перед enroll
  • Базовая навигация: Обзор, События, Проблемы, Хосты, Отчёты
  • CI: сборка debug APK (локально — gradlew assembleDebug, JDK 17+)

Зависимость: SAC ≥ 0.9.0mobile_devices_allowed, enrollment codes, POST /api/v1/mobile/enroll


v0.2 — Паритет с веб-UI (чтение)

  • Списки с пагинацией: events, problems, hosts, reports
  • Карточки: event, problem (+ связанные events), host (+ inventory)
  • Dashboard: виджеты как GET /api/v1/dashboards/summary
  • Фильтры events/problems (severity, status) — упрощённый набор
  • Pull-to-refresh
  • Тёмная тема (системная)
  • Локализация: русский

v0.3 — Действия оператора

  • POST /api/v1/problems/{id}/ack и /resolve
  • Обновление карточки после действия
  • Admin-only API не вызываем из приложения
  • Биометрический замок при возврате в приложение
  • «Доверять сертификату» для внутреннего TLS (self-signed)

v0.4 — Push (FCM) (частично)

  • Firebase-проект, google-services.json (не в git; пример google-services.json.example)
  • Регистрация FCM-токена: PUT /api/v1/mobile/devices/me/fcm
  • Обработка data message: kind, id, severity, deep link seaca://…
  • Notification channels по severity (critical / high / default)
  • Actions в уведомлении: «Подтвердить» / «Закрыть» problem (operator+) — после первого APK
  • Тестовый push из веб-SAC («Проверить push на устройстве») — на стороне SAC

Зависимость: SAC worker — use_mobile в notification policy, SAC_FCM_* в sac-api.env (включается после первого APK)


v0.5 — Полировка (основное)

  • Refresh token rotation (POST /api/v1/mobile/auth/refresh) — уже в v0.1
  • Биометрия при запуске и при возврате в приложение
  • Pull-to-refresh на обзоре и в списках
  • Формат даты/времени (несколько пресетов + системный локаль)
  • Режимы push на устройстве: звук / без звука / выкл.
  • Звук push: системный или пользовательский (ringtone picker)
  • Экран «Моё устройство»: сервер, пользователь, роль, версия, настройки, «Выйти»
  • Виджет: число open problems
  • Offline-кэш последних N событий (Room)
  • Минимальная версия приложения (проверка с сервера)

Сервер SAC (отдельный репозиторий) — чеклист v0.6

Эти пункты реализуются в security-alert-center, не в Seaca:

  • mobile_settings: devices_allowed, max devices, min app version
  • Таблицы mobile_devices, mobile_enrollment_codes, mobile_refresh_tokens
  • Веб: Настройки → Мобильные устройства — вкл/выкл, коды, список, отзыв, способ логина
  • API enrollment: создать код (admin), погасить, список устройств, revoke, test push
  • JWT refresh + привязка к device_id
  • FCM HTTP v1 из worker (SAC_FCM_* в sac-api.env)
  • Audit: выдача кода, enroll, revoke, смена FCM

Не в плане (пока)

  • iOS
  • UnifiedPush без FCM
  • Управление пользователями SAC из телефона
  • Настройки Telegram/SMTP с телефона
  • Несколько SAC-серверов в одном приложении

KPI

  • От события на SAC до push на телефон: p95 < 45 с (как Telegram)
  • Pairing по коду: < 2 минут для оператора
  • Отзыв устройства: push прекращается в течение 1 минуты