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

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

commit a10d025145d74ed92dc1543813634848a50a889c
Author: abeizn <[email protected]>
AuthorDate: Wed Jun 22 15:31:53 2022 +0800

    e2e on tapd bug/story/task_changelog
---
 plugins/tapd/e2e/bug_changelog_test.go             |  5 +--
 .../_tool_tapd_story_changelog_items.csv           | 19 ++++++++++
 .../_tool_tapd_story_changelogs.csv                | 17 +++++++++
 .../_tool_tapd_task_changelog_items.csv            | 33 +++++++++++++++++
 .../snapshot_tables/_tool_tapd_task_changelogs.csv | 18 ++++++++++
 .../{changelogs.csv => changelogs_bug.csv}         |  0
 .../tapd/e2e/snapshot_tables/changelogs_story.csv  | 19 ++++++++++
 .../tapd/e2e/snapshot_tables/changelogs_task.csv   | 33 +++++++++++++++++
 ...g_changelog_test.go => story_changelog_test.go} | 41 +++++++++++----------
 ...ug_changelog_test.go => task_changelog_test.go} | 42 ++++++++++++----------
 plugins/tapd/tasks/story_changelog_converter.go    |  6 ++--
 plugins/tapd/tasks/task_changelog_converter.go     |  6 ++--
 12 files changed, 195 insertions(+), 44 deletions(-)

diff --git a/plugins/tapd/e2e/bug_changelog_test.go 
b/plugins/tapd/e2e/bug_changelog_test.go
index 04b36285..f0ad8cc2 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/bug_changelog_test.go
@@ -19,9 +19,10 @@ package e2e
 
 import (
        "fmt"
-       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
        "testing"
 
+       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
        "github.com/apache/incubator-devlake/helpers/e2ehelper"
        "github.com/apache/incubator-devlake/plugins/tapd/impl"
        "github.com/apache/incubator-devlake/plugins/tapd/models"
@@ -90,7 +91,7 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
        dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
        dataflowTester.VerifyTable(
                ticket.Changelog{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
ticket.Changelog{}.TableName()),
+               fmt.Sprintf("./snapshot_tables/%s_bug.csv", 
ticket.Changelog{}.TableName()),
                []string{"id"},
                []string{
                        "_raw_data_params",
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
new file mode 100644
index 00000000..d5472d57
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
@@ -0,0 +1,19 @@
+connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteration_id_from,iteration_id_to,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000065,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,
+1,11991001000093,owner,--,u5d14u6600;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,
+1,11991001000095,comment,--,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000095,owner,u5d14u6600;,u5d14u6600;u9648u5fd7u9274;,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000095,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000096,due,2019-12-13,2020-01-08,0,0,"{""ConnectionId"":1,""CompanyId"":99,""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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,
+1,11991001000115,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,
+1,11991001000119,iteration_id,test-11test-11,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,
+1,11991001000126,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,
+1,11991001000127,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,
+1,11991001000128,iteration_id,0,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,
+1,11991001000143,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,
+1,11991001000147,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,
+1,11991001000148,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,
+1,11991001000149,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,
+1,11991001000150,parent_id,0,test-11test-11.0test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,
+1,11991001000151,delete_story,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv 
b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
new file mode 100644
index 00000000..15c28628
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
@@ -0,0 +1,17 @@
+connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,comment,entity_type,change_type,story_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000065,991,0,test-11test-11,2019-12-12T07:46:25.000+00:00,delete,,Story,,11991001000028,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,
+1,11991001000093,991,11991001000020,test-11test-11test-11,2019-12-12T10:01:42.000+00:00,planning,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,
+1,11991001000095,991,11991001000020,test-11test-11test-11,2019-12-12T10:12:07.000+00:00,planning,test-11test-11test-11test-11<div></div>,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,
+1,11991001000096,991,11991001000020,test-11test-11test-11,2019-12-12T10:13:04.000+00:00,developing,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,4,
+1,11991001000103,991,0,test-11test-11test-11,2019-12-12T10:21:58.000+00:00,planning,,Story,,11991001000046,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,
+1,11991001000115,991,0,test-11test-11test-11,2019-12-12T10:35:15.000+00:00,delete,,Story,,11991001000046,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,
+1,11991001000119,991,11991001000020,test-11test-11test-11,2019-12-12T10:38:03.000+00:00,,,Story,,11991001000033,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,
+1,11991001000126,991,11991001000020,test-11test-11test-11,2019-12-12T10:47:49.000+00:00,planning,,Story,,11991001000055,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,
+1,11991001000127,991,0,test-11test-11test-11,2019-12-12T10:47:51.000+00:00,planning,,Story,,11991001000056,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,
+1,11991001000128,991,11991001000020,test-11test-11test-11,2019-12-12T10:47:53.000+00:00,planning,,Story,,11991001000057,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,
+1,11991001000143,991,0,test-11test-11,2019-12-13T02:27:51.000+00:00,delete,,Story,,11991001000056,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,
+1,11991001000147,991,11991001000020,test-11test-11test-11,2019-12-13T02:35:23.000+00:00,planning,,Story,,11991001000074,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,
+1,11991001000148,991,11991001000020,test-11test-11test-11,2019-12-13T02:38:19.000+00:00,planning,,Story,,11991001000075,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,
+1,11991001000149,991,0,test-11test-11test-11,2019-12-13T02:38:57.000+00:00,planning,,Story,,11991001000076,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,
+1,11991001000150,991,11991001000020,test-11test-11test-11,2019-12-13T02:40:04.000+00:00,planning,,Story,,11991001000077,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,
+1,11991001000151,991,0,zhangwenwei,2019-12-13T02:40:22.000+00:00,delete,,Story,,11991001000076,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,
diff --git 
a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv 
b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
new file mode 100644
index 00000000..f09e476d
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
@@ -0,0 +1,33 @@
+connection_id,changelog_id,field,value_before_parsed,value_after_parsed,iteration_id_from,iteration_id_to,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000220,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,
+1,11991001000221,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,
+1,11991001000222,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000222,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000274,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000274,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000275,description,--,test-11test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,
+1,11991001000313,effort,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,iteration_id,test-11test-11.0,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,remain,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,story_id,0,11991001000130,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000314,iteration_id,0,test-11test-11.0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000314,story_id,11991001000130,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000355,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000355,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000356,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000357,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000357,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000358,priority,Middle,High,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,
+1,11991001000359,priority,--,Middle,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,
+1,11991001000360,priority,--,Middle,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,
+1,11991001000361,priority,Middle,Low,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,
+1,11991001000366,flows,|progressing,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000366,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000367,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,
+1,11991001000368,completed,--,2019-12-16 
16:10:25,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,effort_completed,0,16,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,flows,|done,--,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,modified,2019-12-13 14:53:08,2019-12-16 
16:10:25,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,progress,0,100,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,remain,16,0,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
+1,11991001000368,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
diff --git a/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv 
b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
new file mode 100644
index 00000000..6762b1ec
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
@@ -0,0 +1,18 @@
+connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,comment,entity_type,change_type,change_type_text,task_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
+1,11991001000220,991,0,test-11test-11,2019-12-13T06:36:10.000+00:00,open,,Task,,,11991001000111,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,
+1,11991001000221,991,0,test-11test-11,2019-12-13T06:36:14.000+00:00,open,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,
+1,11991001000222,991,0,test-11test-11test-11,2019-12-13T06:52:33.000+00:00,open,,Task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000274,991,0,test-11test-11,2019-12-13T10:41:13.000+00:00,open,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,
+1,11991001000275,991,2,test-11test-11,2019-12-13T10:41:48.000+00:00,progressing,,Task,,,11991001000110,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,
+1,11991001000313,991,0,test-11test-11test-11,2019-12-16T02:49:48.000+00:00,open,,Task,,,11991001000112,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000314,991,0,test-11test-11test-11,2019-12-16T02:50:09.000+00:00,open,,Task,,,11991001000112,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000355,991,0,test-11test-11test-11,2019-12-16T04:46:02.000+00:00,open,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,
+1,11991001000356,991,2,test-11test-11test-11,2019-12-16T04:46:04.000+00:00,progressing,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000357,991,0,test-11test-11test-11,2019-12-16T04:46:07.000+00:00,open,,Task,,,11991001000101,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,
+1,11991001000358,991,2,test-11test-11test-11,2019-12-16T04:46:39.000+00:00,progressing,,Task,,,11991001000101,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,
+1,11991001000359,991,0,test-11test-11test-11,2019-12-16T04:46:42.000+00:00,open,,Task,,,11991001000102,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,
+1,11991001000360,991,0,test-11test-11test-11,2019-12-16T04:46:46.000+00:00,open,,Task,,,11991001000100,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,
+1,11991001000361,991,0,test-11test-11test-11,2019-12-16T04:46:49.000+00:00,open,,Task,,,11991001000100,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,
+1,11991001000366,991,0,test-11test-11test-11,2019-12-16T08:07:18.000+00:00,open,,Task,,,11991001000104,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000367,991,0,test-11test-11test-11,2019-12-16T08:10:25.000+00:00,progressing,,task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,
+1,11991001000368,991,2,test-11test-11test-11,2019-12-16T08:10:25.000+00:00,progressing,,Task,,,11991001000103,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs.csv 
b/plugins/tapd/e2e/snapshot_tables/changelogs_bug.csv
similarity index 100%
rename from plugins/tapd/e2e/snapshot_tables/changelogs.csv
rename to plugins/tapd/e2e/snapshot_tables/changelogs_bug.csv
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv 
b/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv
new file mode 100644
index 00000000..5918236e
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/changelogs_story.csv
@@ -0,0 +1,19 @@
+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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,1,,tapd:TapdIssue:1:11991001000028,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,2,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,3,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,4,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991: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"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,5,,tapd:TapdIssue:1:11991001000046,tapd:TapdUser:1:991: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
+tapd:TapdStoryChangelog:1:11991001000115:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,6,,tapd:TapdIssue:1:11991001000046,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,delete_story,delete_story,,,2019-12-12T10:35:15.000+00:00,--,--
+tapd:TapdStoryChangelog:1:11991001000119:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,7,,tapd:TapdIssue:1:11991001000033,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:38:03.000+00:00,test-11test-11,0
+tapd:TapdStoryChangelog:1:11991001000126:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,8,,tapd:TapdIssue:1:11991001000055,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:49.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000127:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,9,,tapd:TapdIssue:1:11991001000056,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:51.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000128:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,10,,tapd:TapdIssue:1:11991001000057,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-12T10:47:53.000+00:00,0,test-11test-11
+tapd:TapdStoryChangelog:1:11991001000143:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,11,,tapd:TapdIssue:1:11991001000056,tapd:TapdUser:1:991:test-11test-11,test-11test-11,delete_story,delete_story,,,2019-12-13T02:27:51.000+00:00,--,--
+tapd:TapdStoryChangelog:1:11991001000147:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,12,,tapd:TapdIssue:1:11991001000074,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:35:23.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000148:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,13,,tapd:TapdIssue:1:11991001000075,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:38:19.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000149:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,14,,tapd:TapdIssue:1:11991001000076,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:38:57.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000150:parent_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,15,,tapd:TapdIssue:1:11991001000077,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,parent_id,parent_id,,,2019-12-13T02:40:04.000+00:00,0,test-11test-11.0test-11test-11
+tapd:TapdStoryChangelog:1:11991001000151:delete_story,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_story_changelogs,16,,tapd:TapdIssue:1:11991001000076,tapd:TapdUser:1:991:zhangwenwei,zhangwenwei,delete_story,delete_story,,,2019-12-13T02:40:22.000+00:00,--,--
diff --git a/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv 
b/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv
new file mode 100644
index 00000000..5babd79a
--- /dev/null
+++ b/plugins/tapd/e2e/snapshot_tables/changelogs_task.csv
@@ -0,0 +1,33 @@
+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:TapdTaskChangelog:1:11991001000220:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,1,,tapd:TapdIssue:1:11991001000111,tapd:TapdUser:1:991:test-11test-11,test-11test-11,iteration_id,iteration_id,,,2019-12-13T06:36:10.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000221:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,2,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,iteration_id,iteration_id,,,2019-12-13T06:36:14.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000222:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-13T06:52:33.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000222:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,3,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-13T06:52:33.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000274:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,flows,flows,,,2019-12-13T10:41:13.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000274:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,4,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,status,status,,,2019-12-13T10:41:13.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000275:description,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,5,,tapd:TapdIssue:1:11991001000110,tapd:TapdUser:1:991:test-11test-11,test-11test-11,description,description,,,2019-12-13T10:41:48.000+00:00,--,test-11test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000313:effort,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,effort,effort,,,2019-12-16T02:49:48.000+00:00,24,0
+tapd:TapdTaskChangelog:1:11991001000313:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-16T02:49:48.000+00:00,test-11test-11.0,0
+tapd:TapdTaskChangelog:1:11991001000313:remain,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,remain,remain,,,2019-12-16T02:49:48.000+00:00,24,0
+tapd:TapdTaskChangelog:1:11991001000313:story_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,6,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:49:48.000+00:00,0,11991001000130
+tapd:TapdTaskChangelog:1:11991001000314:iteration_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,iteration_id,iteration_id,,,2019-12-16T02:50:09.000+00:00,0,test-11test-11.0
+tapd:TapdTaskChangelog:1:11991001000314:story_id,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,7,,tapd:TapdIssue:1:11991001000112,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:50:09.000+00:00,11991001000130,0
+tapd:TapdTaskChangelog:1:11991001000355:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T04:46:02.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000355:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,8,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:02.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000356:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,9,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:04.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000357:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T04:46:07.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000357:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,10,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T04:46:07.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000358:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,11,,tapd:TapdIssue:1:11991001000101,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:39.000+00:00,Middle,High
+tapd:TapdTaskChangelog:1:11991001000359:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,12,,tapd:TapdIssue:1:11991001000102,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:42.000+00:00,--,Middle
+tapd:TapdTaskChangelog:1:11991001000360:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,13,,tapd:TapdIssue:1:11991001000100,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:46.000+00:00,--,Middle
+tapd:TapdTaskChangelog:1:11991001000361:priority,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,14,,tapd:TapdIssue:1:11991001000100,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,priority,priority,,,2019-12-16T04:46:49.000+00:00,Middle,Low
+tapd:TapdTaskChangelog:1:11991001000366:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,,tapd:TapdIssue:1:11991001000104,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T08:07:18.000+00:00,|progressing,--
+tapd:TapdTaskChangelog:1:11991001000366:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,15,,tapd:TapdIssue:1:11991001000104,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:07:18.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000367:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,16,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:10:25.000+00:00,test-11test-11test-11,test-11test-11test-11
+tapd:TapdTaskChangelog:1:11991001000368:completed,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,completed,completed,,,2019-12-16T08:10:25.000+00:00,--,2019-12-16
 16:10:25
+tapd:TapdTaskChangelog:1:11991001000368:effort_completed,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,effort_completed,effort_completed,,,2019-12-16T08:10:25.000+00:00,0,16
+tapd:TapdTaskChangelog:1:11991001000368:flows,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T08:10:25.000+00:00,|done,--
+tapd:TapdTaskChangelog:1:11991001000368:modified,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,modified,modified,,,2019-12-16T08:10:25.000+00:00,2019-12-13
 14:53:08,2019-12-16 16:10:25
+tapd:TapdTaskChangelog:1:11991001000368:progress,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,progress,progress,,,2019-12-16T08:10:25.000+00:00,0,100
+tapd:TapdTaskChangelog:1:11991001000368:remain,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,remain,remain,,,2019-12-16T08:10:25.000+00:00,16,0
+tapd:TapdTaskChangelog:1:11991001000368:status,"{""ConnectionId"":1,""CompanyId"":99,""WorkspaceID"":991}",_raw_tapd_api_task_changelogs,17,,tapd:TapdIssue:1:11991001000103,tapd:TapdUser:1:991:test-11test-11test-11,test-11test-11test-11,status,status,,,2019-12-16T08:10:25.000+00:00,test-11test-11test-11,test-11test-11test-11
diff --git a/plugins/tapd/e2e/bug_changelog_test.go 
b/plugins/tapd/e2e/story_changelog_test.go
similarity index 73%
copy from plugins/tapd/e2e/bug_changelog_test.go
copy to plugins/tapd/e2e/story_changelog_test.go
index 04b36285..e19b7a2b 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/story_changelog_test.go
@@ -19,16 +19,17 @@ package e2e
 
 import (
        "fmt"
-       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
        "testing"
 
+       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
        "github.com/apache/incubator-devlake/helpers/e2ehelper"
        "github.com/apache/incubator-devlake/plugins/tapd/impl"
        "github.com/apache/incubator-devlake/plugins/tapd/models"
        "github.com/apache/incubator-devlake/plugins/tapd/tasks"
 )
 
-func TestTapdBugChangelogDataFlow(t *testing.T) {
+func TestTapdStoryChangelogDataFlow(t *testing.T) {
 
        var tapd impl.Tapd
        dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
@@ -41,25 +42,27 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
                },
        }
        // import raw data table
-       
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv",
-               "_raw_tapd_api_bug_changelogs")
+       
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_changelogs.csv",
+               "_raw_tapd_api_story_changelogs")
 
        // verify extraction
-       dataflowTester.FlushTabler(&models.TapdBugChangelog{})
-       dataflowTester.FlushTabler(&models.TapdBugChangelogItem{})
-       dataflowTester.Subtask(tasks.ExtractBugChangelogMeta, taskData)
+       dataflowTester.FlushTabler(&models.TapdStoryChangelog{})
+       dataflowTester.FlushTabler(&models.TapdStoryChangelogItem{})
+       dataflowTester.Subtask(tasks.ExtractStoryChangelogMeta, taskData)
        dataflowTester.VerifyTable(
-               models.TapdBugChangelog{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdBugChangelog{}.TableName()),
-               []string{"connection_id", "id", "field"},
+               models.TapdStoryChangelog{},
+               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdStoryChangelog{}.TableName()),
+               []string{"connection_id", "id"},
                []string{
                        "workspace_id",
-                       "bug_id",
-                       "author",
-                       "old_value",
-                       "new_value",
-                       "memo",
+                       "workitem_type_id",
+                       "creator",
                        "created",
+                       "change_summary",
+                       "comment",
+                       "entity_type",
+                       "change_type",
+                       "story_id",
                        "_raw_data_params",
                        "_raw_data_table",
                        "_raw_data_id",
@@ -67,8 +70,8 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
                },
        )
        dataflowTester.VerifyTable(
-               models.TapdBugChangelogItem{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdBugChangelogItem{}.TableName()),
+               models.TapdStoryChangelogItem{},
+               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdStoryChangelogItem{}.TableName()),
                []string{
                        "connection_id",
                        "changelog_id",
@@ -87,10 +90,10 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
        )
 
        dataflowTester.FlushTabler(&ticket.Changelog{})
-       dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
+       dataflowTester.Subtask(tasks.ConvertStoryChangelogMeta, taskData)
        dataflowTester.VerifyTable(
                ticket.Changelog{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
ticket.Changelog{}.TableName()),
+               fmt.Sprintf("./snapshot_tables/%s_story.csv", 
ticket.Changelog{}.TableName()),
                []string{"id"},
                []string{
                        "_raw_data_params",
diff --git a/plugins/tapd/e2e/bug_changelog_test.go 
b/plugins/tapd/e2e/task_changelog_test.go
similarity index 73%
copy from plugins/tapd/e2e/bug_changelog_test.go
copy to plugins/tapd/e2e/task_changelog_test.go
index 04b36285..9b659d3e 100644
--- a/plugins/tapd/e2e/bug_changelog_test.go
+++ b/plugins/tapd/e2e/task_changelog_test.go
@@ -19,16 +19,17 @@ package e2e
 
 import (
        "fmt"
-       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
        "testing"
 
+       "github.com/apache/incubator-devlake/models/domainlayer/ticket"
+
        "github.com/apache/incubator-devlake/helpers/e2ehelper"
        "github.com/apache/incubator-devlake/plugins/tapd/impl"
        "github.com/apache/incubator-devlake/plugins/tapd/models"
        "github.com/apache/incubator-devlake/plugins/tapd/tasks"
 )
 
-func TestTapdBugChangelogDataFlow(t *testing.T) {
+func TestTapdTaskChangelogDataFlow(t *testing.T) {
 
        var tapd impl.Tapd
        dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
@@ -41,25 +42,28 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
                },
        }
        // import raw data table
-       
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_changelogs.csv",
-               "_raw_tapd_api_bug_changelogs")
+       
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_task_changelogs.csv",
+               "_raw_tapd_api_task_changelogs")
 
        // verify extraction
-       dataflowTester.FlushTabler(&models.TapdBugChangelog{})
-       dataflowTester.FlushTabler(&models.TapdBugChangelogItem{})
-       dataflowTester.Subtask(tasks.ExtractBugChangelogMeta, taskData)
+       dataflowTester.FlushTabler(&models.TapdTaskChangelog{})
+       dataflowTester.FlushTabler(&models.TapdTaskChangelogItem{})
+       dataflowTester.Subtask(tasks.ExtractTaskChangelogMeta, taskData)
        dataflowTester.VerifyTable(
-               models.TapdBugChangelog{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdBugChangelog{}.TableName()),
-               []string{"connection_id", "id", "field"},
+               models.TapdTaskChangelog{},
+               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdTaskChangelog{}.TableName()),
+               []string{"connection_id", "id"},
                []string{
                        "workspace_id",
-                       "bug_id",
-                       "author",
-                       "old_value",
-                       "new_value",
-                       "memo",
+                       "workitem_type_id",
+                       "creator",
                        "created",
+                       "change_summary",
+                       "comment",
+                       "entity_type",
+                       "change_type",
+                       "change_type_text",
+                       "task_id",
                        "_raw_data_params",
                        "_raw_data_table",
                        "_raw_data_id",
@@ -67,8 +71,8 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
                },
        )
        dataflowTester.VerifyTable(
-               models.TapdBugChangelogItem{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdBugChangelogItem{}.TableName()),
+               models.TapdTaskChangelogItem{},
+               fmt.Sprintf("./snapshot_tables/%s.csv", 
models.TapdTaskChangelogItem{}.TableName()),
                []string{
                        "connection_id",
                        "changelog_id",
@@ -87,10 +91,10 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
        )
 
        dataflowTester.FlushTabler(&ticket.Changelog{})
-       dataflowTester.Subtask(tasks.ConvertBugChangelogMeta, taskData)
+       dataflowTester.Subtask(tasks.ConvertTaskChangelogMeta, taskData)
        dataflowTester.VerifyTable(
                ticket.Changelog{},
-               fmt.Sprintf("./snapshot_tables/%s.csv", 
ticket.Changelog{}.TableName()),
+               fmt.Sprintf("./snapshot_tables/%s_task.csv", 
ticket.Changelog{}.TableName()),
                []string{"id"},
                []string{
                        "_raw_data_params",
diff --git a/plugins/tapd/tasks/story_changelog_converter.go 
b/plugins/tapd/tasks/story_changelog_converter.go
index e92c6d81..f6f25cf3 100644
--- a/plugins/tapd/tasks/story_changelog_converter.go
+++ b/plugins/tapd/tasks/story_changelog_converter.go
@@ -60,6 +60,8 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error 
{
        db := taskCtx.GetDal()
        logger.Info("convert changelog :%d", data.Options.WorkspaceId)
        clIdGen := didgen.NewDomainIdGenerator(&models.TapdStoryChangelog{})
+       issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{})
+       userIdGen := didgen.NewDomainIdGenerator(&models.TapdUser{})
 
        clauses := []dal.Clause{
                dal.Select("tc.created, tc.id, tc.workspace_id, tc.story_id, 
tc.creator, _tool_tapd_story_changelog_items.*"),
@@ -84,8 +86,8 @@ func ConvertStoryChangelog(taskCtx core.SubTaskContext) error 
{
                                DomainEntity: domainlayer.DomainEntity{
                                        Id: fmt.Sprintf("%s:%s", 
clIdGen.Generate(data.Options.ConnectionId, cl.Id), cl.Field),
                                },
-                               IssueId:           
IssueIdGen.Generate(data.Options.ConnectionId, cl.StoryId),
-                               AuthorId:          
UserIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, 
cl.Creator),
+                               IssueId:           
issueIdGen.Generate(data.Options.ConnectionId, cl.StoryId),
+                               AuthorId:          
userIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, 
cl.Creator),
                                AuthorName:        cl.Creator,
                                FieldId:           cl.Field,
                                FieldName:         cl.Field,
diff --git a/plugins/tapd/tasks/task_changelog_converter.go 
b/plugins/tapd/tasks/task_changelog_converter.go
index 779fe501..24b351aa 100644
--- a/plugins/tapd/tasks/task_changelog_converter.go
+++ b/plugins/tapd/tasks/task_changelog_converter.go
@@ -61,6 +61,8 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
        db := taskCtx.GetDal()
        logger.Info("convert changelog :%d", data.Options.WorkspaceId)
        clIdGen := didgen.NewDomainIdGenerator(&models.TapdTaskChangelog{})
+       issueIdGen := didgen.NewDomainIdGenerator(&models.TapdIssue{})
+       userIdGen := didgen.NewDomainIdGenerator(&models.TapdUser{})
 
        clauses := []dal.Clause{
                dal.Select("tc.created, tc.id, tc.workspace_id, tc.task_id, 
tc.creator, _tool_tapd_task_changelog_items.*"),
@@ -84,8 +86,8 @@ func ConvertTaskChangelog(taskCtx core.SubTaskContext) error {
                                DomainEntity: domainlayer.DomainEntity{
                                        Id: fmt.Sprintf("%s:%s", 
clIdGen.Generate(data.Options.ConnectionId, cl.Id), cl.Field),
                                },
-                               IssueId:           
IssueIdGen.Generate(data.Options.ConnectionId, cl.TaskId),
-                               AuthorId:          
UserIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, 
cl.Creator),
+                               IssueId:           
issueIdGen.Generate(data.Options.ConnectionId, cl.TaskId),
+                               AuthorId:          
userIdGen.Generate(data.Options.ConnectionId, data.Options.WorkspaceId, 
cl.Creator),
                                AuthorName:        cl.Creator,
                                FieldId:           cl.Field,
                                FieldName:         cl.Field,

Reply via email to