This is an automated email from the ASF dual-hosted git repository.

zhangliang2022 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new d25bece9 fix: convert story point to signed integer (#2394)
d25bece9 is described below

commit d25bece9bf89acad91961170dca6e33012583a36
Author: mindlesscloud <[email protected]>
AuthorDate: Thu Jun 30 19:51:54 2022 +0800

    fix: convert story point to signed integer (#2394)
    
    * fix: convert story point to signed integer
    
    * test: modify e2e test to cover the case of minus story point
    
    * fix: remove debug code
---
 .github/workflows/build.yml                        |  4 +-
 models/domainlayer/ticket/issue.go                 |  2 +-
 models/migrationscripts/register.go                |  1 +
 models/migrationscripts/updateSchemas20220630.go   | 60 +++++++++++++++++++++
 plugins/jira/e2e/issue_test.go                     |  6 +--
 .../jira/e2e/raw_tables/_raw_jira_api_issues.csv   |  2 +-
 .../jira/e2e/snapshot_tables/_tool_jira_issues.csv | 62 +++++++++++-----------
 plugins/jira/e2e/snapshot_tables/issues.csv        |  2 +-
 plugins/jira/models/issue.go                       |  2 +-
 plugins/jira/models/migrationscripts/register.go   |  1 +
 .../migrationscripts/updateSchemas20220630.go      | 60 +++++++++++++++++++++
 plugins/jira/tasks/issue_extractor.go              |  8 +--
 plugins/tapd/tasks/story_converter.go              |  2 +-
 13 files changed, 168 insertions(+), 44 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index d0687d27..0c19985e 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -3,8 +3,8 @@ env:
   IMAGE_LAKE: ${{ secrets.DOCKERHUB_OWNER }}/devlake
   IMAGE_CONFIG_UI: ${{ secrets.DOCKERHUB_OWNER }}/devlake-config-ui
   IMAGE_GRAFANA: ${{ secrets.DOCKERHUB_OWNER }}/devlake-dashboard
-  DOCKERHUB_USERNAME: ${{ secrets.DOCKER_REGISTRY_USERNAME }}
-  DOCKERHUB_TOKEN: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
+  DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USER }}
+  DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
 on:
   push:
     tags:
diff --git a/models/domainlayer/ticket/issue.go 
b/models/domainlayer/ticket/issue.go
index fcea3c29..d057ce50 100644
--- a/models/domainlayer/ticket/issue.go
+++ b/models/domainlayer/ticket/issue.go
@@ -34,7 +34,7 @@ type Issue struct {
        Type                    string `gorm:"type:varchar(100)"`
        Status                  string `gorm:"type:varchar(100)"`
        OriginalStatus          string `gorm:"type:varchar(100)"`
-       StoryPoint              uint
+       StoryPoint              int64
        ResolutionDate          *time.Time
        CreatedDate             *time.Time
        UpdatedDate             *time.Time
diff --git a/models/migrationscripts/register.go 
b/models/migrationscripts/register.go
index f4585a2d..93c607bc 100644
--- a/models/migrationscripts/register.go
+++ b/models/migrationscripts/register.go
@@ -29,5 +29,6 @@ func All() []migration.Script {
                new(updateSchemas20220602), new(updateSchemas20220612), 
new(updateSchemas20220613),
                new(updateSchemas20220614), new(updateSchemas2022061402), 
new(updateSchemas20220616),
                new(blueprintNormalMode),
+               new(UpdateSchemas20220630),
        }
 }
diff --git a/models/migrationscripts/updateSchemas20220630.go 
b/models/migrationscripts/updateSchemas20220630.go
new file mode 100644
index 00000000..5d641e8c
--- /dev/null
+++ b/models/migrationscripts/updateSchemas20220630.go
@@ -0,0 +1,60 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+       "context"
+
+       "gorm.io/gorm"
+)
+
+type Issue20220630 struct {
+       StoryPoint    int64
+       TmpStoryPoint uint
+}
+
+func (Issue20220630) TableName() string {
+       return "issues"
+}
+
+type UpdateSchemas20220630 struct {
+}
+
+func (u *UpdateSchemas20220630) Up(ctx context.Context, db *gorm.DB) error {
+       err := db.Migrator().RenameColumn(&Issue20220630{}, "story_point", 
"tmp_story_point")
+       if err != nil {
+               return err
+       }
+       err = db.Migrator().AddColumn(&Issue20220630{}, "story_point")
+       if err != nil {
+               return err
+       }
+       err = db.Model(&Issue20220630{}).Where("1 = 
1").UpdateColumn("story_point", gorm.Expr("tmp_story_point")).Error
+       if err != nil {
+               return err
+       }
+       return db.Migrator().DropColumn(&Issue20220630{}, "tmp_story_point")
+}
+
+func (*UpdateSchemas20220630) Version() uint64 {
+       return 20220630131508
+}
+
+func (*UpdateSchemas20220630) Name() string {
+       return "alter story_point from unsigned to signed"
+}
diff --git a/plugins/jira/e2e/issue_test.go b/plugins/jira/e2e/issue_test.go
index 81f5964b..5dd29c6f 100644
--- a/plugins/jira/e2e/issue_test.go
+++ b/plugins/jira/e2e/issue_test.go
@@ -33,9 +33,9 @@ func TestIssueDataFlow(t *testing.T) {
 
        taskData := &tasks.JiraTaskData{
                Options: &tasks.JiraOptions{
-                       ConnectionId: 2,
-                       BoardId:      8,
-               },
+                       ConnectionId:        2,
+                       BoardId:             8,
+                       TransformationRules: 
tasks.TransformationRules{StoryPointField: "customfield_10024"}},
        }
 
        // import raw data table
diff --git a/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv 
b/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
index 43386dea..7387436f 100644
--- a/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
+++ b/plugins/jira/e2e/raw_tables/_raw_jira_api_issues.csv
@@ -1,5 +1,5 @@
 "id","params","data","url","input","created_at"
-12441,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10063"", ""key"": 
""EE-1"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10063"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-1/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
+12441,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10063"", ""key"": 
""EE-1"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10063"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-1/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12442,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10064"", ""key"": 
""EE-2"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10064"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-2/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12443,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10065"", ""key"": 
""EE-3"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10065"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-3/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
 12444,"{""ConnectionId"":2,""BoardId"":8}","{""id"": ""10066"", ""key"": 
""EE-4"", ""self"": 
""https://merico.atlassian.net/rest/agile/1.0/issue/10066"";, ""expand"": 
""operations,versionedRepresentations,editmeta,changelog,renderedFields"", 
""fields"": {""epic"": null, ""votes"": {""self"": 
""https://merico.atlassian.net/rest/api/2/issue/EE-4/votes"";, ""votes"": 0, 
""hasVoted"": false}, ""labels"": [], ""sprint"": null, ""status"": {""id"": 
""10068"", ""name"": ""已完成"", ""self"": ""https [...]
diff --git a/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv 
b/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
index 0d79b9dc..e34dca51 100644
--- a/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
+++ b/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
@@ -1,31 +1,31 @@
-connection_id,issue_id,connection_id,issue_id,project_id,self,issue_key,summary,type,epic_key,status_name,status_key,story_point,original_estimate_minutes,aggregate_estimate_minutes,remaining_estimate_minutes,creator_account_id,creator_account_type,creator_display_name,assignee_account_id,assignee_account_type,assignee_display_name,priority_id,priority_name,parent_id,parent_key,sprint_id,sprint_name,resolution_date,created,updated,spent_minutes,lead_time_minutes,std_story_point,std_type,
 [...]
-2,10063,2,10063,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10063,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,故事,,已完成,done,0,0,1260,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,0,10458,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12441,,https://merico.atlassian.net/rest
 [...]
-2,10064,2,10064,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,​问题堆叠分布排序图,故事,,已完成,done,0,0,840,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,0,16445,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,,https://merico.atlassian.net/rest/api/2/univers
 [...]
-2,10065,2,10065,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10065,EE-3,​问题积压图率,故事,,已完成,done,0,0,600,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:11.996+00:00,2020-06-12T00:15:41.600+00:00,2021-03-28T08:05:55.061+00:00,0,16445,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12443,,https://merico.atlassian.net/rest/api/2/universal_
 [...]
-2,10066,2,10066,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10066,EE-4,​问题分布的帕累托图,故事,,已完成,done,0,0,480,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:23.562+00:00,2020-06-12T00:15:46.144+00:00,2021-03-28T08:06:09.535+00:00,0,16445,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12444,,https://merico.atlassian.net/rest/api/2/univers
 [...]
-2,10067,2,10067,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10067,EE-5,​通用技术任务,任务,,已完成,done,0,0,360,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-18T04:06:00.747+00:00,2020-06-12T00:16:44.157+00:00,2021-03-28T08:05:54.622+00:00,0,8869,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12445,,https://merico.atlassian.net/rest/api/2/universal_a
 [...]
-2,10068,2,10068,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10068,EE-6,​变异系数、生产率的四象限图,故事,,已完成,done,0,0,1680,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c2490cf0c09e2e598,,Gerile 
Tu,3,Medium,0,,0,,2020-06-16T11:56:14.433+00:00,2020-06-12T00:17:26.986+00:00,2021-03-28T08:05:56.750+00:00,0,6458,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12446,,https://merico.atlassian.net/rest/api/2/universa
 [...]
-2,10070,2,10070,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10070,EE-8,​多团队支持,任务,,已完成,done,0,0,5400,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:11:45.201+00:00,2020-06-12T00:18:58.050+00:00,2021-03-28T08:05:54.576+00:00,0,38452,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12447,,https://merico.atlassian.net/rest/api/2/universal_avatar/
 [...]
-2,10071,2,10071,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10071,EE-9,Common
 backend 拆分,任务,,已完成,done,0,1680,1680,1680,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:12:05.663+00:00,2020-06-12T00:19:17.336+00:00,2021-03-28T08:06:20.165+00:00,0,38452,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12448,,https://merico.atlassian.net/rest/api/2/
 [...]
-2,10072,2,10072,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10072,EE-10,​部署SaaS版本,任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:11:55.247+00:00,2020-06-12T00:19:24.637+00:00,2021-03-28T08:05:54.472+00:00,0,38452,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12449,,https://merico.atlassian.net/rest/api/2/universal_avatar
 [...]
-2,10076,2,10076,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10076,EE-14,调整​文件夹结构,任务,,已完成,done,0,240,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T08:59:51.304+00:00,2020-06-12T00:24:25.922+00:00,2021-03-28T08:05:56.152+00:00,600,4835,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12450,,https://merico.atlassian.net/rest/api/2/universal_avat
 [...]
-2,10077,2,10077,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10077,EE-15,路由权限控制,任务,,已完成,done,0,240,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:00:26.956+00:00,2020-06-12T00:24:39.624+00:00,2021-03-28T08:06:01.995+00:00,480,4835,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12451,,https://merico.atlassian.net/rest/api/2/universal_avatar
 [...]
-2,10078,2,10078,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10078,EE-16,​优化前端
 webpack 开发阶段构建速度,任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:01:44.159+00:00,2020-06-12T00:24:49.017+00:00,2021-03-28T08:05:55.863+00:00,60,4836,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12452,,https://merico.atlassian.net/rest/api/2/uni
 [...]
-2,10079,2,10079,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10079,EE-17,​新的错误处理机制,任务,,已完成,done,0,360,240,240,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-07-22T07:25:29.104+00:00,2020-06-12T00:24:56.048+00:00,2021-03-28T08:05:54.426+00:00,120,58020,0,任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12453,,https://merico.atlassian.net/rest/api/2/universa
 [...]
-2,10081,2,10081,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10081,EE-19,​LDAP需要支持TLS和证书,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0aaa47a00c1997ea8e,,chao.cheng,3,Medium,0,,0,,2020-06-18T08:34:11.117+00:00,2020-06-12T00:28:00.241+00:00,2021-03-28T08:05:57.326+00:00,0,9126,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12454,,https://merico.atlassian.net/rest/api/2/universa
 [...]
-2,10082,2,10082,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10082,EE-20,团队首页垂直化,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0984083c0c12e5af8f,,lin.hao,3,Medium,0,,0,,2020-06-17T07:25:54.370+00:00,2020-06-12T00:29:43.677+00:00,2021-08-06T06:14:54.647+00:00,0,7616,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12455,,https://merico.atlassian.net/rest/api/2/universal_avatar/vi
 [...]
-2,10085,2,10085,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10085,EE-23,​批量删除事故,缺陷,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:07:56.798+00:00,2020-06-12T00:33:57.204+00:00,2021-03-28T08:05:57.095+00:00,60,4833,0,缺陷,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12456,,https://merico.atlassian.net/rest/api/2/universal_avatar/v
 [...]
-2,10086,2,10086,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10086,EE-24,​LDAP支持自定义的证书上传,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0aaa47a00c1997ea8e,,chao.cheng,3,Medium,0,,0,,2020-06-12T07:17:28.659+00:00,2020-06-12T00:35:15.489+00:00,2021-03-28T08:05:55.819+00:00,0,402,0,故事,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12457,,https://merico.atlassian.net/rest/api/2/universal
 [...]
-2,10087,2,10087,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10087,EE-25,​组件封装及Demo,子任务,,已完成,done,0,240,240,240,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10063,EE-1,0,,2020-06-18T04:02:22.350+00:00,2020-06-12T00:40:54.210+00:00,2021-03-28T08:05:57.189+00:00,0,8841,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12458,,https://merico.atlassian.net/rest
 [...]
-2,10088,2,10088,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10088,EE-26,​定接口,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10063,EE-1,0,,2020-06-15T09:06:51.438+00:00,2020-06-12T00:41:01.683+00:00,2021-03-28T08:05:55.208+00:00,0,4825,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12459,,https://merico.atlassian.net/rest/api/2/universal_av
 [...]
-2,10089,2,10089,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10089,EE-27,​提供后端接口,子任务,,已完成,done,0,660,660,660,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10063,EE-1,0,,2020-06-19T06:31:31.662+00:00,2020-06-12T00:41:16.622+00:00,2021-03-28T08:05:55.498+00:00,0,10430,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12460,,https://merico.atlassian.net/rest/api/2/un
 [...]
-2,10090,2,10090,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10090,EE-28,​数据填充与联调,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10063,EE-1,0,,2020-06-18T04:03:04.637+00:00,2020-06-12T00:41:36.317+00:00,2021-03-28T08:06:05.443+00:00,0,8841,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12461,,https://merico.atlassian.net/rest/a
 [...]
-2,10091,2,10091,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10091,EE-29,​组件封装及Demo,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10064,EE-2,0,,2020-06-18T04:03:30.760+00:00,2020-06-12T00:48:29.035+00:00,2021-03-28T08:05:55.731+00:00,0,8835,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12462,,https://merico.atlassian.net/rest
 [...]
-2,10092,2,10092,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10092,EE-30,​定接口,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10064,EE-2,0,,2020-06-15T09:06:40.206+00:00,2020-06-12T00:48:39.803+00:00,2021-03-28T08:05:55.159+00:00,0,4818,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12463,,https://merico.atlassian.net/rest/api/2/universal_av
 [...]
-2,10093,2,10093,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10093,EE-31,​后端接口,子任务,,已完成,done,0,120,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10064,EE-2,0,,2020-06-19T07:35:31.762+00:00,2020-06-12T00:48:46.751+00:00,2021-03-28T08:05:55.544+00:00,0,10486,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12464,,https://merico.atlassian.net/rest/api/2/univ
 [...]
-2,10094,2,10094,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10094,EE-32,​数据填充与联调,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10064,EE-2,0,,2020-06-18T04:03:48.818+00:00,2020-06-12T00:48:53.279+00:00,2021-03-28T08:05:55.592+00:00,0,8834,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12465,,https://merico.atlassian.net/rest/a
 [...]
-2,10095,2,10095,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10095,EE-33,准备测试用例,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0984083c0c12e5af8f,,lin.hao,3,Medium,10063,EE-1,0,,2020-06-19T06:32:19.340+00:00,2020-06-12T00:50:45.674+00:00,2021-03-28T08:05:55.253+00:00,0,10421,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12466,,https://merico.atlassian.net/rest/api/2/universal
 [...]
-2,10096,2,10096,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10096,EE-34,​
 组件封装及Demo,子任务,,已完成,done,0,240,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10065,EE-3,0,,2020-06-18T04:04:05.951+00:00,2020-06-12T00:51:57.807+00:00,2021-03-28T08:05:57.232+00:00,0,8832,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12467,,https://merico.atlassian.net/res
 [...]
-2,10097,2,10097,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10097,EE-35,定接口,子任务,,已完成,done,0,0,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10065,EE-3,0,,2020-06-15T09:06:30.942+00:00,2020-06-12T00:52:04.767+00:00,2021-03-28T08:05:55.353+00:00,0,4814,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12468,,https://merico.atlassian.net/rest/api/2/universal
 [...]
-2,10098,2,10098,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10098,EE-36,后端接口,子任务,,已完成,done,0,120,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10065,EE-3,0,,2020-06-19T07:35:44.696+00:00,2020-06-12T00:52:12.678+00:00,2021-03-28T08:05:55.685+00:00,0,10483,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12469,,https://merico.atlassian.net/rest/api/2/unive
 [...]
-2,10099,2,10099,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10099,EE-37,数据填充与联调
 ,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10065,EE-3,0,,2020-06-18T04:04:31.261+00:00,2020-06-12T00:52:23.456+00:00,2021-03-28T08:05:55.638+00:00,0,8832,0,子任务,DONE,2022-06-23T12:50:47.748+00:00,2022-06-23T12:50:47.748+00:00,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12470,,https://merico.atlassian.net/rest/api/2/u
 [...]
+connection_id,issue_id,project_id,self,issue_key,summary,type,epic_key,status_name,status_key,story_point,original_estimate_minutes,aggregate_estimate_minutes,remaining_estimate_minutes,creator_account_id,creator_account_type,creator_display_name,assignee_account_id,assignee_account_type,assignee_display_name,priority_id,priority_name,parent_id,parent_key,sprint_id,sprint_name,resolution_date,created,updated,spent_minutes,lead_time_minutes,std_story_point,std_type,std_status,_raw_data_pa
 [...]
+2,10063,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10063,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,故事,,已完成,done,-1,0,1260,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,0,10458,-1,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12441,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10064,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,​问题堆叠分布排序图,故事,,已完成,done,0,0,840,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,0,16445,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10065,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10065,EE-3,​问题积压图率,故事,,已完成,done,0,0,600,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:11.996+00:00,2020-06-12T00:15:41.600+00:00,2021-03-28T08:05:55.061+00:00,0,16445,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12443,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10066,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10066,EE-4,​问题分布的帕累托图,故事,,已完成,done,0,0,480,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-23T10:21:23.562+00:00,2020-06-12T00:15:46.144+00:00,2021-03-28T08:06:09.535+00:00,0,16445,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12444,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10067,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10067,EE-5,​通用技术任务,任务,,已完成,done,0,0,360,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,0,,0,,2020-06-18T04:06:00.747+00:00,2020-06-12T00:16:44.157+00:00,2021-03-28T08:05:54.622+00:00,0,8869,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12445,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10068,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10068,EE-6,​变异系数、生产率的四象限图,故事,,已完成,done,0,0,1680,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c2490cf0c09e2e598,,Gerile 
Tu,3,Medium,0,,0,,2020-06-16T11:56:14.433+00:00,2020-06-12T00:17:26.986+00:00,2021-03-28T08:05:56.750+00:00,0,6458,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12446,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10070,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10070,EE-8,​多团队支持,任务,,已完成,done,0,0,5400,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:11:45.201+00:00,2020-06-12T00:18:58.050+00:00,2021-03-28T08:05:54.576+00:00,0,38452,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12447,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10071,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10071,EE-9,Common
 backend 拆分,任务,,已完成,done,0,1680,1680,1680,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:12:05.663+00:00,2020-06-12T00:19:17.336+00:00,2021-03-28T08:06:20.165+00:00,0,38452,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12448,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10072,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10072,EE-10,​部署SaaS版本,任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,0,,0,,2020-07-08T17:11:55.247+00:00,2020-06-12T00:19:24.637+00:00,2021-03-28T08:05:54.472+00:00,0,38452,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12449,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10076,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10076,EE-14,调整​文件夹结构,任务,,已完成,done,0,240,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T08:59:51.304+00:00,2020-06-12T00:24:25.922+00:00,2021-03-28T08:05:56.152+00:00,600,4835,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12450,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10077,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10077,EE-15,路由权限控制,任务,,已完成,done,0,240,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:00:26.956+00:00,2020-06-12T00:24:39.624+00:00,2021-03-28T08:06:01.995+00:00,480,4835,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12451,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10078,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10078,EE-16,​优化前端
 webpack 开发阶段构建速度,任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:01:44.159+00:00,2020-06-12T00:24:49.017+00:00,2021-03-28T08:05:55.863+00:00,60,4836,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12452,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10079,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10079,EE-17,​新的错误处理机制,任务,,已完成,done,0,360,240,240,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-07-22T07:25:29.104+00:00,2020-06-12T00:24:56.048+00:00,2021-03-28T08:05:54.426+00:00,120,58020,0,任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12453,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium
+2,10081,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10081,EE-19,​LDAP需要支持TLS和证书,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0aaa47a00c1997ea8e,,chao.cheng,3,Medium,0,,0,,2020-06-18T08:34:11.117+00:00,2020-06-12T00:28:00.241+00:00,2021-03-28T08:05:57.326+00:00,0,9126,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12454,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10082,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10082,EE-20,团队首页垂直化,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0984083c0c12e5af8f,,lin.hao,3,Medium,0,,0,,2020-06-17T07:25:54.370+00:00,2020-06-12T00:29:43.677+00:00,2021-08-06T06:14:54.647+00:00,0,7616,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12455,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10085,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10085,EE-23,​批量删除事故,缺陷,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,0,,0,,2020-06-15T09:07:56.798+00:00,2020-06-12T00:33:57.204+00:00,2021-03-28T08:05:57.095+00:00,60,4833,0,缺陷,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12456,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium
+2,10086,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10086,EE-24,​LDAP支持自定义的证书上传,故事,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0aaa47a00c1997ea8e,,chao.cheng,3,Medium,0,,0,,2020-06-12T07:17:28.659+00:00,2020-06-12T00:35:15.489+00:00,2021-03-28T08:05:55.819+00:00,0,402,0,故事,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12457,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium
+2,10087,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10087,EE-25,​组件封装及Demo,子任务,,已完成,done,0,240,240,240,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10063,EE-1,0,,2020-06-18T04:02:22.350+00:00,2020-06-12T00:40:54.210+00:00,2021-03-28T08:05:57.189+00:00,0,8841,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12458,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10088,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10088,EE-26,​定接口,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10063,EE-1,0,,2020-06-15T09:06:51.438+00:00,2020-06-12T00:41:01.683+00:00,2021-03-28T08:05:55.208+00:00,0,4825,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12459,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10089,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10089,EE-27,​提供后端接口,子任务,,已完成,done,0,660,660,660,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10063,EE-1,0,,2020-06-19T06:31:31.662+00:00,2020-06-12T00:41:16.622+00:00,2021-03-28T08:05:55.498+00:00,0,10430,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12460,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10090,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10090,EE-28,​数据填充与联调,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10063,EE-1,0,,2020-06-18T04:03:04.637+00:00,2020-06-12T00:41:36.317+00:00,2021-03-28T08:06:05.443+00:00,0,8841,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12461,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10091,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10091,EE-29,​组件封装及Demo,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10064,EE-2,0,,2020-06-18T04:03:30.760+00:00,2020-06-12T00:48:29.035+00:00,2021-03-28T08:05:55.731+00:00,0,8835,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12462,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10092,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10092,EE-30,​定接口,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10064,EE-2,0,,2020-06-15T09:06:40.206+00:00,2020-06-12T00:48:39.803+00:00,2021-03-28T08:05:55.159+00:00,0,4818,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12463,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10093,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10093,EE-31,​后端接口,子任务,,已完成,done,0,120,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10064,EE-2,0,,2020-06-19T07:35:31.762+00:00,2020-06-12T00:48:46.751+00:00,2021-03-28T08:05:55.544+00:00,0,10486,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12464,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10094,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10094,EE-32,​数据填充与联调,子任务,,已完成,done,0,360,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin
 Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10064,EE-2,0,,2020-06-18T04:03:48.818+00:00,2020-06-12T00:48:53.279+00:00,2021-03-28T08:05:55.592+00:00,0,8834,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12465,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10095,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10095,EE-33,准备测试用例,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0984083c0c12e5af8f,,lin.hao,3,Medium,10063,EE-1,0,,2020-06-19T06:32:19.340+00:00,2020-06-12T00:50:45.674+00:00,2021-03-28T08:05:55.253+00:00,0,10421,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12466,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10096,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10096,EE-34,​ 
组件封装及Demo,子任务,,已完成,done,0,240,360,360,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10065,EE-3,0,,2020-06-18T04:04:05.951+00:00,2020-06-12T00:51:57.807+00:00,2021-03-28T08:05:57.232+00:00,0,8832,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12467,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10097,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10097,EE-35,定接口,子任务,,已完成,done,0,0,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0a47d31e0c2a15fd87,,yuxiang,3,Medium,10065,EE-3,0,,2020-06-15T09:06:30.942+00:00,2020-06-12T00:52:04.767+00:00,2021-03-28T08:05:55.353+00:00,0,4814,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12468,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10098,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10098,EE-36,后端接口,子任务,,已完成,done,0,120,120,120,5e9711ba34f7b90c0fbc37d3,,Rankin
 
Zheng,5ecfbd0ba04d9c0c220c18d8,,yanghui,3,Medium,10065,EE-3,0,,2020-06-19T07:35:44.696+00:00,2020-06-12T00:52:12.678+00:00,2021-03-28T08:05:55.685+00:00,0,10483,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12469,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
+2,10099,10003,https://merico.atlassian.net/rest/agile/1.0/issue/10099,EE-37,数据填充与联调
 ,子任务,,已完成,done,0,0,0,0,5e9711ba34f7b90c0fbc37d3,,Rankin 
Zheng,5ecfbd0c730ec90c1999cadf,,Dingding 
Zhang,3,Medium,10065,EE-3,0,,2020-06-18T04:04:31.261+00:00,2020-06-12T00:52:23.456+00:00,2021-03-28T08:05:55.638+00:00,0,8832,0,子任务,DONE,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12470,,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium
diff --git a/plugins/jira/e2e/snapshot_tables/issues.csv 
b/plugins/jira/e2e/snapshot_tables/issues.csv
index fc50b434..8c6d48d5 100644
--- a/plugins/jira/e2e/snapshot_tables/issues.csv
+++ b/plugins/jira/e2e/snapshot_tables/issues.csv
@@ -1,5 +1,5 @@
 
id,url,icon_url,issue_key,title,description,epic_key,type,status,original_status,story_point,resolution_date,created_date,updated_date,lead_time_minutes,parent_issue_id,priority,original_estimate_minutes,time_spent_minutes,time_remaining_minutes,creator_id,creator_name,assignee_id,assignee_name,severity,component
-jira:JiraIssue:2:10063,https://merico.atlassian.net/browse/EE-1,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,,,故事,DONE,已完成,0,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,10458,,Medium,0,0,0,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraUser:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
+jira:JiraIssue:2:10063,https://merico.atlassian.net/browse/EE-1,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-1,​四个排序图:测试/注释覆盖度、复用度、模块性,,,故事,DONE,已完成,-1,2020-06-19T06:31:18.495+00:00,2020-06-12T00:13:13.360+00:00,2021-03-28T08:06:08.713+00:00,10458,,Medium,0,0,0,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraUser:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10064,https://merico.atlassian.net/browse/EE-2,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-2,​问题堆叠分布排序图,,,故事,DONE,已完成,0,2020-06-23T10:20:58.999+00:00,2020-06-12T00:15:36.123+00:00,2021-03-28T08:05:55.016+00:00,16445,,Medium,0,0,0,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraUser:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10065,https://merico.atlassian.net/browse/EE-3,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-3,​问题积压图率,,,故事,DONE,已完成,0,2020-06-23T10:21:11.996+00:00,2020-06-12T00:15:41.600+00:00,2021-03-28T08:05:55.061+00:00,16445,,Medium,0,0,0,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraUser:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
 
jira:JiraIssue:2:10066,https://merico.atlassian.net/browse/EE-4,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-4,​问题分布的帕累托图,,,故事,DONE,已完成,0,2020-06-23T10:21:23.562+00:00,2020-06-12T00:15:46.144+00:00,2021-03-28T08:06:09.535+00:00,16445,,Medium,0,0,0,jira:JiraUser:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraUser:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,
diff --git a/plugins/jira/models/issue.go b/plugins/jira/models/issue.go
index 1a18a4db..b12255db 100644
--- a/plugins/jira/models/issue.go
+++ b/plugins/jira/models/issue.go
@@ -58,7 +58,7 @@ type JiraIssue struct {
        Updated                  time.Time `gorm:"index"`
        SpentMinutes             int64
        LeadTimeMinutes          uint
-       StdStoryPoint            uint
+       StdStoryPoint            int64
        StdType                  string `gorm:"type:varchar(255)"`
        StdStatus                string `gorm:"type:varchar(255)"`
        AllFields                datatypes.JSONMap
diff --git a/plugins/jira/models/migrationscripts/register.go 
b/plugins/jira/models/migrationscripts/register.go
index 6bfd0402..81df9841 100644
--- a/plugins/jira/models/migrationscripts/register.go
+++ b/plugins/jira/models/migrationscripts/register.go
@@ -37,5 +37,6 @@ func All() []migration.Script {
                new(UpdateSchemas20220616),
                new(UpdateSchemas20220620),
                new(UpdateSchemas20220624),
+               new(UpdateSchemas20220630),
        }
 }
diff --git a/plugins/jira/models/migrationscripts/updateSchemas20220630.go 
b/plugins/jira/models/migrationscripts/updateSchemas20220630.go
new file mode 100644
index 00000000..5e9132d1
--- /dev/null
+++ b/plugins/jira/models/migrationscripts/updateSchemas20220630.go
@@ -0,0 +1,60 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+       "context"
+
+       "gorm.io/gorm"
+)
+
+type JiraIssue20220630 struct {
+       StdStoryPoint    int64
+       TmpStdStoryPoint uint
+}
+
+func (JiraIssue20220630) TableName() string {
+       return "_tool_jira_issues"
+}
+
+type UpdateSchemas20220630 struct {
+}
+
+func (u *UpdateSchemas20220630) Up(ctx context.Context, db *gorm.DB) error {
+       err := db.Migrator().RenameColumn(&JiraIssue20220630{}, 
"std_story_point", "tmp_std_story_point")
+       if err != nil {
+               return err
+       }
+       err = db.Migrator().AddColumn(&JiraIssue20220630{}, "std_story_point")
+       if err != nil {
+               return err
+       }
+       err = db.Model(&JiraIssue20220630{}).Where("1 = 
1").UpdateColumn("std_story_point", gorm.Expr("tmp_std_story_point")).Error
+       if err != nil {
+               return err
+       }
+       return db.Migrator().DropColumn(&JiraIssue20220630{}, 
"tmp_std_story_point")
+}
+
+func (*UpdateSchemas20220630) Version() uint64 {
+       return 20220630130656
+}
+
+func (*UpdateSchemas20220630) Name() string {
+       return "alter std_story_point from unsigned to signed"
+}
diff --git a/plugins/jira/tasks/issue_extractor.go 
b/plugins/jira/tasks/issue_extractor.go
index 9def3d7d..ee50fd13 100644
--- a/plugins/jira/tasks/issue_extractor.go
+++ b/plugins/jira/tasks/issue_extractor.go
@@ -100,10 +100,12 @@ func ExtractIssues(taskCtx core.SubTaskContext) error {
                                issue.LeadTimeMinutes = 
uint(issue.ResolutionDate.Unix()-issue.Created.Unix()) / 60
                        }
                        if data.Options.TransformationRules.StoryPointField != 
"" {
-                               strStoryPoint := 
apiIssue.Fields.AllFields[data.Options.TransformationRules.StoryPointField].(string)
-                               issue.StoryPoint, _ = 
strconv.ParseFloat(strStoryPoint, 32)
+                               strStoryPoint, _ := 
apiIssue.Fields.AllFields[data.Options.TransformationRules.StoryPointField].(string)
+                               if strStoryPoint != "" {
+                                       issue.StoryPoint, _ = 
strconv.ParseFloat(strStoryPoint, 32)
+                               }
                        }
-                       issue.StdStoryPoint = uint(issue.StoryPoint)
+                       issue.StdStoryPoint = int64(issue.StoryPoint)
                        issue.StdType = typeMappings[issue.Type]
                        if issue.StdType == "" {
                                issue.StdType = strings.ToUpper(issue.Type)
diff --git a/plugins/tapd/tasks/story_converter.go 
b/plugins/tapd/tasks/story_converter.go
index eb89a38c..2ba1f83a 100644
--- a/plugins/tapd/tasks/story_converter.go
+++ b/plugins/tapd/tasks/story_converter.go
@@ -67,7 +67,7 @@ func ConvertStory(taskCtx core.SubTaskContext) error {
                                Title:                toolL.Name,
                                Type:                 toolL.StdType,
                                Status:               toolL.StdStatus,
-                               StoryPoint:           uint(toolL.Size),
+                               StoryPoint:           int64(toolL.Size),
                                OriginalStatus:       toolL.Status,
                                ResolutionDate:       
(*time.Time)(toolL.Completed),
                                CreatedDate:          
(*time.Time)(toolL.Created),

Reply via email to