Перейти к основному контенту

Sc.SenseTower.Camera

Sc.SenseTower.Camera

1. Назначение сервиса и зона ответственности

Сервис Sc.SenseTower.Camera отвечает за управление камерами в рамках системы. Он предоставляет API для получения информации о камерах, их состоянии, а также для управления их настройками и метаданными. Сервис взаимодействует с облачными ресурсами и использует механизмы аутентификации для обеспечения безопасности.

2. Архитектура и взаимодействия

Сервис построен на основе ASP.NET Core и использует паттерн CQRS с библиотекой MediatR для обработки запросов. Основные компоненты:

  • Контроллеры: Обрабатывают HTTP-запросы и взаимодействуют с командами и запросами.
  • Сервисы: Реализуют бизнес-логику и взаимодействуют с внешними API (например, Yandex Cloud).
  • База данных: Используется MongoDB для хранения данных (настройки, состояния камер и т.д.).
  • RabbitMQ: Для обработки событий и взаимодействия с другими сервисами.

3. API/эндпоинты

  • GET /cameras: Получение списка камер.
  • GET /cameras/{id:guid}/state: Получение состояния камеры.
  • GET /cameras/{id:guid}/canStart: Проверка возможности запуска камеры.
  • POST /cameras/{id:guid}: Обновление информации о камере.
  • POST /start: Запуск экземпляра.
  • POST /stop: Остановка экземпляра.
  • POST /setmeta: Установка метаданных для камеры.
  • GET /ServiceInfo/Version: Получение версии сервиса.
  • GET /ServiceInfo/Health: Проверка работоспособности сервиса.

4. Сборка/запуск

Для сборки и запуска сервиса используется Docker. В корне репозитория находится файл Dockerfile, который содержит инструкции для создания образа. Для запуска можно использовать Docker Compose, если он настроен.

5. Конфигурация

Конфигурация сервиса осуществляется через файлы appsettings.json и appsettings.Development.json, а также через переменные окружения. Основные настройки включают:

  • ServiceEndpointsSettings: URL-адреса для взаимодействия с другими сервисами.
  • MongoDbConfig: Настройки подключения к MongoDB.
  • RabbitMQConnectionSettings: Настройки для подключения к RabbitMQ.
  • IS4Configuration: Настройки для аутентификации.

6. Наблюдаемость/логирование/метрики

Сервис использует встроенные механизмы логирования ASP.NET Core и предоставляет возможность мониторинга через Health Checks. Логи могут быть настроены для записи в различные источники, включая консоль и файлы.

7. Риски и TODO для следующего техдиректора

  • Риски:

    • Зависимость от внешних сервисов (Yandex Cloud) может привести к проблемам при недоступности.
    • Необходимость в регулярном обновлении библиотек и зависимостей для обеспечения безопасности.
  • TODO:

    • Рассмотреть возможность добавления автоматического тестирования для API.
    • Улучшить обработку ошибок и исключений для повышения устойчивости сервиса.
    • Документировать API с использованием OpenAPI для упрощения интеграции с другими сервисами.

ARCHITECTURE — Sc.SenseTower.Camera

Обзор

  • Путь: D:/Repository/sense-documentaion/Sense-Capital/Sc.SenseTower.Camera
  • Языки: —
  • Фреймворки: —
  • Unity: нет
  • Хранилища: —
  • Брокеры: —
  • Файлов: 166; LOC (оценка): C#: ~4329, JavaScript: ~394

Диаграммы

container.mmd

flowchart LR
  user([User]) --> app[Sc.SenseTower.Camera App]

Structurizr DSL: D:/Repository/sense-documentaion/Sense-Capital/Sc.SenseTower.Camera/docs/diagrams/workspace.dsl