UpdateQueueTaskStatusCommand
Назначение
Обновление статуса задачи в очереди панорамной съёмки. Позволяет установить статус Error, Timeout или иной в соответствии с правилами переходов.
Цель
Отразить в БД смену статуса задачи (например при ошибке выполнения или по таймауту).
Command: UpdateQueueTaskStatusCommand (Входные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| TaskId | Guid | Обязательное | Идентификатор задачи |
| Status | PanoramaQueueTaskStatus | Обязательное | Новый статус |
примечание
TenantId берётся из контекста запроса.
Result: UpdateQueueTaskStatusCommandResult (Выходные данные)
| Поле | Тип | Обязательность | Описание |
|---|---|---|---|
| Success | bool | Обязательное | Признак успешного обновления |
Валидация
- Задача с TaskId должна существовать. Если не найдена — вернуть ошибку.
- Допустимые переходы статусов: из Started в Completed, Error, Timeout; из Pending в Canceled и т.д. (по бизнес-правилам). Недопустимый переход — вернуть ошибку.
Ограничения
- Нельзя перевести задачу из Completed/Canceled/Error/Timeout обратно в Pending или Started (по правилам системы).
Бизнес-логика (Handler)
- Получить сущность PanoramasQueueTaskEntity по TaskId (и TenantId). Если не найдена — вернуть ошибку «Задача не найдена».
- Проверить допустимость перехода из текущего Status в новый Status. Если переход запрещён — вернуть ошибку «Недопустимый статус».
- Обновить Status и UpdatedAt. Сохранить в БД.
- Сформировать результат (Success = true). Вернуть результат клиенту.
Связанные сущности
API
QueueTasksController.UpdateQueueTaskStatus — PATCH {taskId}/status