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 15afa46cf fix: issue changlog ingore changlog length<=100 (#4915)
15afa46cf is described below
commit 15afa46cf82ce479fb46757734636cf787faff69
Author: abeizn <[email protected]>
AuthorDate: Thu Apr 13 11:20:32 2023 +0800
fix: issue changlog ingore changlog length<=100 (#4915)
* fix: issue changlog ingore changlog length<=100
* fix: issue e2e and recover worklog collector
* fix: epic e2e
* fix: changelog incremental filter
* fix: check changelog is not nil
---
backend/plugins/jira/e2e/issue_test.go | 4 +-
.../jira/e2e/snapshot_tables/_tool_jira_issues.csv | 62 +++++++++++-----------
.../_tool_jira_issues_for_external_epics.csv | 8 +--
backend/plugins/jira/models/issue.go | 1 +
...20230412_add_changelog_total_field_to_issue.go} | 38 +++++++------
.../jira/models/migrationscripts/register.go | 1 +
backend/plugins/jira/tasks/apiv2models/issue.go | 6 ++-
.../jira/tasks/issue_changelog_collector.go | 2 +-
backend/plugins/jira/tasks/worklog_collector.go | 24 ++++++---
9 files changed, 86 insertions(+), 60 deletions(-)
diff --git a/backend/plugins/jira/e2e/issue_test.go
b/backend/plugins/jira/e2e/issue_test.go
index ad9ea225b..db1ec6244 100644
--- a/backend/plugins/jira/e2e/issue_test.go
+++ b/backend/plugins/jira/e2e/issue_test.go
@@ -18,12 +18,13 @@ limitations under the License.
package e2e
import (
+ "testing"
+
"github.com/apache/incubator-devlake/core/models/domainlayer/ticket"
"github.com/apache/incubator-devlake/helpers/e2ehelper"
"github.com/apache/incubator-devlake/plugins/jira/impl"
"github.com/apache/incubator-devlake/plugins/jira/models"
"github.com/apache/incubator-devlake/plugins/jira/tasks"
- "testing"
)
func TestIssueDataFlow(t *testing.T) {
@@ -129,6 +130,7 @@ func TestIssueDataFlow(t *testing.T) {
"std_type",
"std_status",
"icon_url",
+ "changelog_total",
),
)
diff --git a/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
b/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
index 0cf9c38c8..7dd286557 100644
--- a/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
+++ b/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues.csv
@@ -1,31 +1,31 @@
-connection_id,issue_id,project_id,project_name,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_type,std_status,icon_url,_raw_d
[...]
-2,10063,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10063,EE-1,四个排序图:测试/注释覆盖度、复用度、模块性,故事,,已完成,new,-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,故事,TODO,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_
[...]
-2,10064,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,问题堆叠分布排序图,故事,,已完成,done,2,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,
-2,10065,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12443,
-2,10066,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12444,
-2,10067,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issue
[...]
-2,10068,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12446,
-2,10070,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12447,
-2,10071,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jir
[...]
-2,10072,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10072,EE-10,部署SaaS版本,任务,,已完成,new,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,TASK,110
100 100 116 102 46 99 111
109,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_ra
[...]
-2,10076,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12450,
-2,10077,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12451,
-2,10078,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_a
[...]
-2,10079,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_is
[...]
-2,10081,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12454,
-2,10082,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12455,
-2,10085,10003,Enterprise
Edition,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,缺陷,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12456,
-2,10086,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12457,
-2,10087,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_
[...]
-2,10088,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12459,
-2,10089,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_
[...]
-2,10090,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_ji
[...]
-2,10091,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_
[...]
-2,10092,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12463,
-2,10093,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_is
[...]
-2,10094,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_ji
[...]
-2,10095,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12466,
-2,10096,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw
[...]
-2,10097,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10097,EE-35,定接口,子任务,,已完成,new,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,SUB-TASK,恩底滴梯欸夫典亢姆,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_iss
[...]
-2,10098,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10098,EE-36,后端接口,子任务,,已完成,new,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,SUB-TASK,恩底滴梯欸夫典亢姆,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api
[...]
-2,10099,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10099,EE-37,数据填充与联调
,Test Execution,,已完成,new,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,TEST
EXECUTION,TODO,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10564?size=medium,"{""ConnectionId"":2,""BoardId"":8
[...]
+connection_id,issue_id,project_id,project_name,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_type,std_status,icon_url,change
[...]
+2,10063,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10063,EE-1,四个排序图:测试/注释覆盖度、复用度、模块性,故事,,已完成,new,-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,故事,TODO,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,25,"{""ConnectionId"":2,""BoardId"":8}",_raw_ji
[...]
+2,10064,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10064,EE-2,问题堆叠分布排序图,故事,,已完成,done,2,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,24,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12442,
+2,10065,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,26,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12443,
+2,10066,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,23,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12444,
+2,10067,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,18,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_is
[...]
+2,10068,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,17,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12446,
+2,10070,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,17,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12447,
+2,10071,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,18,"{""ConnectionId"":2,""BoardId"":8}",_raw_
[...]
+2,10072,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10072,EE-10,部署SaaS版本,任务,,已完成,new,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,TASK,110
100 100 116 102 46 99 111
109,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,17,"{""ConnectionId"":2,""BoardId"":8}",
[...]
+2,10076,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,18,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issue
[...]
+2,10077,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,20,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12451,
+2,10078,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,18,"{""ConnectionId"":2,""BoardId"":8}",_raw_jir
[...]
+2,10079,10003,Enterprise
Edition,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,TASK,hello
world,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium,31,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api
[...]
+2,10081,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,17,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12454,
+2,10082,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,14,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12455,
+2,10085,10003,Enterprise
Edition,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,缺陷,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium,20,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12456,
+2,10086,10003,Enterprise
Edition,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,故事,DONE,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,11,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12457,
+2,10087,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,17,"{""ConnectionId"":2,""BoardId"":8}",_r
[...]
+2,10088,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,14,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12459,
+2,10089,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,15,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_a
[...]
+2,10090,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,14,"{""ConnectionId"":2,""BoardId"":8}",_raw
[...]
+2,10091,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,15,"{""ConnectionId"":2,""BoardId"":8}",_r
[...]
+2,10092,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,11,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issues,12463,
+2,10093,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,15,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api
[...]
+2,10094,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,14,"{""ConnectionId"":2,""BoardId"":8}",_raw
[...]
+2,10095,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,10,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_issu
[...]
+2,10096,10003,Enterprise
Edition,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,SUB-TASK,你好世界,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,16,"{""ConnectionId"":2,""BoardId"":8}",_
[...]
+2,10097,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10097,EE-35,定接口,子任务,,已完成,new,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,SUB-TASK,恩底滴梯欸夫典亢姆,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,14,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_api_
[...]
+2,10098,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10098,EE-36,后端接口,子任务,,已完成,new,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,SUB-TASK,恩底滴梯欸夫典亢姆,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,15,"{""ConnectionId"":2,""BoardId"":8}",_raw_jira_
[...]
+2,10099,10003,Enterprise
Edition,https://merico.atlassian.net/rest/agile/1.0/issue/10099,EE-37,数据填充与联调
,Test Execution,,已完成,new,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,TEST
EXECUTION,TODO,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10564?size=medium,13,"{""ConnectionId"":2,""BoardId"
[...]
diff --git
a/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues_for_external_epics.csv
b/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues_for_external_epics.csv
index 621db2a11..87d44b2c7 100644
---
a/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues_for_external_epics.csv
+++
b/backend/plugins/jira/e2e/snapshot_tables/_tool_jira_issues_for_external_epics.csv
@@ -1,4 +1,4 @@
-connection_id,issue_id,project_id,project_name,self,icon_url,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,s
[...]
-1,20708,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20708,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,K5-2,first
story,Story,K5-1,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,20707,K5-1,175,K5 Sprint
1,,2022-07-15T22:29:49.026+00:00,2022-07-15T22:30:23.341+00:00,0,0,0,STORY,TODO,
-1,20709,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20709,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,K5-3,second
story,Story,K5-4,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,20710,K5-4,175,K5 Sprint
1,,2022-07-15T22:30:43.178+00:00,2022-07-15T22:31:38.612+00:00,0,0,0,STORY,TODO,
-1,20710,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20710,https://merico.atlassian.net/images/icons/issuetypes/epic.svg,K5-4,K5
epic,Epic,,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,0,,0,,,2022-07-15T22:31:15.981+00:00,2022-07-15T22:31:38.598+00:00,0,0,0,EPIC,TODO,
+connection_id,issue_id,project_id,project_name,self,icon_url,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_type,std_status,all_fi
[...]
+1,20708,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20708,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,K5-2,first
story,Story,K5-1,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,20707,K5-1,175,K5 Sprint
1,,2022-07-15T22:29:49.026+00:00,2022-07-15T22:30:23.341+00:00,0,0,STORY,TODO,,2
+1,20709,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20709,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,K5-3,second
story,Story,K5-4,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,20710,K5-4,175,K5 Sprint
1,,2022-07-15T22:30:43.178+00:00,2022-07-15T22:31:38.612+00:00,0,0,STORY,TODO,,2
+1,20710,10050,Keon_5,https://merico.atlassian.net/rest/agile/1.0/issue/20710,https://merico.atlassian.net/images/icons/issuetypes/epic.svg,K5-4,K5
epic,Epic,,To Do,new,0,0,0,0,62a2d08d1be00a0068af1945,,Keon
Amini,,,,3,Medium,0,,0,,,2022-07-15T22:31:15.981+00:00,2022-07-15T22:31:38.598+00:00,0,0,EPIC,TODO,,1
diff --git a/backend/plugins/jira/models/issue.go
b/backend/plugins/jira/models/issue.go
index 5c4732347..fbd991c2a 100644
--- a/backend/plugins/jira/models/issue.go
+++ b/backend/plugins/jira/models/issue.go
@@ -63,6 +63,7 @@ type JiraIssue struct {
StdType string `gorm:"type:varchar(255)"`
StdStatus string `gorm:"type:varchar(255)"`
AllFields datatypes.JSONMap
+ ChangelogTotal int
common.NoPKModel
}
diff --git a/backend/plugins/jira/models/migrationscripts/register.go
b/backend/plugins/jira/models/migrationscripts/20230412_add_changelog_total_field_to_issue.go
similarity index 54%
copy from backend/plugins/jira/models/migrationscripts/register.go
copy to
backend/plugins/jira/models/migrationscripts/20230412_add_changelog_total_field_to_issue.go
index 996656967..f58a56874 100644
--- a/backend/plugins/jira/models/migrationscripts/register.go
+++
b/backend/plugins/jira/models/migrationscripts/20230412_add_changelog_total_field_to_issue.go
@@ -18,21 +18,29 @@ limitations under the License.
package migrationscripts
import (
- "github.com/apache/incubator-devlake/core/plugin"
+ "github.com/apache/incubator-devlake/core/context"
+ "github.com/apache/incubator-devlake/core/errors"
+ "github.com/apache/incubator-devlake/helpers/migrationhelper"
)
-// All return all the migration scripts
-func All() []plugin.MigrationScript {
- return []plugin.MigrationScript{
- new(addSourceTable20220407),
- new(renameSourceTable20220505),
- new(addInitTables20220716),
- new(addTransformationRule20221116),
- new(addProjectName20221215),
- new(addJiraMultiAuth20230129),
- new(removeIssueStdStoryPoint),
- new(addCommitRepoPattern),
- new(expandRemotelinkUrl),
- new(addConnectionIdToTransformationRule),
- }
+type jiraIssue20230412 struct {
+ ChangelogTotal int
+}
+
+func (jiraIssue20230412) TableName() string {
+ return "_tool_jira_issues"
+}
+
+type addChangeTotal20230412 struct{}
+
+func (script *addChangeTotal20230412) Up(basicRes context.BasicRes)
errors.Error {
+ return migrationhelper.AutoMigrateTables(basicRes, &jiraIssue20230412{})
+}
+
+func (*addChangeTotal20230412) Version() uint64 {
+ return 20230412142316
+}
+
+func (*addChangeTotal20230412) Name() string {
+ return "add changelog_total field to _tool_jira_issues"
}
diff --git a/backend/plugins/jira/models/migrationscripts/register.go
b/backend/plugins/jira/models/migrationscripts/register.go
index 996656967..8e1ba5bf2 100644
--- a/backend/plugins/jira/models/migrationscripts/register.go
+++ b/backend/plugins/jira/models/migrationscripts/register.go
@@ -34,5 +34,6 @@ func All() []plugin.MigrationScript {
new(addCommitRepoPattern),
new(expandRemotelinkUrl),
new(addConnectionIdToTransformationRule),
+ new(addChangeTotal20230412),
}
}
diff --git a/backend/plugins/jira/tasks/apiv2models/issue.go
b/backend/plugins/jira/tasks/apiv2models/issue.go
index 4ac6a3eff..dd14f468e 100644
--- a/backend/plugins/jira/tasks/apiv2models/issue.go
+++ b/backend/plugins/jira/tasks/apiv2models/issue.go
@@ -19,10 +19,11 @@ package apiv2models
import (
"encoding/json"
+ "time"
+
"github.com/apache/incubator-devlake/core/errors"
helper "github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/jira/models"
- "time"
"gorm.io/datatypes"
)
@@ -173,6 +174,9 @@ func (i Issue) toToolLayer(connectionId uint64)
*models.JiraIssue {
Created: i.Fields.Created.ToTime(),
Updated: i.Fields.Updated.ToTime(),
}
+ if i.Changelog != nil {
+ result.ChangelogTotal = i.Changelog.Total
+ }
if i.Fields.Epic != nil {
result.EpicKey = i.Fields.Epic.Key
}
diff --git a/backend/plugins/jira/tasks/issue_changelog_collector.go
b/backend/plugins/jira/tasks/issue_changelog_collector.go
index be9b06f32..99f95ffa6 100644
--- a/backend/plugins/jira/tasks/issue_changelog_collector.go
+++ b/backend/plugins/jira/tasks/issue_changelog_collector.go
@@ -69,7 +69,7 @@ func CollectIssueChangelogs(taskCtx plugin.SubTaskContext)
errors.Error {
dal.Select("i.issue_id AS issue_id, i.updated AS update_time"),
dal.From("_tool_jira_board_issues bi"),
dal.Join("LEFT JOIN _tool_jira_issues i ON (bi.connection_id =
i.connection_id AND bi.issue_id = i.issue_id)"),
- dal.Where("bi.connection_id=? and bi.board_id = ? AND
i.std_type != ?", data.Options.ConnectionId, data.Options.BoardId, "Epic"),
+ dal.Where("bi.connection_id=? and bi.board_id = ? AND
i.std_type != ? and i.changelog_total > 100", data.Options.ConnectionId,
data.Options.BoardId, "Epic"),
}
incremental := collectorWithState.IsIncremental()
if incremental && collectorWithState.LatestState.LatestSuccessStart !=
nil {
diff --git a/backend/plugins/jira/tasks/worklog_collector.go
b/backend/plugins/jira/tasks/worklog_collector.go
index 8e26f708d..bd536eb47 100644
--- a/backend/plugins/jira/tasks/worklog_collector.go
+++ b/backend/plugins/jira/tasks/worklog_collector.go
@@ -57,18 +57,28 @@ func CollectWorklogs(taskCtx plugin.SubTaskContext)
errors.Error {
return err
}
+ // filter out issue_ids that needed collection
clauses := []dal.Clause{
- dal.Select("i.issue_id AS issue_id, i.updated AS update_time"),
+ dal.Select("i.issue_id, i.updated AS update_time"),
dal.From("_tool_jira_board_issues bi"),
dal.Join("LEFT JOIN _tool_jira_issues i ON (bi.connection_id =
i.connection_id AND bi.issue_id = i.issue_id)"),
- dal.Where("bi.connection_id=? and bi.board_id = ?",
data.Options.ConnectionId, data.Options.BoardId),
+ dal.Join("LEFT JOIN _tool_jira_worklogs wl ON (wl.connection_id
= i.connection_id AND wl.issue_id = i.issue_id)"),
+ dal.Where("i.updated > i.created AND bi.connection_id = ? AND
bi.board_id = ? ", data.Options.ConnectionId, data.Options.BoardId),
+ dal.Groupby("i.issue_id, i.updated"),
}
incremental := collectorWithState.IsIncremental()
- if incremental && collectorWithState.LatestState.LatestSuccessStart !=
nil {
- clauses = append(
- clauses,
- dal.Where("i.updated > ?",
collectorWithState.LatestState.LatestSuccessStart),
- )
+ if incremental {
+ clauses = append(clauses, dal.Having("i.updated > ? AND
(i.updated > max(wl.issue_updated) OR (max(wl.issue_updated) IS NULL AND
COUNT(wl.worklog_id) > 0))", collectorWithState.LatestState.LatestSuccessStart))
+ } else {
+ /*
+ i.updated > max(rl.issue_updated) was deleted because
for non-incremental collection,
+ max(rl.issue_updated) will only be one of null, less or
equal to i.updated
+ so i.updated > max(rl.issue_updated) is always false.
+ max(c.issue_updated) IS NULL AND COUNT(c.worklog_id) >
0 infers the issue has more than 100 worklogs,
+ because we collected worklogs when collecting issues,
and assign worklog.issue_updated if num of worklogs < 100,
+ and max(c.issue_updated) IS NULL AND
COUNT(c.worklog_id) > 0 means all worklogs for the issue were not assigned
issue_updated
+ */
+ clauses = append(clauses, dal.Having("max(wl.issue_updated) IS
NULL AND COUNT(wl.worklog_id) > 0"))
}
// construct the input iterator