This is an automated email from the ASF dual-hosted git repository. warren pushed a commit to branch release-v0.14 in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 507d56c803baf1935e9eeab9ef44be0a13841d60 Author: Yingchu Chen <[email protected]> AuthorDate: Mon Oct 17 16:28:42 2022 +0800 fix(tapd): add std value for status changelogs closes #3450 #3451 --- plugins/tapd/e2e/bug_changelog_test.go | 46 ++++++++++++++++++++++ .../raw_tables/_raw_tapd_api_story_changelogs.csv | 4 +- .../snapshot_tables/_tool_tapd_bug_labels_bug.csv | 42 ++++++++++---------- .../_tool_tapd_story_changelog_items.csv | 2 +- .../tapd/e2e/snapshot_tables/board_issues_bug.csv | 40 +++++++++---------- .../e2e/snapshot_tables/board_issues_story.csv | 40 +++++++++---------- .../tapd/e2e/snapshot_tables/board_issues_task.csv | 30 +++++++------- .../e2e/snapshot_tables/issue_changelogs_story.csv | 16 ++++---- plugins/tapd/e2e/story_changelog_test.go | 44 +++++++++++++++++++++ plugins/tapd/models/bug_status.go | 24 ++++++++++- plugins/tapd/models/story_status.go | 12 ++++++ plugins/tapd/tasks/bug_changelog_converter.go | 16 +++++++- plugins/tapd/tasks/bug_converter.go | 21 +++++----- plugins/tapd/tasks/bug_extractor.go | 25 +----------- plugins/tapd/tasks/shared.go | 36 ++++++++++++++--- plugins/tapd/tasks/story_changelog_converter.go | 15 +++++++ plugins/tapd/tasks/story_converter.go | 2 +- plugins/tapd/tasks/story_extractor.go | 29 +++----------- plugins/tapd/tasks/task_changelog_converter.go | 19 +++++++++ plugins/tapd/tasks/task_converter.go | 2 +- 20 files changed, 311 insertions(+), 154 deletions(-) diff --git a/plugins/tapd/e2e/bug_changelog_test.go b/plugins/tapd/e2e/bug_changelog_test.go index 69424172..81d66b01 100644 --- a/plugins/tapd/e2e/bug_changelog_test.go +++ b/plugins/tapd/e2e/bug_changelog_test.go @@ -38,8 +38,54 @@ func TestTapdBugChangelogDataFlow(t *testing.T) { ConnectionId: 1, CompanyId: 99, WorkspaceId: 991, + TransformationRules: tasks.TransformationRules{ + TypeMappings: map[string]tasks.TypeMapping{ + "Techstory": { + StandardType: "REQUIREMENT", + }, + "技术债": { + StandardType: "REQUIREMENT", + }, + "需求": { + StandardType: "REQUIREMENT", + }, + }, + StatusMappings: map[string]tasks.OriginalStatus{ + "doneStatus": []string{"已关闭"}, + "inprogressStatus": []string{"开发中", "developing", "test-11test-11test-12"}, + "todoStatus": []string{"重新打开", "planning", "test-11test-11test-11"}, + }, + }, }, } + + // bug status + // import raw data table + dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_status.csv", + "_raw_tapd_api_bug_status") + dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_status_last_steps.csv", + "_raw_tapd_api_bug_status_last_steps") + + // verify extraction + dataflowTester.FlushTabler(&models.TapdBugStatus{}) + dataflowTester.Subtask(tasks.ExtractBugStatusMeta, taskData) + dataflowTester.Subtask(tasks.EnrichBugStatusLastStepMeta, taskData) + dataflowTester.VerifyTable( + models.TapdBugStatus{}, + "./snapshot_tables/_tool_tapd_bug_statuses.csv", + []string{ + "connection_id", + "workspace_id", + "english_name", + "chinese_name", + "is_last_step", + "_raw_data_params", + "_raw_data_table", + "_raw_data_id", + "_raw_data_remark", + }, + ) + // import raw data table dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv", "_raw_tapd_api_bug_changelogs") diff --git a/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv b/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv index 332af0c1..3efc3ac9 100644 --- a/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv +++ b/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv @@ -1,6 +1,6 @@ id,params,data,url,input,created_at 1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000065"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-12 15:46:25"",""change_summary"":""delete"",""comment"":null,""changes"":""[{\""field\"":\""delete_story\"",\""value_before\"":\""--\"",\""value_after\"":\""--\""}]"",""entity_type"":""Story"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""delete [...] 2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000093"",""workspace_id"":""991"",""workitem_type_id"":""11991001000020"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:01:42"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""owner\"",\""value_before\"":\""\"",\""value_after\"":\""u5d14u6600;\""}]"",""entity_type"":""Story"",""change_type"":"""",""change_type_text"":"""",""field_changes" [...] -3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000095"",""workspace_id"":""991"",""workitem_type_id"":""11991001000020"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:12:07"",""change_summary"":""planning"",""comment"":""test-11test-11test-11test-11<div><\/div>"",""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""planning\"",\""value_after\"":\""developing\""},{\""field\"":\""owner\"",\""value_before\"": [...] +3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000095"",""workspace_id"":""991"",""workitem_type_id"":""11991001000020"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:12:07"",""change_summary"":""planning"",""comment"":""test-11test-11test-11test-11<div><\/div>"",""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""planning\"",\""value_after\"":\""developing\""},{\""field\"":\""owner\"",\""value_before\"": [...] 4,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000096"",""workspace_id"":""991"",""workitem_type_id"":""11991001000020"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:13:04"",""change_summary"":""developing"",""comment"":null,""changes"":""[{\""field\"":\""due\"",\""value_before\"":\""2019-12-13\"",\""value_after\"":\""2020-01-08\""}]"",""entity_type"":""Story"",""change_type"":"""",""change_type_text"":"""",""field [...] -5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000103"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:21:58"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""name\"",\""value_before\"":\""\test-11\test-11\test-11\test-11\"",\""value_after\"":\""\test-11\test-11\test-11\test-11\""}]"",""entity_type"":""Story"",""change_type"":"""",""c [...] +5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000103"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-12 18:21:58"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""name\"",\""value_before\"":\""开发中\"",\""value_after\"":\""\test-11\test-11\test-11\test-11\""}]"",""entity_type"":""Story"",""change_type"":"""",""change_type_text"":"""",""fiel [...] diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_labels_bug.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_labels_bug.csv index 066a9832..4d947861 100644 --- a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_labels_bug.csv +++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_labels_bug.csv @@ -1,21 +1,21 @@ -id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark,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,assignee_id,assignee_name,severity,component,icon_url,creator_name -tapd:TapdIssue:1:11991001001025,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1271,,https://www.tapd.cn/991/prong/stories/view/11991001001025,11991001001025,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11. -tapd:TapdIssue:1:11991001001030,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1272,,https://www.tapd.cn/991/prong/stories/view/11991001001030,11991001001030,,,,BUG,IN_PROGRESS,开发中,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11. -tapd:TapdIssue:1:11991001001031,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1273,,https://www.tapd.cn/991/prong/stories/view/11991001001031,11991001001031,,,,BUG,IN_PROGRESS,开发中,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11. -tapd:TapdIssue:1:11991001001032,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1274,,https://www.tapd.cn/991/prong/stories/view/11991001001032,11991001001032,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11. -tapd:TapdIssue:1:11991001001417,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1275,,https://www.tapd.cn/991/prong/stories/view/11991001001417,11991001001417,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001418,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1276,,https://www.tapd.cn/991/prong/stories/view/11991001001418,11991001001418,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001420,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1277,,https://www.tapd.cn/991/prong/stories/view/11991001001420,11991001001420,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001422,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1278,,https://www.tapd.cn/991/prong/stories/view/11991001001422,11991001001422,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001423,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1279,,https://www.tapd.cn/991/prong/stories/view/11991001001423,11991001001423,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001425,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1280,,https://www.tapd.cn/991/prong/stories/view/11991001001425,11991001001425,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001426,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1281,,https://www.tapd.cn/991/prong/stories/view/11991001001426,11991001001426,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001447,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1282,,https://www.tapd.cn/991/prong/stories/view/11991001001447,11991001001447,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001448,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1283,,https://www.tapd.cn/991/prong/stories/view/11991001001448,11991001001448,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001450,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1284,,https://www.tapd.cn/991/prong/stories/view/11991001001450,11991001001450,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001451,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1285,,https://www.tapd.cn/991/prong/stories/view/11991001001451,11991001001451,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001710,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1286,,https://www.tapd.cn/991/prong/stories/view/11991001001710,11991001001710,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001711,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1287,,https://www.tapd.cn/991/prong/stories/view/11991001001711,11991001001711,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001737,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1288,,https://www.tapd.cn/991/prong/stories/view/11991001001737,11991001001737,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11 -tapd:TapdIssue:1:11991001001739,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1289,,https://www.tapd.cn/991/prong/stories/view/11991001001739,11991001001739,,,,BUG,IN_PROGRESS,,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:tt90ddtt9a81tt5bb5,tapd:TapdAccount:1:,,normal,,,tt90ddtt9a81tt5bb5 -tapd:TapdIssue:1:11991001001740,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1290,,https://www.tapd.cn/991/prong/stories/view/11991001001740,11991001001740,,,,BUG,DONE,已拒绝,0,,,,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:郝骁宵,tapd:TapdAccount:1:郝骁宵,郝骁宵,normal,,,郝骁宵 +id,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,assignee_id,assignee_name,severity,component,icon_url,creator_name,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark +tapd:TapdIssue:1:11991001001025,https://www.tapd.cn/991/prong/stories/view/11991001001025,11991001001025,,,,BUG,IN_PROGRESS,,0,2020-02-14T07:14:30.000+00:00,2020-02-13T06:04:29.000+00:00,2020-02-14T08:50:03.000+00:00,1510,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11.,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1271, +tapd:TapdIssue:1:11991001001030,https://www.tapd.cn/991/prong/stories/view/11991001001030,11991001001030,,,,BUG,IN_PROGRESS,开发中,0,2020-02-14T07:12:58.000+00:00,2020-02-13T06:33:47.000+00:00,2020-02-17T03:57:42.000+00:00,1479,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11.,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1272, +tapd:TapdIssue:1:11991001001031,https://www.tapd.cn/991/prong/stories/view/11991001001031,11991001001031,,,,BUG,IN_PROGRESS,开发中,0,2020-02-14T08:30:23.000+00:00,2020-02-13T06:45:11.000+00:00,2020-02-17T03:56:58.000+00:00,1545,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11.,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1273, +tapd:TapdIssue:1:11991001001032,https://www.tapd.cn/991/prong/stories/view/11991001001032,11991001001032,,,,BUG,IN_PROGRESS,,0,2020-02-13T09:33:17.000+00:00,2020-02-13T06:50:33.000+00:00,2020-02-17T03:56:36.000+00:00,162,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11.,tapd:TapdAccount:1:,,normal,,,test-11test-11.,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1274, +tapd:TapdIssue:1:11991001001417,https://www.tapd.cn/991/prong/stories/view/11991001001417,11991001001417,,,,BUG,DONE,已拒绝,0,,2020-02-25T08:01:11.000+00:00,2020-03-04T08:12:14.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1275, +tapd:TapdIssue:1:11991001001418,https://www.tapd.cn/991/prong/stories/view/11991001001418,11991001001418,,,,BUG,DONE,已拒绝,0,,2020-02-25T08:04:12.000+00:00,2020-03-04T08:27:29.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1276, +tapd:TapdIssue:1:11991001001420,https://www.tapd.cn/991/prong/stories/view/11991001001420,11991001001420,,,,BUG,IN_PROGRESS,,0,2020-03-04T07:41:18.000+00:00,2020-02-25T08:07:04.000+00:00,2020-03-04T08:20:12.000+00:00,11494,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1277, +tapd:TapdIssue:1:11991001001422,https://www.tapd.cn/991/prong/stories/view/11991001001422,11991001001422,,,,BUG,DONE,已拒绝,0,,2020-02-25T08:10:51.000+00:00,2020-03-04T08:12:17.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1278, +tapd:TapdIssue:1:11991001001423,https://www.tapd.cn/991/prong/stories/view/11991001001423,11991001001423,,,,BUG,DONE,已拒绝,0,,2020-02-25T08:12:56.000+00:00,2020-03-04T08:25:19.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1279, +tapd:TapdIssue:1:11991001001425,https://www.tapd.cn/991/prong/stories/view/11991001001425,11991001001425,,,,BUG,IN_PROGRESS,,0,2020-03-04T07:41:01.000+00:00,2020-02-25T08:18:40.000+00:00,2020-03-04T08:19:48.000+00:00,11482,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1280, +tapd:TapdIssue:1:11991001001426,https://www.tapd.cn/991/prong/stories/view/11991001001426,11991001001426,,,,BUG,DONE,已拒绝,0,,2020-02-25T08:23:39.000+00:00,2020-03-04T08:12:19.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1281, +tapd:TapdIssue:1:11991001001447,https://www.tapd.cn/991/prong/stories/view/11991001001447,11991001001447,,,,BUG,IN_PROGRESS,,0,2020-03-17T08:43:28.000+00:00,2020-02-27T03:06:59.000+00:00,2020-03-18T08:24:37.000+00:00,27696,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1282, +tapd:TapdIssue:1:11991001001448,https://www.tapd.cn/991/prong/stories/view/11991001001448,11991001001448,,,,BUG,DONE,已拒绝,0,,2020-02-27T03:14:02.000+00:00,2020-04-27T02:53:11.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1283, +tapd:TapdIssue:1:11991001001450,https://www.tapd.cn/991/prong/stories/view/11991001001450,11991001001450,,,,BUG,IN_PROGRESS,,0,2020-03-17T08:43:04.000+00:00,2020-02-27T03:18:04.000+00:00,2020-03-18T08:24:15.000+00:00,27685,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1284, +tapd:TapdIssue:1:11991001001451,https://www.tapd.cn/991/prong/stories/view/11991001001451,11991001001451,,,,BUG,IN_PROGRESS,,0,2020-03-17T08:42:17.000+00:00,2020-02-27T03:36:29.000+00:00,2020-03-18T08:23:08.000+00:00,27665,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1285, +tapd:TapdIssue:1:11991001001710,https://www.tapd.cn/991/prong/stories/view/11991001001710,11991001001710,,,,BUG,DONE,已拒绝,0,,2020-03-13T06:14:26.000+00:00,2020-04-01T09:38:36.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1286, +tapd:TapdIssue:1:11991001001711,https://www.tapd.cn/991/prong/stories/view/11991001001711,11991001001711,,,,BUG,DONE,已拒绝,0,,2020-03-13T06:20:04.000+00:00,2020-04-01T09:37:52.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1287, +tapd:TapdIssue:1:11991001001737,https://www.tapd.cn/991/prong/stories/view/11991001001737,11991001001737,,,,BUG,IN_PROGRESS,,0,2020-03-26T08:31:05.000+00:00,2020-03-18T07:27:14.000+00:00,2020-03-26T09:02:54.000+00:00,11583,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:test-11test-11test-11,tapd:TapdAccount:1:,,normal,,,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1288, +tapd:TapdIssue:1:11991001001739,https://www.tapd.cn/991/prong/stories/view/11991001001739,11991001001739,,,,BUG,IN_PROGRESS,,0,2020-03-26T08:25:10.000+00:00,2020-03-18T07:32:55.000+00:00,2020-03-26T09:02:37.000+00:00,11572,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:tt90ddtt9a81tt5bb5,tapd:TapdAccount:1:,,normal,,,tt90ddtt9a81tt5bb5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1289, +tapd:TapdIssue:1:11991001001740,https://www.tapd.cn/991/prong/stories/view/11991001001740,11991001001740,,,,BUG,DONE,已拒绝,0,,2020-03-18T07:37:43.000+00:00,2020-03-25T02:38:34.000+00:00,0,tapd:TapdIssue:1:0,medium,0,0,0,tapd:TapdAccount:1:郝骁宵,tapd:TapdAccount:1:郝骁宵,郝骁宵,normal,,,郝骁宵,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1290, diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv index 933d48ad..23725838 100644 --- a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv +++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv @@ -3,6 +3,6 @@ connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteratio 1,11991001000093,owner,--,u5d14u6600;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,2, 1,11991001000095,comment,--,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, 1,11991001000095,owner,u5d14u6600;,u5d14u6600;u9648u5fd7u9274;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, -1,11991001000095,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, +1,11991001000095,status,test-11test-11test-11,test-11test-11test-12,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, 1,11991001000096,due,2019-12-13,2020-01-08,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,4, 1,11991001000103,name,test-11test-11test-11test-11,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,5, diff --git a/plugins/tapd/e2e/snapshot_tables/board_issues_bug.csv b/plugins/tapd/e2e/snapshot_tables/board_issues_bug.csv index 9ed5c20f..2f39f9b1 100644 --- a/plugins/tapd/e2e/snapshot_tables/board_issues_bug.csv +++ b/plugins/tapd/e2e/snapshot_tables/board_issues_bug.csv @@ -1,21 +1,21 @@ board_id,issue_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001025,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1271, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001030,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1272, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001031,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1273, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001032,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1274, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001417,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1275, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001418,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1276, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001420,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1277, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001422,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1278, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001423,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1279, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001425,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1280, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001426,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1281, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001447,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1282, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001448,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1283, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001450,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1284, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001451,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1285, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001710,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1286, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001711,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1287, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001737,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1288, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001739,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1289, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001001740,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1290, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001025,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1271, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001030,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1272, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001031,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1273, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001032,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1274, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001417,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1275, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001418,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1276, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001420,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1277, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001422,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1278, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001423,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1279, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001425,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1280, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001426,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1281, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001447,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1282, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001448,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1283, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001450,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1284, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001451,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1285, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001710,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1286, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001711,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1287, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001737,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1288, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001739,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1289, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001001740,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bugs,1290, diff --git a/plugins/tapd/e2e/snapshot_tables/board_issues_story.csv b/plugins/tapd/e2e/snapshot_tables/board_issues_story.csv index c47e3861..11743bec 100644 --- a/plugins/tapd/e2e/snapshot_tables/board_issues_story.csv +++ b/plugins/tapd/e2e/snapshot_tables/board_issues_story.csv @@ -1,21 +1,21 @@ board_id,issue_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001037563,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,1, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001037696,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,2, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001037697,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,3, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001038322,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,4, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001038323,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,5, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001038697,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,6, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001038911,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,7, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001038912,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,8, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001039664,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,9, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001039673,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,10, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001040086,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,11, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001040088,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,12, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041163,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,13, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041164,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,14, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041165,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,15, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041166,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,16, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041788,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,17, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041789,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,18, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041899,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,19, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001041900,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,20, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001037563,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,1, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001037696,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,2, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001037697,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,3, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001038322,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,4, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001038323,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,5, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001038697,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,6, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001038911,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,7, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001038912,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,8, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001039664,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,9, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001039673,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,10, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001040086,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,11, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001040088,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,12, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041163,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,13, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041164,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,14, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041165,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,15, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041166,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,16, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041788,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,17, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041789,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,18, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041899,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,19, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001041900,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_stories,20, diff --git a/plugins/tapd/e2e/snapshot_tables/board_issues_task.csv b/plugins/tapd/e2e/snapshot_tables/board_issues_task.csv index 75cadfb1..df972fc8 100644 --- a/plugins/tapd/e2e/snapshot_tables/board_issues_task.csv +++ b/plugins/tapd/e2e/snapshot_tables/board_issues_task.csv @@ -1,16 +1,16 @@ board_id,issue_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015107,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4339, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015121,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4340, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015142,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4341, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015184,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4342, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015203,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4343, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015207,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4344, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015253,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4345, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015307,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4346, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015309,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4347, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015340,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4348, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015361,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4349, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015431,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4350, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015441,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4351, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015452,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4352, -tapd:TapdWorkspace:991,tapd:TapdIssue:1:11991001015583,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4353, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015107,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4339, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015121,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4340, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015142,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4341, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015184,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4342, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015203,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4343, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015207,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4344, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015253,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4345, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015307,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4346, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015309,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4347, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015340,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4348, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015361,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4349, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015431,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4350, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015441,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4351, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015452,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4352, +tapd:TapdWorkspace:1:991,tapd:TapdIssue:1:11991001015583,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_tasks,4353, diff --git a/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv b/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv index 7af650a7..574a490b 100644 --- a/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv +++ b/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv @@ -1,8 +1,8 @@ -id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value -tapd:TapdStoryChangelog:1:11991001000065:delete_story,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,1,,tapd:TapdIssue:1:11991001000028,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_story,delete_story,,,2019-12-12T07:46:25.000+00:00,--,-- -tapd:TapdStoryChangelog:1:11991001000093:owner,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,2,,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:01:42.000+00:00,--,u5d14u6600; -tapd:TapdStoryChangelog:1:11991001000095:comment,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,comment,comment,,,2019-12-12T10:12:07.000+00:00,--,test-11test-11test-11test-11 -tapd:TapdStoryChangelog:1:11991001000095:owner,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:12:07.000+00:00,u5d14u6600;,u5d14u6600;u9648u5fd7u9274; -tapd:TapdStoryChangelog:1:11991001000095:status,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-12T10:12:07.000+00:00,test-11test-11test-11,test-11test-11test-11 -tapd:TapdStoryChangelog:1:11991001000096:due,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,4,,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,due,due,,,2019-12-12T10:13:04.000+00:00,2019-12-13,2020-01-08 -tapd:TapdStoryChangelog:1:11991001000103:name,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,5,,tapd:TapdIssue:1:11991001000046,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,name,name,,,2019-12-12T10:21:58.000+00:00,test-11test-11test-11test-11,test-11test-11test-11test-11 +id,issue_id,author_id,author_name,field_id,field_name,from_value,to_value,created_date,original_from_value,original_to_value,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark +tapd:TapdStoryChangelog:1:11991001000065:delete_story,tapd:TapdIssue:1:11991001000028,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_story,delete_story,,,2019-12-12T07:46:25.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,1, +tapd:TapdStoryChangelog:1:11991001000093:owner,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:01:42.000+00:00,--,u5d14u6600;,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,2, +tapd:TapdStoryChangelog:1:11991001000095:comment,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,comment,comment,,,2019-12-12T10:12:07.000+00:00,--,test-11test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, +tapd:TapdStoryChangelog:1:11991001000095:owner,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,owner,,,2019-12-12T10:12:07.000+00:00,u5d14u6600;,u5d14u6600;u9648u5fd7u9274;,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, +tapd:TapdStoryChangelog:1:11991001000095:status,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,todoStatus,inprogressStatus,2019-12-12T10:12:07.000+00:00,test-11test-11test-11,test-11test-11test-12,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3, +tapd:TapdStoryChangelog:1:11991001000096:due,tapd:TapdIssue:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,due,due,,,2019-12-12T10:13:04.000+00:00,2019-12-13,2020-01-08,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,4, +tapd:TapdStoryChangelog:1:11991001000103:name,tapd:TapdIssue:1:11991001000046,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,name,name,,,2019-12-12T10:21:58.000+00:00,test-11test-11test-11test-11,test-11test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,5, diff --git a/plugins/tapd/e2e/story_changelog_test.go b/plugins/tapd/e2e/story_changelog_test.go index c89277ce..37ecef4f 100644 --- a/plugins/tapd/e2e/story_changelog_test.go +++ b/plugins/tapd/e2e/story_changelog_test.go @@ -38,8 +38,52 @@ func TestTapdStoryChangelogDataFlow(t *testing.T) { ConnectionId: 1, CompanyId: 99, WorkspaceId: 991, + TransformationRules: tasks.TransformationRules{ + TypeMappings: map[string]tasks.TypeMapping{ + "Techstory": { + StandardType: "REQUIREMENT", + }, + "技术债": { + StandardType: "REQUIREMENT", + }, + "需求": { + StandardType: "REQUIREMENT", + }, + }, + StatusMappings: map[string]tasks.OriginalStatus{ + "doneStatus": []string{"已关闭"}, + "inprogressStatus": []string{"开发中", "developing", "test-11test-11test-12"}, + "todoStatus": []string{"重新打开", "planning", "test-11test-11test-11"}, + }, + }, }, } + + dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_status.csv", + "_raw_tapd_api_story_status") + dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_status_last_steps.csv", + "_raw_tapd_api_story_status_last_steps") + // verify extraction + dataflowTester.FlushTabler(&models.TapdWorkitemType{}) + dataflowTester.FlushTabler(&models.TapdStoryStatus{}) + dataflowTester.Subtask(tasks.ExtractStoryStatusMeta, taskData) + dataflowTester.Subtask(tasks.EnrichStoryStatusLastStepMeta, taskData) + dataflowTester.VerifyTable( + models.TapdStoryStatus{}, + "./snapshot_tables/_tool_tapd_story_statuses.csv", + []string{ + "connection_id", + "workspace_id", + "english_name", + "chinese_name", + "is_last_step", + "_raw_data_params", + "_raw_data_table", + "_raw_data_id", + "_raw_data_remark", + }, + ) + // import raw data table dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_changelogs.csv", "_raw_tapd_api_story_changelogs") diff --git a/plugins/tapd/models/bug_status.go b/plugins/tapd/models/bug_status.go index 7a83acc9..9b28b3d8 100644 --- a/plugins/tapd/models/bug_status.go +++ b/plugins/tapd/models/bug_status.go @@ -17,7 +17,9 @@ limitations under the License. package models -import "github.com/apache/incubator-devlake/models/common" +import ( + "github.com/apache/incubator-devlake/models/common" +) type TapdBugStatus struct { ConnectionId uint64 `gorm:"primaryKey"` @@ -31,3 +33,23 @@ type TapdBugStatus struct { func (TapdBugStatus) TableName() string { return "_tool_tapd_bug_statuses" } + +type TapdStatus interface { + GetChinese() string + GetEnglish() string + GetIsLastStep() bool +} + +func (s TapdBugStatus) GetChinese() string { + return s.ChineseName +} + +func (s TapdBugStatus) GetEnglish() string { + return s.EnglishName +} + +func (s TapdBugStatus) GetIsLastStep() bool { + return s.IsLastStep +} + +var _ TapdStatus = (*TapdBugStatus)(nil) diff --git a/plugins/tapd/models/story_status.go b/plugins/tapd/models/story_status.go index 77e4c1fb..a574d8de 100644 --- a/plugins/tapd/models/story_status.go +++ b/plugins/tapd/models/story_status.go @@ -31,3 +31,15 @@ type TapdStoryStatus struct { func (TapdStoryStatus) TableName() string { return "_tool_tapd_story_statuses" } + +func (s TapdStoryStatus) GetChinese() string { + return s.ChineseName +} + +func (s TapdStoryStatus) GetEnglish() string { + return s.EnglishName +} + +func (s TapdStoryStatus) GetIsLastStep() bool { + return s.IsLastStep +} diff --git a/plugins/tapd/tasks/bug_changelog_converter.go b/plugins/tapd/tasks/bug_changelog_converter.go index 9c6e5858..7f032177 100644 --- a/plugins/tapd/tasks/bug_changelog_converter.go +++ b/plugins/tapd/tasks/bug_changelog_converter.go @@ -56,6 +56,12 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) errors.Error { rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_BUG_CHANGELOG_TABLE, false) logger := taskCtx.GetLogger() db := taskCtx.GetDal() + statusList := make([]models.TapdBugStatus, 0) + _, getStdStatus, err := getDefaltStdStatusMapping(data, db, statusList) + if err != nil { + return err + } + customStatusMap := getStatusMapping(data) logger.Info("convert changelog :%d", data.Options.WorkspaceId) issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{}) accountIdGen := didgen.NewDomainIdGenerator(&models.TapdAccount{}) @@ -93,7 +99,15 @@ func ConvertBugChangelog(taskCtx core.SubTaskContext) errors.Error { OriginalToValue: cl.ValueAfterParsed, CreatedDate: *cl.Created, } - + if domainCl.FieldName == "status" { + if len(customStatusMap) != 0 { + domainCl.FromValue = customStatusMap[domainCl.OriginalFromValue] + domainCl.ToValue = customStatusMap[domainCl.OriginalToValue] + } else { + domainCl.FromValue = getStdStatus(domainCl.OriginalFromValue) + domainCl.ToValue = getStdStatus(domainCl.OriginalToValue) + } + } return []interface{}{ domainCl, }, nil diff --git a/plugins/tapd/tasks/bug_converter.go b/plugins/tapd/tasks/bug_converter.go index 364ad03f..ad603f14 100644 --- a/plugins/tapd/tasks/bug_converter.go +++ b/plugins/tapd/tasks/bug_converter.go @@ -21,6 +21,7 @@ import ( "github.com/apache/incubator-devlake/errors" "reflect" "strconv" + "time" "github.com/apache/incubator-devlake/models/domainlayer/didgen" @@ -62,15 +63,15 @@ func ConvertBug(taskCtx core.SubTaskContext) errors.Error { DomainEntity: domainlayer.DomainEntity{ Id: issueIdGen.Generate(toolL.ConnectionId, toolL.Id), }, - Url: toolL.Url, - IssueKey: strconv.FormatUint(toolL.Id, 10), - Title: toolL.Title, - EpicKey: toolL.EpicKey, - Type: "BUG", - Status: toolL.StdStatus, - //ResolutionDate: (*time.Time)(toolL.Resolved), - //CreatedDate: (*time.Time)(toolL.Created), - //UpdatedDate: (*time.Time)(toolL.Modified), + Url: toolL.Url, + IssueKey: strconv.FormatUint(toolL.Id, 10), + Title: toolL.Title, + EpicKey: toolL.EpicKey, + Type: "BUG", + Status: toolL.StdStatus, + ResolutionDate: (*time.Time)(toolL.Resolved), + CreatedDate: (*time.Time)(toolL.Created), + UpdatedDate: (*time.Time)(toolL.Modified), ParentIssueId: issueIdGen.Generate(toolL.ConnectionId, toolL.IssueId), Priority: toolL.Priority, CreatorId: accountIdGen.Generate(data.Options.ConnectionId, toolL.Reporter), @@ -86,7 +87,7 @@ func ConvertBug(taskCtx core.SubTaskContext) errors.Error { } results := make([]interface{}, 0, 2) boardIssue := &ticket.BoardIssue{ - BoardId: workspaceIdGen.Generate(toolL.WorkspaceId), + BoardId: workspaceIdGen.Generate(toolL.ConnectionId, toolL.WorkspaceId), IssueId: domainL.Id, } sprintIssue := &ticket.SprintIssue{ diff --git a/plugins/tapd/tasks/bug_extractor.go b/plugins/tapd/tasks/bug_extractor.go index 7b48300d..65b94c46 100644 --- a/plugins/tapd/tasks/bug_extractor.go +++ b/plugins/tapd/tasks/bug_extractor.go @@ -23,9 +23,7 @@ import ( "github.com/apache/incubator-devlake/errors" "strings" - "github.com/apache/incubator-devlake/models/domainlayer/ticket" "github.com/apache/incubator-devlake/plugins/core" - "github.com/apache/incubator-devlake/plugins/core/dal" "github.com/apache/incubator-devlake/plugins/helper" "github.com/apache/incubator-devlake/plugins/tapd/models" ) @@ -43,30 +41,11 @@ var ExtractBugMeta = core.SubTaskMeta{ func ExtractBugs(taskCtx core.SubTaskContext) errors.Error { rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_BUG_TABLE, false) db := taskCtx.GetDal() - statusList := make([]*models.TapdBugStatus, 0) - clauses := []dal.Clause{ - dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId), - } - err := db.All(&statusList, clauses...) + statusList := make([]models.TapdBugStatus, 0) + statusLanguageMap, getStdStatus, err := getDefaltStdStatusMapping(data, db, statusList) if err != nil { return err } - - statusLanguageMap := make(map[string]string, len(statusList)) - statusLastStepMap := make(map[string]bool, len(statusList)) - for _, v := range statusList { - statusLanguageMap[v.EnglishName] = v.ChineseName - statusLastStepMap[v.ChineseName] = v.IsLastStep - } - getStdStatus := func(statusKey string) string { - if statusLastStepMap[statusKey] { - return ticket.DONE - } else if statusKey == "新建" { - return ticket.TODO - } else { - return ticket.IN_PROGRESS - } - } customStatusMap := getStatusMapping(data) extractor, err := helper.NewApiExtractor(helper.ApiExtractorArgs{ diff --git a/plugins/tapd/tasks/shared.go b/plugins/tapd/tasks/shared.go index 199c9d7a..c30906a5 100644 --- a/plugins/tapd/tasks/shared.go +++ b/plugins/tapd/tasks/shared.go @@ -22,6 +22,7 @@ import ( goerror "errors" "fmt" "github.com/apache/incubator-devlake/errors" + "github.com/apache/incubator-devlake/models/domainlayer/ticket" "gorm.io/gorm" "io" "net/http" @@ -42,8 +43,6 @@ type Data struct { Count int `json:"count"` } -var statusMapping map[string]string - var UserIdGen *didgen.DomainIdGenerator var WorkspaceIdGen *didgen.DomainIdGenerator var IssueIdGen *didgen.DomainIdGenerator @@ -169,10 +168,7 @@ func getTypeMappings(data *TapdTaskData, db dal.Dal, system string) (*typeMappin } func getStatusMapping(data *TapdTaskData) map[string]string { - if len(statusMapping) != 0 { - return statusMapping - } - statusMapping = make(map[string]string) + statusMapping := make(map[string]string) mapping := data.Options.TransformationRules.StatusMappings for std, orig := range mapping { for _, v := range orig { @@ -182,3 +178,31 @@ func getStatusMapping(data *TapdTaskData) map[string]string { return statusMapping } + +func getDefaltStdStatusMapping[S models.TapdStatus](data *TapdTaskData, db dal.Dal, statusList []S) (map[string]string, func(statusKey string) string, errors.Error) { + clauses := []dal.Clause{ + dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId), + } + err := db.All(&statusList, clauses...) + if err != nil { + return nil, nil, err + } + + statusLanguageMap := make(map[string]string, len(statusList)) + statusLastStepMap := make(map[string]bool, len(statusList)) + + for _, v := range statusList { + statusLanguageMap[v.GetEnglish()] = v.GetChinese() + statusLastStepMap[v.GetChinese()] = v.GetIsLastStep() + } + getStdStatus := func(statusKey string) string { + if statusLastStepMap[statusKey] { + return ticket.DONE + } else if statusKey == "草稿" { + return ticket.TODO + } else { + return ticket.IN_PROGRESS + } + } + return statusLanguageMap, getStdStatus, nil +} diff --git a/plugins/tapd/tasks/story_changelog_converter.go b/plugins/tapd/tasks/story_changelog_converter.go index 005007ec..46b38c38 100644 --- a/plugins/tapd/tasks/story_changelog_converter.go +++ b/plugins/tapd/tasks/story_changelog_converter.go @@ -59,6 +59,12 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) errors.Error { rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_STORY_CHANGELOG_TABLE, false) logger := taskCtx.GetLogger() db := taskCtx.GetDal() + statusList := make([]models.TapdStoryStatus, 0) + _, getStdStatus, err := getDefaltStdStatusMapping(data, db, statusList) + if err != nil { + return err + } + customStatusMap := getStatusMapping(data) logger.Info("convert changelog :%d", data.Options.WorkspaceId) clIdGen := didgen.NewDomainIdGenerator(&models.TapdStoryChangelog{}) issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{}) @@ -96,6 +102,15 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) errors.Error { OriginalToValue: cl.ValueAfterParsed, CreatedDate: *cl.Created, } + if domainCl.FieldName == "status" { + if len(customStatusMap) != 0 { + domainCl.FromValue = customStatusMap[domainCl.OriginalFromValue] + domainCl.ToValue = customStatusMap[domainCl.OriginalToValue] + } else { + domainCl.FromValue = getStdStatus(domainCl.OriginalFromValue) + domainCl.ToValue = getStdStatus(domainCl.OriginalToValue) + } + } return []interface{}{ domainCl, diff --git a/plugins/tapd/tasks/story_converter.go b/plugins/tapd/tasks/story_converter.go index d458f7f6..a688b2af 100644 --- a/plugins/tapd/tasks/story_converter.go +++ b/plugins/tapd/tasks/story_converter.go @@ -89,7 +89,7 @@ func ConvertStory(taskCtx core.SubTaskContext) errors.Error { } results := make([]interface{}, 0, 2) boardIssue := &ticket.BoardIssue{ - BoardId: workspaceIdGen.Generate(toolL.WorkspaceId), + BoardId: workspaceIdGen.Generate(toolL.ConnectionId, toolL.WorkspaceId), IssueId: domainL.Id, } sprintIssue := &ticket.SprintIssue{ diff --git a/plugins/tapd/tasks/story_extractor.go b/plugins/tapd/tasks/story_extractor.go index d3788740..e1183828 100644 --- a/plugins/tapd/tasks/story_extractor.go +++ b/plugins/tapd/tasks/story_extractor.go @@ -23,9 +23,7 @@ import ( "github.com/apache/incubator-devlake/errors" "strings" - "github.com/apache/incubator-devlake/models/domainlayer/ticket" "github.com/apache/incubator-devlake/plugins/core" - "github.com/apache/incubator-devlake/plugins/core/dal" "github.com/apache/incubator-devlake/plugins/helper" "github.com/apache/incubator-devlake/plugins/tapd/models" ) @@ -43,33 +41,16 @@ var ExtractStoryMeta = core.SubTaskMeta{ func ExtractStories(taskCtx core.SubTaskContext) errors.Error { rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_STORY_TABLE, false) db := taskCtx.GetDal() - statusList := make([]*models.TapdStoryStatus, 0) - clauses := []dal.Clause{ - dal.Where("connection_id = ? and workspace_id = ?", data.Options.ConnectionId, data.Options.WorkspaceId), - } - err := db.All(&statusList, clauses...) + statusList := make([]models.TapdStoryStatus, 0) + statusLanguageMap, getStdStatus, err := getDefaltStdStatusMapping(data, db, statusList) if err != nil { return err } - - statusLanguageMap := make(map[string]string, len(statusList)) - statusLastStepMap := make(map[string]bool, len(statusList)) - for _, v := range statusList { - statusLanguageMap[v.EnglishName] = v.ChineseName - statusLastStepMap[v.ChineseName] = v.IsLastStep - } - getStdStatus := func(statusKey string) string { - if statusLastStepMap[statusKey] { - return ticket.DONE - } else if statusKey == "草稿" { - return ticket.TODO - } else { - return ticket.IN_PROGRESS - } - } customStatusMap := getStatusMapping(data) typeMap, err := getTypeMappings(data, db, "story") - + if err != nil { + return err + } extractor, err := helper.NewApiExtractor(helper.ApiExtractorArgs{ RawDataSubTaskArgs: *rawDataSubTaskArgs, BatchSize: 100, diff --git a/plugins/tapd/tasks/task_changelog_converter.go b/plugins/tapd/tasks/task_changelog_converter.go index f6a3d9cf..57e65fe2 100644 --- a/plugins/tapd/tasks/task_changelog_converter.go +++ b/plugins/tapd/tasks/task_changelog_converter.go @@ -60,6 +60,16 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) errors.Error { rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx, RAW_TASK_CHANGELOG_TABLE, false) logger := taskCtx.GetLogger() db := taskCtx.GetDal() + customStatusMap := getStatusMapping(data) + getTaskStdStatus := func(statusKey string) string { + if statusKey == "done" { + return ticket.DONE + } else if statusKey == "progressing" { + return ticket.IN_PROGRESS + } else { + return ticket.TODO + } + } logger.Info("convert changelog :%d", data.Options.WorkspaceId) clIdGen := didgen.NewDomainIdGenerator(&models.TapdTaskChangelog{}) issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{}) @@ -96,6 +106,15 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) errors.Error { OriginalToValue: cl.ValueAfterParsed, CreatedDate: *cl.Created, } + if domainCl.FieldName == "status" { + if len(customStatusMap) != 0 { + domainCl.FromValue = customStatusMap[domainCl.OriginalFromValue] + domainCl.ToValue = customStatusMap[domainCl.OriginalToValue] + } else { + domainCl.FromValue = getTaskStdStatus(domainCl.OriginalFromValue) + domainCl.ToValue = getTaskStdStatus(domainCl.OriginalToValue) + } + } return []interface{}{ domainCl, diff --git a/plugins/tapd/tasks/task_converter.go b/plugins/tapd/tasks/task_converter.go index daca606a..30dad0a2 100644 --- a/plugins/tapd/tasks/task_converter.go +++ b/plugins/tapd/tasks/task_converter.go @@ -86,7 +86,7 @@ func ConvertTask(taskCtx core.SubTaskContext) errors.Error { } results := make([]interface{}, 0, 2) boardIssue := &ticket.BoardIssue{ - BoardId: workspaceIdGen.Generate(toolL.WorkspaceId), + BoardId: workspaceIdGen.Generate(toolL.ConnectionId, toolL.WorkspaceId), IssueId: domainL.Id, } sprintIssue := &ticket.SprintIssue{
