Межпроектная фильтрация записей времени с использованием Active Collab 5 API

За активную команду Collab следят за этим тегом.

Я работаю над проектом, использующим новый API-интерфейс Active Collab 5, у меня возникают проблемы с производительностью при попытке запуска отчетов.

Пример Я пытаюсь построить отчеты по диапазону дат, и в настоящее время для достижения этого мне нужно сначала выполнить вызов, чтобы получить все проекты.

Далее следует цикл с этим вызовом:

API::get('/projects/'.$id.'/time-records/filtered-by-date?' . http_build_query(['from' => $from, 'to' => $to]))

Однако у нас есть большое количество проектов, в дополнение к большому количеству активных проектов нам также необходимо фильтровать архивированные проекты, чтобы получать правильные отчеты для выставления счетов.

Сейчас я работаю с около 1500 проектов в AC.

Поэтому мне нужно сделать 1500 вызовов API, что сильно сказывается на производительности. Есть ли способ, что вы можете построить что-то, что будет работать в этом направлении.

API::get(/timerecords/filter-by-date); 

с возможным переданным параметром, который будет сообщать (все, активно, скомпилировано) состояние проекта.

Пожалуйста, дайте мне знать, что вы можете сделать, или если я что-то упустил в вашей документации, которая уже делает это.

Спасибо

1 ответ

Решение

Здесь вам нужен не запрос, который проходит по всем проектам один за другим, а запрос, предназначенный для межпроектной отчетности. Active Collab 5 имеет только подходящую конечную точку API для этого - /reports/run,

Например, вы можете использовать эту команду для запроса временных записей и затрат всех активных проектов, которые отслеживались сегодня:

curl -H "X-Angie-AuthApiToken: YOUR-API-TOKEN" "http://your.activecollab.com/api/v1/reports/run?type=TrackingFilter&project_filter=active&tracked_on_filter=today"

Обратите внимание на маршрут (/reports/run) и аргументы запроса:

  1. type - укажите тип отчета, в этом случае отчет о времени и расходах,
  2. project_filter - укажите фильтр проекта. Помимо activeдругие полезные значения этого фильтра completed (для завершенных проектов), selected_1,2,3,4 (выбранные проекты со списком идентификаторов проектов), client_1,2,3,4 (проекты для клиентов с заданными идентификаторами), category_1,2,3,4 (проекты в категориях с заданными идентификаторами),
  3. tracked_on_filter - фильтр по дате отслеживания записей. Для таргетинга на конкретную дату используйте selected_date_YYYY-MM-DD и нацелить использование диапазона дат selected_range_YYYY-MM-DD:YYYY-MM-DD,
  4. tracked_by_filter - фильтр по тому, кто отслеживал время. Может иметь различные значения, например anybody, logged_user, selected_1,2,3,

Чтобы перечислить только записи времени, установите type_filter в time (или для expenses если вы хотите, чтобы были указаны только расходы).

Другие вопросы по тегам