81 lines
6.3 KiB
Markdown
81 lines
6.3 KiB
Markdown
# Актуальный инженерный checklist
|
||
|
||
Синхронизировано с кодом 2026-07-23. Источник продуктового порядка — `ROADMAP.md`.
|
||
|
||
## Работает сейчас
|
||
|
||
- [x] Go server, SQLite/WAL, Docker/Compose и `/healthz`.
|
||
- [x] Go agent 0.6.1, heartbeat, команды, backoff и OpenWrt init integration.
|
||
- [x] APK/IPK и LuCI-пакет.
|
||
- [x] Multi-user, роли admin/user, владение и передача роутеров.
|
||
- [x] Профиль, e-mail, смена/сброс пароля и управление сессиями.
|
||
- [x] Одноразовый secure enrollment; reusable token secrets хранятся как hash.
|
||
- [x] Alerts: offline, WAN, memory, disk, packet loss, latency, WAN IP, commands.
|
||
- [x] Acknowledge/resolved lifecycle и audit events.
|
||
- [x] E-mail/Telegram notifications, пользовательские пороги, repeat и delivery history.
|
||
- [x] Durable notification queue: leased claims, restart recovery, exponential retry, dead-letter и retention.
|
||
- [x] Reverse tunnel, cloud LuCI и wildcard router domain.
|
||
- [x] DirectDNS удалён из продукта; адресация роутеров работает только через cloud/wildcard-домен и исходящий туннель.
|
||
- [x] UCI preview/apply/commit/revert/backup/restore operations.
|
||
- [x] Fleet filters, bulk commands, metrics history и SSE auto-refresh.
|
||
- [x] Адаптивный UI и согласованные error/loading/empty состояния.
|
||
|
||
## Обязательное перед следующим production-релизом
|
||
|
||
- [x] Сгенерировать ключи `usign`/APK и зафиксировать проверяемые публичные ключи.
|
||
- [ ] Сохранить приватные ключи в зашифрованной офлайн-копии и добавить два base64-значения в GitHub Actions Secrets.
|
||
- [ ] Включить GitHub Pages из Actions и проверить первый подписанный package feed на реальном роутере.
|
||
- [ ] Выпустить первый `server-v*`, проверить Cosign/provenance и закрепить `RMM_RELEASE_VERSION` в production `.env`.
|
||
- [ ] Настроить SMTP и/или `RMM_TELEGRAM_BOT_TOKEN` в production environment.
|
||
- [ ] Выполнить тестовую отправку из реального пользовательского профиля.
|
||
- [ ] Проверить active → repeat → resolved на тестовом роутере.
|
||
- [ ] Проверить миграцию существующей production SQLite базы на копии.
|
||
- [ ] Сделать backup базы перед обновлением контейнера.
|
||
- [ ] Проверить `docker compose config --quiet` и healthcheck после deploy.
|
||
|
||
## Следующая разработка
|
||
|
||
- [ ] Добавить подтверждение e-mail и безопасную привязку Telegram-чата перед включением канала.
|
||
- [ ] Сделать встроенный центр уведомлений: unread/read, счётчик, переход к роутеру и обновление через SSE.
|
||
- [ ] Настройки по типам событий, maintenance/snooze и временное подавление алертов на период работ.
|
||
- [ ] Добавить операционные метрики уведомлений: queued/sent/failed, возраст очереди и последняя ошибка канала.
|
||
- [ ] Активная проверка проводных клиентов и `last_seen`, чтобы flow offload не оставлял реально работающий ПК в состоянии `STALE`.
|
||
- [ ] Подписанный webhook channel.
|
||
- [ ] Quiet hours/timezone и per-device notification overrides.
|
||
- [ ] Конфигурационные backup artifacts и retention.
|
||
- [x] CI для тестов, Docker, multi-version APK/IPK и release artifacts.
|
||
- [x] Keyless Cosign, provenance/SBOM контейнеров и подписанные checksum релизов.
|
||
- [x] Нативные подписанные `Packages.sig`/`packages.adb` и публикация package feed.
|
||
- [ ] Signed update manifest и безопасное обновление агента из кабинета.
|
||
- [ ] Per-device tunnel credentials.
|
||
- [ ] Organizations и расширенный RBAC.
|
||
- [ ] MFA, command signatures и replay protection.
|
||
- [ ] Graceful shutdown, readiness, server metrics и load tests.
|
||
|
||
## Постоянная проверка изменений
|
||
|
||
Это повторяемый шаблон для каждого следующего изменения. Результат последнего проверенного коммита фиксируется отдельно ниже.
|
||
|
||
- [ ] `gofmt` и `go test ./...`.
|
||
- [ ] `go vet ./...`.
|
||
- [ ] `node --check web/app.js` и `web/landing-motion.js`.
|
||
- [ ] `docker compose config --quiet`.
|
||
- [ ] Docker build.
|
||
- [ ] Desktop 1366/1920, 4:3 1024, tablet 768 и mobile 390/360.
|
||
- [ ] Отсутствие секретов и случайных production-файлов в diff.
|
||
|
||
## Последняя верификация — `6a03061`
|
||
|
||
- [x] `gofmt`, `go test ./...` и `go vet ./...`.
|
||
- [x] `node --check web/app.js` и `web/landing-motion.js`.
|
||
- [x] `docker compose config --quiet` и Docker build.
|
||
- [x] Notification profile: 768×1024, 390×844 и 360×800 без горизонтального overflow.
|
||
- [x] Недоступные SMTP/Telegram-каналы блокируются с понятной подсказкой.
|
||
- [x] Ошибки тестовой отправки локализованы и сохраняют request ID.
|
||
- [x] Проверены diff и отсутствие реальных секретов; присутствуют только безопасные example-placeholder значения.
|
||
|
||
## Документация при изменении API и конфигурации
|
||
|
||
- [ ] Синхронизировать `server/README.md`, `docs/api.md` и `.env.example` с endpoint и переменными окружения.
|
||
- [ ] Обновить `docs/recent-progress.md`, checklist и roadmap без противоречащих статусов.
|