Files
seaca/docs/ROADMAP.md
T
PTah 927948d646 docs: initial Seaca repo — README and mobile roadmap
Kotlin Android client for SAC with FCM push and admin enrollment codes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 12:34:00 +10:00

108 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Roadmap — Seaca
Мобильный клиент SAC (Kotlin). Серверные задачи (API, настройки в веб-SAC, FCM с бэкенда) — в [security-alert-center](https://git.kalinamall.ru/PapaTramp/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, Hilt/Koin, Retrofit, DataStore
- [ ] Экран «Подключение»: URL SAC, код регистрации, логин/пароль
- [ ] `POST /api/v1/auth/login` + обмен кода на `device_id` (когда API готов на SAC)
- [ ] Secure storage: `base_url`, access/refresh token, `device_id`
- [ ] Экран «Ошибка / нет сети» и проверка `GET /health`
- [ ] Базовая навигация: Обзор, События, Проблемы, Хосты, Отчёты
- [ ] CI: сборка debug APK (опционально — позже)
**Зависимость:** SAC v0.6.1 — `mobile_devices_allowed`, enrollment codes, `POST /mobile/enroll`
---
## v0.2 — Паритет с веб-UI (чтение)
- [ ] Списки с пагинацией: events, problems, hosts, reports
- [ ] Карточки: event, problem (+ связанные events), host (+ inventory)
- [ ] Dashboard: виджеты как `GET /api/v1/dashboards/summary`
- [ ] Фильтры events/problems (severity, type, host) — упрощённый набор
- [ ] Pull-to-refresh; polling в foreground (SSE на Android в фоне не используем)
- [ ] Тёмная тема (как веб)
- [ ] Локализация: русский
---
## v0.3 — Действия оператора
- [ ] `POST /api/v1/problems/{id}/ack` и `/resolve`
- [ ] Обновление списков после действия
- [ ] Скрытие admin-only API (403) — без попыток открыть settings/users
- [ ] Биометрический замок при возврате в приложение
- [ ] Certificate pinning / «Доверять сертификату» для внутреннего TLS
---
## v0.4 — Push (FCM)
- [ ] Firebase-проект, `google-services.json` (не в git)
- [ ] Регистрация FCM-токена: `PUT /api/v1/mobile/devices/{id}/fcm`
- [ ] Обработка data message: `kind`, `id`, `severity`, deep link `seaca://…`
- [ ] Notification channels по severity (critical / high / default)
- [ ] Actions в уведомлении: «Подтвердить» / «Закрыть» problem (operator+)
- [ ] Тестовый push из веб-SAC («Проверить push на устройстве»)
**Зависимость:** SAC worker — `use_push_mobile` в notification policy, `push_notify.py`
---
## v0.5 — Полировка
- [ ] Refresh token rotation (`POST /api/v1/auth/refresh`)
- [ ] Виджет: число open problems
- [ ] Offline-кэш последних N событий (Room)
- [ ] Экран «Моё устройство»: имя, сервер, версия, «Выйти»
- [ ] Минимальная версия приложения (проверка с сервера)
---
## Сервер SAC (отдельный репозиторий) — чеклист v0.6
Эти пункты реализуются в **security-alert-center**, не в Seaca:
- [ ] `mobile_settings`: `devices_allowed`, push min severity (по умолчанию = policy)
- [ ] Таблицы `mobile_devices`, `mobile_enrollment_codes`
- [ ] Веб: **Настройки → Мобильные устройства** — вкл/выкл, коды, список, отзыв, способ логина
- [ ] API enrollment: создать код (admin), погасить, список устройств, revoke
- [ ] JWT refresh + привязка к `device_id`
- [ ] FCM HTTP v1 из worker (service account JSON в `/etc/security-alert-center/`)
- [ ] Audit: выдача кода, enroll, revoke, смена FCM
---
## Не в плане (пока)
- iOS
- UnifiedPush без FCM
- Управление пользователями SAC из телефона
- Настройки Telegram/SMTP с телефона
- Несколько SAC-серверов в одном приложении
---
## KPI
- От события на SAC до push на телефон: p95 &lt; 45 с (как Telegram)
- Pairing по коду: &lt; 2 минут для оператора
- Отзыв устройства: push прекращается в течение 1 минуты