使用 Active Collab 5 跨项目时间记录过滤 API

Cross-project time-record filtering using Active Collab 5 API

对于观看此标签的活跃协作团队。

我正在处理一个使用新的 Active Collab 5 API 的项目,我在尝试 运行 报告时遇到了性能问题。

示例 我尝试在日期范围内构建报告,目前要实现这一点,我需要先 运行 调用以获取所有项目。

随后是一个循环调用:

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

但是我们有大量的项目,除了大量的活动项目之外,我们还需要过滤已存档的项目,以获得正确的计费报告。

现在我在 AC 中处理了大约 1500 个项目。

所以我需要进行 1500 API 次调用,这对性能造成了巨大的影响。有没有一种方法可以构建符合这些思路的东西。

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

可能会传递一个参数,表示(全部、活动、已完成)项目状态。

请让我知道您可以做什么,或者如果我在您的文档中遗漏了一些已经这样做的内容。

谢谢

您在这里需要的不是一个一个遍历所有项目的请求,而是一个为跨项目报告量身定制的请求。 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(带有项目 ID-s 列表的选定项目)、client_1,2,3,4(具有给定 ID-s 的客户的项目),category_1,2,3,4(具有给定 ID-s 的类别中的项目),
  3. tracked_on_filter - 按跟踪记录的日期过滤。要定位特定日期,请使用 selected_date_YYYY-MM-DD 并定位日期范围,请使用 selected_range_YYYY-MM-DD:YYYY-MM-DD.
  4. tracked_by_filter - 按跟踪时间的人过滤。它可以有各种值,例如 anybodylogged_userselected_1,2,3.

要仅列出时间记录,请将 type_filter 设置为 time(如果您只想列出费用,则设置为 expenses)。