You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动设置关闭的Azure工作项分配给开发者并统计工单完成量

自动同步Activated By到固定字段以实现Azure DevOps工单完成量统计

针对你遇到的问题,这里提供几个可行的自动实现方案,核心思路是把Activated By的信息同步到一个不会被后续流程覆盖的自定义字段,再用这个字段做统计:

方案一:用Azure DevOps Pipeline触发字段同步

适合已经在使用Pipeline的团队,实时性高:

  • 先在Azure DevOps工作项流程里新增一个身份类型的自定义字段,比如命名为Original Developer,用来存实际开发的开发者信息。
  • 写一段PowerShell脚本,用来获取目标工作项的Activated By值,再把它写入自定义字段:
    param(
        [string]$workItemId,
        [string]$orgUrl,
        [string]$projectName
    )
    
    # 获取工作项详情
    $workItem = az boards work-item show --id $workItemId --org $orgUrl --project $projectName --output json | ConvertFrom-Json
    # 提取Activated By的ID
    $activatedById = $workItem.fields.'System.ActivatedBy'.id
    # 更新自定义字段
    az boards work-item update --id $workItemId --org $orgUrl --project $projectName --fields "Custom.OriginalDeveloper=$activatedById"
    
  • 创建一个触发式Pipeline,设置触发条件为「工作项状态变更为Closed」,执行上面的脚本。记得给Pipeline配置修改工作项的权限。

方案二:用Azure Logic Apps做无代码同步

适合不想写代码的场景,配置简单:

  • 同样先创建Original Developer自定义字段。
  • 去Azure门户新建一个Logic App,触发条件选「Azure DevOps - 当工作项被更新时」,关联你的DevOps项目。
  • 添加条件判断:只有当工作项状态变为「Closed」时,才执行后续步骤。
  • 依次添加「获取工作项详情」和「更新工作项」动作:前者拉取Activated By的信息,后者把这个值写入Original Developer字段。
  • 配置Logic App的连接权限,确保能访问你的DevOps项目。

方案三:用REST API+定时任务批量同步

适合不需要实时同步,或者历史工单需要补全的场景:

  • 先创建Original Developer自定义字段。
  • 写一段脚本(Python/PowerShell都行),批量查询所有已关闭但自定义字段为空的工作项,然后调用DevOps的REST API把Activated By的值同步过去。比如Python片段:
    import requests
    from requests.auth import HTTPBasicAuth
    
    org_url = "https://dev.azure.com/你的组织名"
    project = "你的项目名"
    pat_token = "你的PAT令牌"
    
    # 查询符合条件的工作项
    query_url = f"{org_url}/{project}/_apis/wit/wiql?api-version=7.1-preview.2"
    query_body = {
        "query": "SELECT [System.Id] FROM WorkItems WHERE [System.State] = 'Closed' AND [Custom.OriginalDeveloper] = ''"
    }
    response = requests.post(query_url, json=query_body, auth=HTTPBasicAuth('', pat_token))
    work_item_ids = [item['id'] for item in response.json()['workItems']]
    
    # 批量更新字段
    for item_id in work_item_ids:
        # 获取工作项的Activated By信息
        get_url = f"{org_url}/{project}/_apis/wit/workitems/{item_id}?api-version=7.1-preview.3"
        item_details = requests.get(get_url, auth=HTTPBasicAuth('', pat_token)).json()
        activated_by_id = item_details['fields']['System.ActivatedBy']['id']
    
        # 更新自定义字段
        update_url = f"{org_url}/{project}/_apis/wit/workitems/{item_id}?api-version=7.1-preview.3"
        update_body = [
            {
                "op": "add",
                "path": "/fields/Custom.OriginalDeveloper",
                "value": activated_by_id
            }
        ]
        requests.patch(update_url, json=update_body, auth=HTTPBasicAuth('', pat_token), headers={"Content-Type": "application/json-patch+json"})
    
  • 把脚本做成定时任务(比如Windows任务计划、Linux cron),定期执行补全数据。

等Original Developer字段被正确填充后,你就可以在Azure DevOps仪表板里创建柱状/饼图组件,选择这个自定义字段作为分组依据,就能统计实际开发者完成的工单数量了。

内容的提问来源于stack exchange,提问作者Brian Davis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:33