-
Notifications
You must be signed in to change notification settings - Fork 1
Architecture
Vyacheslav edited this page Mar 28, 2026
·
1 revision
MIA-ScreenCapture состоит из слоев:
- GUI (
PyQt6) для интерактивного управления. - API (
Flask+waitress) для внешней автоматизации. - CLI (
argparse) для командной работы и скриптов. - Core/Recorder/Scheduler для доменной логики записи.
-
main.py: точка входа и оркестрация всех компонентов. -
gui/: окна, вкладки, контролы, трей, горячие клавиши. -
api/: аутентификация, маршруты, схемы валидации, swagger. -
recorder/: видеозахват, аудиозапись, ffmpeg-пайплайн. -
scheduler/: планировщик задач записи. -
config.py: dataclass-конфигурация и сохранение JSON. -
logger_config.py: настройка логов и API-логов по дням.
- Пользователь/клиент вызывает старт (
GUI,CLIилиAPI). - Валидируются параметры записи.
- Запускается видеозахват и при необходимости аудиозахват.
- Данные пишутся во временные файлы.
- При остановке выполняется финализация через FFmpeg.
- Результат добавляется в список recent recordings.
- При запуске создается
APIServer. - Настраивается API key аутентификация и rate limit.
- Регистрируются маршруты
/api/v1/*и legacy/api/*. - Для GUI доступны контролы: start/stop/restart/apply/get_status.
- Все запросы логируются с
request_id, latency и IP.
- Для API используется
pydantic(api/schemas.py). - Ошибки приводятся к единому контракту:
success=false,error.code,error.message,error.details,trace_id.
- Основные логи:
logs/mia_YYYY-MM-DD.log. - API-логи:
logs/api/api_YYYY-MM-DD.log. - Эксплуатационные метрики:
GET /api/v1/observability/metrics. - Baseline SLO:
GET /api/v1/observability/baseline.