首页 > 解决方案 > Azure Devops API 中的时间分段数据

问题描述

这更多的是功能问题。我正在查看 API 和相应的数据,这些数据可以提供我每天花费在任务/错误/功能/EPIC 等项目上的资源的时间。到目前为止,我有以下查询,这给了我以下信息:

public int Id { get; set; }
        public string AssignedTo { get; set; }
        public string Title { get; set; }
        public DateTime CreatedDate { get; set; }
        public DateTime ChangedDate { get; set; }
        public int Priority { get; set; }
        public DateTime StateChangeDate { get; set; }
        public string State { get; set; }
        public string WorkItemType { get; set; }
        public float? RemainingWork { get; set; }
        public float? OriginalEstimate { get; set; }
        public float? CompletedWork { get; set; }

有人可以建议我应该参考什么,所以我可以获得任务/功能/史诗等的每日时间信息。

标签: azure-devops

解决方案


据我所知,Azure devops 并不专注于微观管理,而是专注于低价值指标。

因此,没有开箱即用的 API 可以获取此值。

Azure devops 不会跟踪每天花费在工作项上的时间。它跟踪花费的总时间。如果您想要每天每个工作项的值,则必须查看迭代/工作项历史并计算运行差异。但这不是一个方便的方法。

您的要求是类似于时间报告的功能。我建议你可以使用扩展:Timetracker

这是我的示例:在Timetracker -> TimeSheet

在此处输入图像描述

您可以添加每天花在单个工作项上的时间。它将记录并计算花费的总时间。

在工作项中,您还可以在时间选项卡中看到相同的信息(安装扩展后)。

在此处输入图像描述

更新:

如果您想使用 Work Item History 来获取时间,您可以尝试以下步骤:

  1. 为工作项类型添加自定义字段(例如 DailyHour)。您可以参考此文档了解更详细的步骤。

在此处输入图像描述

  1. 您可以使用 Rest API 来获取所有工作项历史记录。修订 - 列表

可以使用脚本比较时间字段,最后筛选出符合条件的值。

这是我的 PowerShell 脚本示例:

$token = "PAT"

$url="https://dev.azure.com/{organizationName}/{ProjectName}/_apis/wit/workItems/{WorkItemId}/revisions?api-version=6.0"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))


$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json

$startdate = (Get-Date 2020-11-21).toString("yyyy-M-dd")
$enddate   = (Get-Date 2020-12-19).toString("yyyy-M-dd")

$Totalhour = 0

ForEach( $day in $response.value.fields) 

{
   

   if($day.'System.ChangedDate' -ge $startdate -and $today -le $enddate)
   { 
     
     echo $day.'System.ChangedDate'
     echo $day.'System.ChangedBy'.displayName
     echo $day.'Custom.DailyHour'
     echo ''

     $Totalhour = $Totalhour + $day.'Custom.DailyHour'
   
   }

   echo $Totalhour

 
}

结果:

在此处输入图像描述

工作流程:任何用户在完成工作后的每日小时更新他的时间,然后工作项历史将一直记录。

在上面的脚本中,我是根据一个时间段进行过滤的,你可以根据每一天进行判断,从而得到每一天的总和


推荐阅读