Метод POST /api/v1/update_task_status

Краткое описание

  • Обновляет статус существующей задачи и при необходимости обновляет статус коннектора и проекта (цепочка статусов).

  • Требуется аутентификация (Depends(check_login_pass)).

  • Возвращает обновлённую запись Task.

Варианты статусов задач:

  • NULL — новая задача (та, что поставлена методом POST /api/v1/create_task);

  • received — получена;

  • waiting — задача ранее запущена в коннекторе и ждет своей очереди для последующего исполнения

  • started — стартована;

  • error — завершилась с ошибкой;

  • success — завершилась успешно.

Аутентификация

  • Передайте токен/учётные данные в формате, используемом в проекте (check_login_pass).

Тело запроса (JSON) — модель: UpdateStatusRequest

  • id_connector (string) — идентификатор коннектора (обязательно).

  • id_task (string) — идентификатор задачи (обязательно).

  • status (string) — новый статус задачи (обязательно). Допустимые значения:

    • received, started, error, success, waiting

  • status_info (string, optional) — дополнительная информация о статусе; если не передан — остаётся прежним.

Алгоритм работы метода

  • Валидирует значение status; при недопустимом значении возвращает 400.

  • Находит задачу по (id_task, id_connector). Если не найдена — 400 Task not found.

  • Устанавливает:

    • task.status = переданный статус

    • task.updated_by = логин текущего пользователя

    • task.ecc_dt = текущее локальное время

    • task.status_info = переданный status_info или оставляет старое значение

  • Сохраняет задачу в БД.

  • Если task.command_type == "exec":

    • Обновляет поля коннектора:

      • previous_status = last_status

      • previous_status_dt = last_status_dt

      • last_status = новый статус

      • last_status_dt = текущее время

    • Если у задачи указан id_project — аналогично обновляет поля проекта.

  • Выполняет commit и возвращает обновлённый объект Task.

Успешный ответ (200)

  • Тело: объект Task (JSON) — полная запись задачи с обновлёнными полями (status, updated_by, ecc_dt, status_info и т.д.).

  • Пример ответа (200):

{ "id_task": "550e8400-e29b-41d4-a716-446655440000", "id_connector": "conn-prod-001", "id_project": "proj-123", "status": "started", "status_info": "Processing started", "command_type": "exec", "data": { ... }, "timestamp": "2025-11-14T12:34:56+03:00", "created_by": "jdoe", "updated_by": "admin", "ecc_dt": "2025-11-14T15:20:10+03:00" }

Примечания
  • Обновление полей last_status/previous_status у Коннектора и проекта происходит только для задач с command_type == "exec".

  • Еслсли нужно массово получить статусы задач, используйте метод /get_task_status.