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