32 lines
3.0 KiB
Markdown
32 lines
3.0 KiB
Markdown
# Итоги: 001 — первая версия ros_control
|
||||
|
|
|
|||
|
|
## Сделано
|
|||
|
|
|
|||
|
|
- Control Server на FastAPI: JSON API `/api/v1` (Bearer-токен) и WEB UI (Jinja2 + HTMX, вход по логину/паролю).
|
|||
|
|
- Local Metadata DB (SQLite): устройства с зашифрованными (Fernet) паролями, кэш статуса, бэкапы, задачи.
|
|||
|
|
- RouterOS REST-клиент: статус (модель, канал, ROS, FW, uptime), бэкап, смена канала, обновление ROS и FW.
|
|||
|
|
- Бэкап: `.backup` (без шифрования) + `.rsc` → устройство само загружает в S3 по presigned PUT → файлы удаляются с устройства.
|
|||
|
|
- S3 (Yandex Object Storage): список, скачивание (presigned GET), удаление.
|
|||
|
|
- Долгие и групповые операции через таблицу `jobs` с ограничением параллелизма (`MAX_CONCURRENCY`).
|
|||
|
|
- Docker Compose, `venv` для разработки, README, 4 автотеста.
|
|||
|
|
|
|||
|
|
## Проверено
|
|||
|
|
|
|||
|
|
- `pytest`: 4 теста (шифрование, разбор статуса, порядок шагов бэкапа с моками RouterOS/S3, авторизация API и отсутствие пароля в ответах) — пройдены.
|
|||
|
|
- Дымовой прогон сервера: редирект на логин, вход, добавление недоступного устройства (offline + причина), задача бэкапа завершается `failed` с понятной ошибкой, страница бэкапов открывается.
|
|||
|
|
|
|||
|
|
## НЕ проверено (нужно устройство и бакет)
|
|||
|
|
|
|||
|
|
- Реальная работа с RouterOS 7 и Yandex Object Storage. Главный риск — `/tool/fetch` с `http-method=put upload=yes` на целевой версии ROS.
|
|||
|
|
- Обновления ROS/FW (поведение при обрыве соединения на перезагрузке реализовано по документации).
|
|||
|
|
- Сборка и запуск Docker-образа не выполнялись.
|
|||
|
|
|
|||
|
|
## Отклонения от плана
|
|||
|
|
|
|||
|
|
- Администратор UI берётся из переменных окружения (`ADMIN_USER`/`ADMIN_PASSWORD`), таблицы `users` нет — достаточно для одного администратора.
|
|||
|
|
- Кнопки в строке устройства и групповые кнопки используют `hx-include` вместо общей формы (иначе значения каналов разных устройств смешивались).
|
|||
|
|
|
|||
|
|
## Ограничения
|
|||
|
|
|
|||
|
|
- Только RouterOS 7.x. Один администратор. HTMX-скрипт лежит локально (`app/ui/static`), внешние CDN не нужны.
|
|||
|
|
- Долгие задачи выполняются внутри процесса сервера; при перезапуске незавершённые помечаются `failed`.
|