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

GetPanoramasQueueTasksListByProjectIdQuery

Назначение

Получение списка задач очереди панорамной съёмки по идентификатору проекта. Задачи могут быть в статусах Pending, Started, Completed, Canceled, Error, Timeout.

Цель

Вернуть клиенту перечень задач очереди для отображения в админке и мониторинга выполнения.

Query: GetPanoramasQueueTasksListByProjectIdQuery (Входные данные)

ПолеТипОбязательностьОписание
ChessboardProjectIdlongОбязательноеИдентификатор проекта шахматной доски
примечание

TenantId берётся из контекста запроса.

Result: GetPanoramasQueueTasksListByProjectIdQueryResult (Выходные данные)

ПолеТипОбязательностьОписание
EntriesIReadOnlyCollection<GetPanoramasQueueTasksListByProjectIdQueryResultEntry>ОбязательноеСписок задач

GetPanoramasQueueTasksListByProjectIdQueryResultEntry (ResultEntry)

ПолеТипОбязательностьОписание
TaskIdGuidОбязательноеИдентификатор задачи
TaskTypePanoramaQueueTaskTypeОбязательноеТип задачи
StatusPanoramaQueueTaskStatusОбязательноеСтатус
PresetIdsGuid[]ОбязательноеИдентификаторы пресетов
PropertyLayoutIdlongОбязательноеИдентификатор планировки
PropertyObjectIdGuid?NullableИдентификатор объекта (для PropertyPoint)
CreatedAtDateTimeOffsetОбязательноеДата создания
UpdatedAtDateTimeOffsetОбязательноеДата обновления

Валидация

  • Проект с ChessboardProjectId должен существовать в ChessboardProjectEntity. При отсутствии — вернуть пустой список или ошибку.
  • Очередь по проекту (PanoramasQueueEntity) может отсутствовать — тогда вернуть пустой список.

Бизнес-логика (Handler)

  1. Получить сущность ChessboardProjectEntity по ChessboardProjectId. Если не найдена — вернуть ошибку «Проект не найден» или пустой список.
  2. Найти очередь PanoramasQueueEntity по ChessboardProjectId (и TenantId). Если очередь не найдена — вернуть результат с пустым Entries.
  3. Найти сущности PanoramasQueueTaskEntity по QueueId из таблицы PanoramasQueueTaskEntity.
  4. Сформировать для каждой задачи ResultEntry (TaskId, TaskType, Status, PresetIds, PropertyLayoutId, PropertyObjectId, CreatedAt, UpdatedAt).
  5. Вернуть результат клиенту.

Связанные сущности

API

QueueTasksController.GetPanoramasQueueTasksListByProjectId — GET projects/{chessboardProjectId}