StartQueueTaskCommand
Назначение
Запуск задачи из очереди панорамной съёмки. Статус задачи переводится в Started.
Цель
Зафиксировать начало выполнения задачи воркером и разрешить последующие heartbeat и завершение.
Command: StartQueueTaskCommand (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| TaskId | Guid | Обязательное | Идентификатор задачи |
примечание
TenantId берётся из контекста запроса.
Result: StartQueueTaskCommandResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Success | bool | Обязательное | Признак успешного запуска |
Валидация
- Задача с TaskId должна существовать в PanoramasQueueTaskEntity. Если не найдена — вернуть ошибку.
- Задача должна находиться в статусе Pending. Если статус другой — вернуть ошибку «Недопустимый статус».
Бизнес-логика (Handler)
- Получить сущность PanoramasQueueTaskEntity из таблицы PanoramasQueueTaskEntity по TaskId (и TenantId). Если не найдена — вернуть ошибку «Задача не найдена».
- Если Status != Pending — вернуть ошибку «Задача уже запущена или завершена».
- Обновить Status = Started, UpdatedAt = текущее время. Сохранить в БД.
- Сформировать результат (Success = true). Вернуть результат клиенту.
Связанные сущности
API
QueueTasksController.StartQueueTask — POST {taskId}/start