Jira统计工时

1,310 阅读2分钟

背景

随着公司流程越来越正规,也越来越卷了。

为了统计项目的输入输出,公司要求要知道每个人在项目上花费的时间,用于统计输入。

环境

  • Jira

RestApi

使用官方的API解决这个问题。

接口: /rest/api/latest/search

请求方式: GET

参数:

keytypedemo
jqlstringworklogAuthor%20%3D%20你的用户名%20AND%20worklogDate%20%3E%3D%20%22开始时间%22%20AND%20worklogDate%20%3C%3D%20%22结束时间%22
fieldsstringworklog

TIPS: jql的结构是 urlencode(worklogAuthor = 用户名 AND worklogDate >= 开始时间 AND worklogDate <= 结束时间)

响应结果:

{
    "expand":"schema,names",
    "startAt":0,
    "maxResults":50,
    "total":10,
    "issues":[
        {
            "expand":"operations,versionedRepresentations,editmeta,changelog,renderedFields",
            "id":"153763",
            "self":"http://jiradomain/rest/api/latest/issue/153763",
            "key":"CRMW-6913",
            "fields":{
                "worklog":{
                    "startAt":0,
                    "maxResults":20,
                    "total":1,
                    "worklogs":[
                        {
                            "self":"http://jiradomain/rest/api/2/issue/153763/worklog/89530",
                            "author":{
                                "self":"http://jiradomain/rest/api/2/user?username=username",
                                "name":"username",
                                "key":"username",
                                "emailAddress":"username@demo.com",
                                "avatarUrls":{
                                    "48x48":"http://jiradomain/secure/useravatar?ownerId=username&avatarId=15600",
                                    "24x24":"http://jiradomain/secure/useravatar?size=small&ownerId=username&avatarId=15600",
                                    "16x16":"http://jiradomain/secure/useravatar?size=xsmall&ownerId=username&avatarId=15600",
                                    "32x32":"http://jiradomain/secure/useravatar?size=medium&ownerId=username&avatarId=15600"
                                },
                                "displayName":"用户名",
                                "active":true,
                                "timeZone":"Asia/Shanghai"
                            },
                            "updateAuthor":{
                                "self":"http://jiradomain/rest/api/2/user?username=username",
                                "name":"username",
                                "key":"username",
                                "emailAddress":"username@demo.com",
                                "avatarUrls":{
                                    "48x48":"http://jiradomain/secure/useravatar?ownerId=username&avatarId=15600",
                                    "24x24":"http://jiradomain/secure/useravatar?size=small&ownerId=username&avatarId=15600",
                                    "16x16":"http://jiradomain/secure/useravatar?size=xsmall&ownerId=username&avatarId=15600",
                                    "32x32":"http://jiradomain/secure/useravatar?size=medium&ownerId=username&avatarId=15600"
                                },
                                "displayName":"用户名",
                                "active":true,
                                "timeZone":"Asia/Shanghai"
                            },
                            "comment":"bugfix",
                            "created":"2022-03-03T17:07:51.000+0800",
                            "updated":"2022-03-03T17:07:51.000+0800",
                            "started":"2022-03-03T17:07:00.000+0800",
                            "timeSpent":"30m",
                            "timeSpentSeconds":1800,
                            "id":"89530",
                            "issueId":"153763"
                        }
                    ]
                }
            }
        }
    ]
}

最后

结合了 chrome 的插件,实时的展示在了页面上,效果图如下。

image.png

卷起来,卷起来。(。・∀・)ノ゙嗨