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

lynwee 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 51eeeed1a feat: jira is subtask trans to type SUBTASK (#7608)
51eeeed1a is described below

commit 51eeeed1af8bc9da8c43bd47278a51ac354c5038
Author: abeizn <[email protected]>
AuthorDate: Tue Jun 11 22:02:02 2024 +0800

    feat: jira is subtask trans to type SUBTASK (#7608)
    
    * feat: jira is subtask trans to type SUBTASK
    
    * fix: jira e2e
    
    * fix: epic e2e
---
 backend/core/models/domainlayer/ticket/issue.go    |  1 +
 .../_tool_jira_issues_for_external_epics.csv       |  8 ++--
 .../plugins/jira/e2e/snapshot_tables/issues.csv    | 24 +++++-----
 backend/plugins/jira/models/issue.go               |  1 +
 .../20240611_add_subtask_to_issue.go               | 51 ++++++++++++++++++++++
 .../jira/models/migrationscripts/register.go       |  1 +
 backend/plugins/jira/tasks/issue_convertor.go      |  3 ++
 backend/plugins/jira/tasks/issue_extractor.go      |  4 ++
 8 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/backend/core/models/domainlayer/ticket/issue.go 
b/backend/core/models/domainlayer/ticket/issue.go
index 13d2c1b03..7f29404d8 100644
--- a/backend/core/models/domainlayer/ticket/issue.go
+++ b/backend/core/models/domainlayer/ticket/issue.go
@@ -64,6 +64,7 @@ const (
        REQUIREMENT = "REQUIREMENT"
        INCIDENT    = "INCIDENT"
        TASK        = "TASK"
+       SUBTASK     = "SUBTASK"
 
        // status
        TODO        = "TODO"
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 7412788af..fd712729a 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,description,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,comment_total,lead_time_minutes,
 [...]
-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,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,,STORY,TODO,,2,0
-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,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,,STORY,TODO,,2,0
-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,62a2d08d1be00a0068af1945,,Keon 
Amini,,,,3,Medium,0,,0,,,2022-07-15T22:31:15.981+00:00,2022-07-15T22:31:38.598+00:00,,0,,EPIC,TODO,,1,0
+connection_id,issue_id,project_id,project_name,self,icon_url,issue_key,summary,description,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,comment_total,lead_time_minutes,
 [...]
+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,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,,STORY,TODO,,0,2,0
+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,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,,STORY,TODO,,0,2,0
+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,62a2d08d1be00a0068af1945,,Keon 
Amini,,,,3,Medium,0,,0,,,2022-07-15T22:31:15.981+00:00,2022-07-15T22:31:38.598+00:00,,0,,EPIC,TODO,,0,1,0
diff --git a/backend/plugins/jira/e2e/snapshot_tables/issues.csv 
b/backend/plugins/jira/e2e/snapshot_tables/issues.csv
index 45653eecf..5851ef96b 100644
--- a/backend/plugins/jira/e2e/snapshot_tables/issues.csv
+++ b/backend/plugins/jira/e2e/snapshot_tables/issues.csv
@@ -16,16 +16,16 @@ 
jira:JiraIssue:2:10081,https://merico.atlassian.net/browse/EE-19,https://merico.
 
jira:JiraIssue:2:10082,https://merico.atlassian.net/browse/EE-20,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-20,团队首页垂直化,,,故事,故事,DONE,已完成,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,7616,,Medium,0,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0984083c0c12e5af8f,lin.hao,,,Enterprise Edition
 
jira:JiraIssue:2:10085,https://merico.atlassian.net/browse/EE-23,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium,EE-23,​批量删除事故,,,缺陷,缺陷,DONE,已完成,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,4833,,Medium,,60,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
 
jira:JiraIssue:2:10086,https://merico.atlassian.net/browse/EE-24,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10315?size=medium,EE-24,​LDAP支持自定义的证书上传,,,故事,故事,DONE,已完成,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,402,,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0aaa47a00c1997ea8e,chao.cheng,,,Enterprise 
Edition
-jira:JiraIssue:2:10087,https://merico.atlassian.net/browse/EE-25,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-25,​组件封装及Demo,,,SUB-TASK,子任务,你好世界,已完成,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,8841,jira:JiraIssue:2:10063,Medium,240,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
-jira:JiraIssue:2:10088,https://merico.atlassian.net/browse/EE-26,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-26,​定接口,,,SUB-TASK,子任务,你好世界,已完成,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,4825,jira:JiraIssue:2:10063,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
-jira:JiraIssue:2:10089,https://merico.atlassian.net/browse/EE-27,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-27,​提供后端接口,,,SUB-TASK,子任务,你好世界,已完成,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,10430,jira:JiraIssue:2:10063,Medium,660,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
-jira:JiraIssue:2:10090,https://merico.atlassian.net/browse/EE-28,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-28,​数据填充与联调,,,SUB-TASK,子任务,你好世界,已完成,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,8841,jira:JiraIssue:2:10063,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
-jira:JiraIssue:2:10091,https://merico.atlassian.net/browse/EE-29,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-29,​组件封装及Demo,,,SUB-TASK,子任务,你好世界,已完成,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,8835,jira:JiraIssue:2:10064,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
-jira:JiraIssue:2:10092,https://merico.atlassian.net/browse/EE-30,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-30,​定接口,,,SUB-TASK,子任务,你好世界,已完成,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,4818,jira:JiraIssue:2:10064,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
-jira:JiraIssue:2:10093,https://merico.atlassian.net/browse/EE-31,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-31,​后端接口,,,SUB-TASK,子任务,你好世界,已完成,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,10486,jira:JiraIssue:2:10064,Medium,120,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
-jira:JiraIssue:2:10094,https://merico.atlassian.net/browse/EE-32,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-32,​数据填充与联调,,,SUB-TASK,子任务,你好世界,已完成,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,8834,jira:JiraIssue:2:10064,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
-jira:JiraIssue:2:10095,https://merico.atlassian.net/browse/EE-33,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-33,准备测试用例,,,SUB-TASK,子任务,你好世界,已完成,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,10421,jira:JiraIssue:2:10063,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0984083c0c12e5af8f,lin.hao,,,Enterprise Edition
-jira:JiraIssue:2:10096,https://merico.atlassian.net/browse/EE-34,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-34,​
 
组件封装及Demo,,,SUB-TASK,子任务,你好世界,已完成,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,8832,jira:JiraIssue:2:10065,Medium,240,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
-jira:JiraIssue:2:10097,https://merico.atlassian.net/browse/EE-35,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-35,定接口,,,SUB-TASK,子任务,恩底滴梯欸夫典亢姆,已完成,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,4814,jira:JiraIssue:2:10065,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
-jira:JiraIssue:2:10098,https://merico.atlassian.net/browse/EE-36,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-36,后端接口,,,SUB-TASK,子任务,恩底滴梯欸夫典亢姆,已完成,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,10483,jira:JiraIssue:2:10065,Medium,120,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
+jira:JiraIssue:2:10087,https://merico.atlassian.net/browse/EE-25,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-25,​组件封装及Demo,,,SUBTASK,子任务,你好世界,已完成,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,8841,jira:JiraIssue:2:10063,Medium,240,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
+jira:JiraIssue:2:10088,https://merico.atlassian.net/browse/EE-26,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-26,​定接口,,,SUBTASK,子任务,你好世界,已完成,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,4825,jira:JiraIssue:2:10063,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
+jira:JiraIssue:2:10089,https://merico.atlassian.net/browse/EE-27,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-27,​提供后端接口,,,SUBTASK,子任务,你好世界,已完成,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,10430,jira:JiraIssue:2:10063,Medium,660,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
+jira:JiraIssue:2:10090,https://merico.atlassian.net/browse/EE-28,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-28,​数据填充与联调,,,SUBTASK,子任务,你好世界,已完成,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,8841,jira:JiraIssue:2:10063,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
+jira:JiraIssue:2:10091,https://merico.atlassian.net/browse/EE-29,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-29,​组件封装及Demo,,,SUBTASK,子任务,你好世界,已完成,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,8835,jira:JiraIssue:2:10064,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
+jira:JiraIssue:2:10092,https://merico.atlassian.net/browse/EE-30,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-30,​定接口,,,SUBTASK,子任务,你好世界,已完成,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,4818,jira:JiraIssue:2:10064,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
+jira:JiraIssue:2:10093,https://merico.atlassian.net/browse/EE-31,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-31,​后端接口,,,SUBTASK,子任务,你好世界,已完成,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,10486,jira:JiraIssue:2:10064,Medium,120,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
+jira:JiraIssue:2:10094,https://merico.atlassian.net/browse/EE-32,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-32,​数据填充与联调,,,SUBTASK,子任务,你好世界,已完成,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,8834,jira:JiraIssue:2:10064,Medium,360,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
+jira:JiraIssue:2:10095,https://merico.atlassian.net/browse/EE-33,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-33,准备测试用例,,,SUBTASK,子任务,你好世界,已完成,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,10421,jira:JiraIssue:2:10063,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0984083c0c12e5af8f,lin.hao,,,Enterprise Edition
+jira:JiraIssue:2:10096,https://merico.atlassian.net/browse/EE-34,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-34,​
 
组件封装及Demo,,,SUBTASK,子任务,你好世界,已完成,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,8832,jira:JiraIssue:2:10065,Medium,240,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
+jira:JiraIssue:2:10097,https://merico.atlassian.net/browse/EE-35,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-35,定接口,,,SUBTASK,子任务,恩底滴梯欸夫典亢姆,已完成,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,4814,jira:JiraIssue:2:10065,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0a47d31e0c2a15fd87,yuxiang,,,Enterprise Edition
+jira:JiraIssue:2:10098,https://merico.atlassian.net/browse/EE-36,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10316?size=medium,EE-36,后端接口,,,SUBTASK,子任务,恩底滴梯欸夫典亢姆,已完成,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,10483,jira:JiraIssue:2:10065,Medium,120,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0ba04d9c0c220c18d8,yanghui,,,Enterprise Edition
 
jira:JiraIssue:2:10099,https://merico.atlassian.net/browse/EE-37,https://merico.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10564?size=medium,EE-37,数据填充与联调
 ,,,TEST EXECUTION,Test 
Execution,TODO,已完成,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,8832,jira:JiraIssue:2:10065,Medium,,,,jira:JiraAccount:2:5e9711ba34f7b90c0fbc37d3,Rankin
 Zheng,jira:JiraAccount:2:5ecfbd0c730ec90c1999cadf,Dingding Zhang,,,Enterprise 
Edition
diff --git a/backend/plugins/jira/models/issue.go 
b/backend/plugins/jira/models/issue.go
index d7c44edb6..0b6294490 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)"`
        Components               string `gorm:"type:varchar(255)"`
+       Subtask                  bool
        ChangelogTotal           int
        WorklogTotal             int
        common.NoPKModel
diff --git 
a/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go 
b/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go
new file mode 100644
index 000000000..13d0f1f17
--- /dev/null
+++ 
b/backend/plugins/jira/models/migrationscripts/20240611_add_subtask_to_issue.go
@@ -0,0 +1,51 @@
+/*
+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 (
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
+)
+
+type jiraIssue20240611 struct {
+       Subtask bool
+}
+
+func (jiraIssue20240611) TableName() string {
+       return "_tool_jira_issues"
+}
+
+type addSubtaskToIssue struct{}
+
+func (script *addSubtaskToIssue) Up(basicRes context.BasicRes) errors.Error {
+       db := basicRes.GetDal()
+       err := db.AutoMigrate(&jiraIssue20240611{})
+       if err != nil {
+               return err
+       }
+       // force full issue extraction so issue.worklog_total can be updated
+       return db.Exec("DELETE FROM _devlake_subtask_states WHERE plugin = ? 
AND subtask = ?", "jira", "extractIssues")
+}
+
+func (*addSubtaskToIssue) Version() uint64 {
+       return 20240514145131
+}
+
+func (*addSubtaskToIssue) Name() string {
+       return "add subtask to _tool_jira_issues"
+}
diff --git a/backend/plugins/jira/models/migrationscripts/register.go 
b/backend/plugins/jira/models/migrationscripts/register.go
index 1a8f8367b..be88eda7d 100644
--- a/backend/plugins/jira/models/migrationscripts/register.go
+++ b/backend/plugins/jira/models/migrationscripts/register.go
@@ -48,5 +48,6 @@ func All() []plugin.MigrationScript {
                new(addComponents20230412),
                new(addFilterJQL),
                new(addWorklogToIssue),
+               new(addSubtaskToIssue),
        }
 }
diff --git a/backend/plugins/jira/tasks/issue_convertor.go 
b/backend/plugins/jira/tasks/issue_convertor.go
index f30037182..d7da08e87 100644
--- a/backend/plugins/jira/tasks/issue_convertor.go
+++ b/backend/plugins/jira/tasks/issue_convertor.go
@@ -132,6 +132,9 @@ func ConvertIssues(subtaskCtx plugin.SubTaskContext) 
errors.Error {
                        if jiraIssue.ParentId != 0 {
                                issue.ParentIssueId = 
issueIdGen.Generate(data.Options.ConnectionId, jiraIssue.ParentId)
                        }
+                       if jiraIssue.Subtask {
+                               issue.Type = ticket.SUBTASK
+                       }
                        result = append(result, issue)
                        boardIssue := &ticket.BoardIssue{
                                BoardId: boardId,
diff --git a/backend/plugins/jira/tasks/issue_extractor.go 
b/backend/plugins/jira/tasks/issue_extractor.go
index bac817402..7dcb6da76 100644
--- a/backend/plugins/jira/tasks/issue_extractor.go
+++ b/backend/plugins/jira/tasks/issue_extractor.go
@@ -205,6 +205,10 @@ func extractIssues(data *JiraTaskData, mappings 
*typeMappings, row *api.RawData)
                }
                results = append(results, issueLink)
        }
+
+       // is subtask
+       issue.Subtask = apiIssue.Fields.Issuetype.Subtask
+
        return results, nil
 }
 

Reply via email to