TVIP Provisioning Service

Начало работы

  • Обзор системы
    • Назначение
    • Принцип работы
      • Общая схема работы
      • Диаграмма взаимодействия
    • Архитектурные принципы
      • Clean Architecture
      • Dependency Injection
      • Repository Pattern
    • Технологический стек
      • Backend
      • Frontend
      • Инфраструктура
    • Форматы данных
      • XML конфигурация
      • Dot notation
      • Метаданные устройства
    • Сценарии использования
      • Базовое развертывание
      • Управление устройствами
      • Управление конфигурациями
      • Мониторинг
    • Ограничения и требования
      • Сетевые требования
      • Производительность
      • Безопасность
    • Следующие шаги
  • Руководство разработчика
    • Быстрый старт
      • Шаг 1: Клонировать репозиторий
      • Шаг 2: Запустить через Docker Compose
      • Шаг 3: Проверить работу
      • Шаг 4: Настроить дефолтную конфигурацию
      • Шаг 5: Протестировать provision
    • Contributing
      • Code Style
      • Commit Messages
      • Pull Requests
    • Testing
      • Unit Tests
      • Integration Tests
      • Coverage
    • Локальная разработка
      • Требования
      • Backend
      • Frontend
    • Структура проекта
    • Архитектурные принципы
    • Добавление нового endpoint

Архитектура

  • Архитектура системы
    • Проектирование системы
      • Компонентная архитектура
      • Docker архитектура
        • Контейнеры
        • Сетевое взаимодействие
      • Слои приложения
        • Domain Layer (src/domain/)
        • Application Layer (src/application/)
        • Infrastructure Layer (src/infrastructure/)
        • Presentation Layer (src/presentation/)
      • Масштабирование
        • Горизонтальное масштабирование
        • Вертикальное масштабирование
        • Кэширование
      • Безопасность
        • Текущая реализация
        • Рекомендации для production
    • Компоненты системы
      • Backend компоненты
        • FastAPI приложение
        • Uvicorn сервер
        • PostgreSQL
        • Nginx
        • Supervisord
      • Frontend компоненты
        • React приложение
        • Vite dev server
        • API клиент (Axios)
        • Nginx (production)
      • Доменные компоненты
        • Entities (Сущности)
        • Value Objects
        • Repositories (Репозитории)
        • Services (Доменные сервисы)
      • Прикладные компоненты
        • Use Cases
      • Инфраструктурные компоненты
        • SQLAlchemy модели
        • Репозитории
        • Сериализаторы
        • Value Objects
        • Dependency Injection
        • Фабрики
      • Взаимодействие компонентов
        • Поток запроса от TVIP
        • Поток API запроса
    • Потоки данных
      • Поток регистрации нового устройства
      • Поток обновления конфигурации устройства
      • Поток получения конфигурации существующим устройством
      • Поток сброса конфигурации
      • Поток обновления дефолтной конфигурации
      • Поток получения списка устройств
      • Преобразование форматов данных
        • Dot notation → Hierarchical dict → XML
        • Хранение в PostgreSQL
      • Кэширование и оптимизация
        • Возможности для будущей оптимизации
    • Обзор
    • Слои архитектуры
    • Диаграмма зависимостей

API Reference

  • API Reference
    • Provision API
      • GET /prov/tvip_provision.xml
        • Headers
        • Логика работы
        • Response
        • Примеры использования
        • Ошибки
        • Автоматическая документация
        • Настройка TVIP-приставок
        • Периодичность обращений
        • Мониторинг обращений
    • Devices Management API
      • GET /api/devices
        • Query Parameters
        • Response
        • Примеры использования
      • GET /api/devices/{mac_address}/config
        • Path Parameters
        • Response
        • Примеры использования
        • Ошибки
      • PUT /api/devices/{mac_address}/config/update
        • Path Parameters
        • Request Body
        • Response
        • Примеры использования
        • Ошибки
      • PUT /api/devices/{mac_address}/config/replace
        • Path Parameters
        • Request Body
        • Response
        • Примеры использования
      • POST /api/devices/{mac_address}/config/reset
        • Path Parameters
        • Request Body
        • Response
        • Примеры использования
        • Логика работы
        • Автоматическая документация
    • Default Configuration API
      • GET /api/default/config
        • Response
        • Примеры использования
      • PUT /api/default/config/update
        • Request Body
        • Response
        • Примеры использования
        • Влияние на устройства
      • PUT /api/default/config/replace
        • Request Body
        • Response
        • Примеры использования
        • Рекомендации
        • Валидация конфигурации
        • Автоматическая документация
      • Формат конфигурации
        • Dot notation
        • Типичные параметры
    • Общая информация
      • Base URL
      • Формат данных
      • Аутентификация
      • Коды статусов
      • Формат ошибок
      • Pagination
      • Interactive API Documentation

Доменный слой

  • Доменный слой
    • Entities (Сущности)
      • Device
        • Device
      • ProvisionConfig
        • ProvisionConfig
    • Value Objects
      • MacAddress
        • MacAddress
      • IpAddress
        • IpAddress
      • ConfigData
        • ConfigData
      • ProvisionConfigType
        • ConfigType
        • ProvisionConfigType
    • Repositories
      • DeviceRepository
        • DeviceRepository
      • ProvisionRepository
        • ProvisionRepository
    • Domain Services
      • XmlSerializer
        • XmlSerializer
      • DefaultConfigService
        • DefaultConfigService
    • Обзор
    • Основные компоненты
    • Принципы

Прикладной слой

  • Прикладной слой
    • Use Cases
      • HandleProvisionRequestUseCase
      • GetDevicesListUseCase
      • GetDeviceConfigUseCase
      • UpdateDeviceConfigUseCase
      • ReplaceDeviceConfigUseCase
      • ResetDeviceConfigUseCase
      • GetDefaultConfigUseCase
      • UpdateDefaultConfigUseCase
      • ReplaceDefaultConfigUseCase
    • Обзор
    • Use Cases
      • HandleProvisionRequestUseCase
        • HandleProvisionRequestUseCase.__init__()
        • HandleProvisionRequestUseCase.execute()
      • GetDevicesListUseCase
        • GetDevicesListUseCase.__init__()
        • GetDevicesListUseCase.execute()
      • GetDeviceConfigUseCase
        • GetDeviceConfigUseCase.__init__()
        • GetDeviceConfigUseCase.execute()
      • UpdateDeviceConfigUseCase
        • UpdateDeviceConfigUseCase.__init__()
        • UpdateDeviceConfigUseCase.execute()
      • ReplaceDeviceConfigUseCase
        • ReplaceDeviceConfigUseCase.__init__()
        • ReplaceDeviceConfigUseCase.execute()
      • ResetDeviceConfigUseCase
        • ResetDeviceConfigUseCase.__init__()
        • ResetDeviceConfigUseCase.execute()
      • GetDefaultConfigUseCase
        • GetDefaultConfigUseCase.__init__()
        • GetDefaultConfigUseCase.execute()
      • UpdateDefaultConfigUseCase
        • UpdateDefaultConfigUseCase.__init__()
        • UpdateDefaultConfigUseCase.execute()
      • ReplaceDefaultConfigUseCase
        • ReplaceDefaultConfigUseCase.__init__()
        • ReplaceDefaultConfigUseCase.execute()

Инфраструктурный слой

  • Инфраструктурный слой
    • База данных
      • Database Connection
        • init_models()
        • init_migrations()
        • get_db()
      • Models
        • DeviceModel
        • ProvisionConfigModel
        • UserModel
        • TicketModel
      • Repositories
        • SQLDeviceRepository
        • SQLProvisionRepository
    • Dependency Injection
      • get_device_repository()
      • get_provision_repository()
      • get_user_repository()
      • get_ticket_repository()
      • get_xml_serializer()
      • get_jwt_provider()
      • get_password_hasher()
      • get_handle_provision_use_case()
      • get_device_config_use_case()
      • update_device_config_use_case()
      • reset_device_config_use_case()
      • get_devices_list_use_case()
      • get_default_config_use_case()
      • update_default_config_use_case()
      • replace_device_config_use_case()
      • replace_default_config_use_case()
      • get_login_user_use_case()
      • get_register_user_use_case()
      • get_change_password_use_case()
      • get_password_recovery_use_case()
      • get_verify_token_use_case()
      • get_create_ticket_use_case()
      • get_in_progress_ticket_use_case()
      • get_type_ticket_handler()
      • get_approve_ticket_use_case()
      • get_reject_ticket_use_case()
      • Провайдеры
    • Serializers
      • XmlToDictSerializer
        • XmlToDictSerializer
      • PydashConfigData
        • PydashConfigData
      • ConfigDataFactory
        • ConfigDataFactory
    • Обзор

Развертывание

  • Развертывание
    • Docker Deployment
      • Полное развертывание (все сервисы)
      • Только backend
      • Frontend отдельно
      • Остановка
      • Просмотр логов
    • Конфигурация
      • Environment Variables
      • Docker Compose
    • Production рекомендации
      • HTTPS через nginx
      • Масштабирование
      • Backup базы данных
    • Мониторинг
      • Health check
      • Проверка БД
      • Логирование

Интеграция

  • Интеграция с TVIP
    • Подмена DNS
    • Формат конфигурации
    • Примеры конфигураций
      • Базовая конфигурация
      • Конфигурация с VOD

Frontend

  • Frontend
    • Компоненты
    • API клиент
    • Развертывание
      • Development
      • Production
TVIP Provisioning Service
  • Инфраструктурный слой
  • Просмотреть исходный код страницы

Инфраструктурный слой

Технические детали реализации.

  • База данных
    • Database Connection
    • Models
    • Repositories
  • Dependency Injection
    • get_device_repository()
    • get_provision_repository()
    • get_user_repository()
    • get_ticket_repository()
    • get_xml_serializer()
    • get_jwt_provider()
    • get_password_hasher()
    • get_handle_provision_use_case()
    • get_device_config_use_case()
    • update_device_config_use_case()
    • reset_device_config_use_case()
    • get_devices_list_use_case()
    • get_default_config_use_case()
    • update_default_config_use_case()
    • replace_device_config_use_case()
    • replace_default_config_use_case()
    • get_login_user_use_case()
    • get_register_user_use_case()
    • get_change_password_use_case()
    • get_password_recovery_use_case()
    • get_verify_token_use_case()
    • get_create_ticket_use_case()
    • get_in_progress_ticket_use_case()
    • get_type_ticket_handler()
    • get_approve_ticket_use_case()
    • get_reject_ticket_use_case()
    • Провайдеры
  • Serializers
    • XmlToDictSerializer
    • PydashConfigData
    • ConfigDataFactory

Обзор

Инфраструктурный слой содержит реализацию технических деталей:

  • Работа с базой данных (SQLAlchemy)

  • Dependency Injection

  • Сериализаторы

  • Реализация репозиториев

  • Конкретные реализации value objects

Предыдущая Следующая

© Авторские права 2025, Evgeny Ockatiev. MIT License.

Собрано при помощи Sphinx с использованием темы, предоставленной Read the Docs.