You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by wa...@apache.org on 2022/10/18 11:23:55 UTC

[incubator-devlake] 01/03: fix(tapd): add std value for status changelogs

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 <yi...@merico.dev>
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{