Метод GET /api/v1/get_logs

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

Метод позволяет получить логи по id_connector + id_project.

  • Возвращает список логов (TaskLog) для указанного Коннектора и проекта с возможностью фильтрации по задачам и диапазону времени.

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

  • Ответ: TasksLogPage.

Параметры (query)

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

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

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

  • page_size (int, опционально, по умолчанию 100) — количество записей на странице.

  • offset (int, опционально, по умолчанию 0) — смещение для пагинации.

  • dt_from (datetime, опционально) — фильтр по полю TaskLog.timestamp, >= dt_from (ISO 8601).

  • dt_to (datetime, опционально) — фильтр по полю TaskLog.timestamp, <= dt_to (ISO 8601).

  • ecc_order_by (Literal['ASC', 'DESC'], опционально) — порядок сортировки по полю ecc_dt.

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

  1. Проверяет существование коннектора (connector_exists) и проекта (project_exists). Если не найдены — возвращает 404.

  2. Формирует запрос для подсчета общего количества логов (count_statement).

  3. Формирует основной запрос для выборки логов (statement).

  4. Применяет фильтры:

    • Если указан id_task, добавляет условие WHERE TaskLog.id_task == id_task.

    • Если указаны dt_from и dt_to, добавляет соответствующие условия по времени.

  5. Применяет пагинацию (LIMIT и OFFSET) и сортировку (ASC или DESC) по полю ecc_dt.

  6. Выполняет запрос и возвращает объект TasksLogPage с полями:

    • count: общее количество логов, соответствующих фильтрам.

    • offset: смещение.

    • limit: размер страницы.

    • data: список объектов TaskLog.

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

  • Content-Type: application/json

  • Тело: объект TasksLogPage (JSON).

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

{ "count": 5, "offset": 0, "limit": 100, "data": [ { "id_log": "550e8400-e29b-41d4-a716-446655440000", "id_connector": "conn-prod-001", "id_project": "proj-123", "id_task": "task-1", "timestamp": "2025-11-14T12:34:56+03:00", "level": "INFO", "message": "Start processing", "ecc_dt": "2025-11-14T12:34:56+03:00" }, { "id_log": "660e8400-e29b-41d4-a716-446655440001", "id_connector": "conn-prod-001", "id_project": "proj-123", "id_task": "task-1", "timestamp": "2025-11-14T12:35:10+03:00", "level": "ERROR", "message": "Failed to read file", "ecc_dt": "2025-11-14T12:35:10+03:00" } // ... другие логи ] }
Примечания
  • Параметры dt_from и dt_to должны быть в формате ISO 8601.

  • Убедитесь, что id_connector и id_project существуют перед выполнением запроса.