2

对于观看此标签的 Active Collab 团队。

我正在开发一个使用新的 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); 

带有可能传递的参数,该参数将显示(全部、活动、已编译)项目状态。

请让我知道您可以做什么,或者我是否遗漏了您的文档中已经执行此操作的某些内容。

谢谢

4

1 回答 1

3

您需要的不是一个一个一个一个地遍历所有项目的请求,而是一个为跨项目报告量身定制的请求。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- 按谁跟踪时间过滤。它可以有各种值,例如anybody, logged_user, selected_1,2,3.

要仅列出时间记录,请设置type_filtertimeexpenses如果您只想列出费用,则设置为)。

于 2015-11-18T21:21:25.267 回答