This is an automated email from the ASF dual-hosted git repository.
warren pushed a commit to branch release-v0.16
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
The following commit(s) were added to refs/heads/release-v0.16 by this push:
new 430d7a6ed Cherrypick(tapd): 4765 4758 to v0.16 (#4771)
430d7a6ed is described below
commit 430d7a6ed91ee3bfe677aced79e59b32bb2ac0d2
Author: Warren Chen <[email protected]>
AuthorDate: Fri Mar 24 22:30:19 2023 +0800
Cherrypick(tapd): 4765 4758 to v0.16 (#4771)
* fix(tapd): changelogs
* fix(tapd): unify changelogs field to jira
* fix(tapd): fix e2e (#4765)
---
backend/plugins/tapd/e2e/bug_changelog_test.go | 2 +
.../raw_tables/_raw_tapd_api_bug_changelogs.csv | 15 ++---
.../e2e/raw_tables/_raw_tapd_api_iterations.csv | 20 +++----
.../raw_tables/_raw_tapd_api_story_changelogs.csv | 5 +-
.../raw_tables/_raw_tapd_api_task_changelogs.csv | 18 ++----
.../_tool_tapd_bug_changelog_items.csv | 19 +++---
.../snapshot_tables/_tool_tapd_bug_changelogs.csv | 15 ++---
.../e2e/snapshot_tables/_tool_tapd_iterations.csv | 20 +++----
.../_tool_tapd_story_changelog_items.csv | 19 ++++--
.../_tool_tapd_story_changelogs.csv | 5 +-
.../_tool_tapd_task_changelog_items.csv | 14 +++++
.../snapshot_tables/_tool_tapd_task_changelogs.csv | 8 +++
.../e2e/snapshot_tables/issue_changelogs_bug.csv | 19 +++---
.../e2e/snapshot_tables/issue_changelogs_story.csv | 21 +++++--
.../e2e/snapshot_tables/issue_changelogs_task.csv | 14 +++++
.../plugins/tapd/e2e/snapshot_tables/sprints.csv | 20 +++----
backend/plugins/tapd/e2e/story_changelog_test.go | 2 +
...ry_changelog_test.go => task_changelog_test.go} | 67 +++++-----------------
.../plugins/tapd/tasks/bug_changelog_converter.go | 16 +++++-
.../plugins/tapd/tasks/bug_changelog_extractor.go | 4 ++
backend/plugins/tapd/tasks/bug_extractor.go | 2 +-
backend/plugins/tapd/tasks/shared.go | 66 ++++++++++++++++++++-
.../tapd/tasks/story_changelog_converter.go | 16 +++++-
.../tapd/tasks/story_changelog_extractor.go | 25 +-------
backend/plugins/tapd/tasks/story_extractor.go | 2 +-
.../plugins/tapd/tasks/task_changelog_converter.go | 15 ++++-
.../plugins/tapd/tasks/task_changelog_extractor.go | 8 +++
27 files changed, 273 insertions(+), 184 deletions(-)
diff --git a/backend/plugins/tapd/e2e/bug_changelog_test.go
b/backend/plugins/tapd/e2e/bug_changelog_test.go
index 59c51ffe4..457112d24 100644
--- a/backend/plugins/tapd/e2e/bug_changelog_test.go
+++ b/backend/plugins/tapd/e2e/bug_changelog_test.go
@@ -57,6 +57,8 @@ func TestTapdBugChangelogDataFlow(t *testing.T) {
},
}
+ // iteration
+
dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_tapd_iterations.csv",
&models.TapdIteration{})
// bug status
// import raw data table
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_bug_status.csv",
diff --git
a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_bug_changelogs.csv
b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_bug_changelogs.csv
index 0762adce6..d3a0ecaec 100644
--- a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_bug_changelogs.csv
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_bug_changelogs.csv
@@ -1,14 +1,9 @@
id,params,data,url,input,created_at
1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000039"",""bug_id"":""11991001000009"",""author"":""test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-13
11:36:06"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000040"",""bug_id"":""11991001000008"",""author"":""test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-13
11:36:11"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000090"",""bug_id"":""11991001000025"",""author"":""test-11test-11test-11"",""field"":""current_owner"",""old_value"":""test-11test-11;"",""new_value"":""test-11test-11test-11;"",""memo"":null,""created"":""2019-12-17
17:35:34"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-4,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000091"",""bug_id"":""11991001000025"",""author"":""test-11test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-17
17:49:27"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
+3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000090"",""bug_id"":""11991001000025"",""author"":""test-11test-11test-11"",""field"":""current_owner"",""old_value"":""owner1;owner2;"",""new_value"":""owner2;"",""memo"":null,""created"":""2019-12-17
17:35:34"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000093"",""bug_id"":""11991001000026"",""author"":""test-11test-11test-11"",""field"":""bugtype"",""old_value"":null,""new_value"":""App"",""memo"":null,""created"":""2019-12-17
17:53:19"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-6,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000094"",""bug_id"":""11991001000026"",""author"":""test-11test-11test-11"",""field"":""status"",""old_value"":""new"",""new_value"":""in_progress"",""memo"":null,""created"":""2019-12-17
17:53:27"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-7,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000095"",""bug_id"":""11991001000026"",""author"":""test-11test-11test-11"",""field"":""bugtype"",""old_value"":""H5"",""new_value"":""test-11test-11"",""memo"":null,""created"":""2019-12-17
17:53:29"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-8,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000096"",""bug_id"":""11991001000026"",""author"":""test-11test-11test-11"",""field"":""bugtype"",""old_value"":""test-11test-11"",""new_value"":""App"",""memo"":null,""created"":""2019-12-17
17:53:32"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-9,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000097"",""bug_id"":""11991001000026"",""author"":""test-11test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-17
17:53:54"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-10,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000110"",""bug_id"":""11991001000034"",""author"":""test-11test-11test-11"",""field"":""current_owner"",""old_value"":""test-11test-11test-11;"",""new_value"":""test-11test-11test-11;"",""memo"":null,""created"":""2019-12-18
15:39:51"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
+10,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000110"",""bug_id"":""11991001000034"",""author"":""test-11test-11test-11"",""field"":""current_owner"",""old_value"":""owner1;owner2;"",""new_value"":""owner1;"",""memo"":null,""created"":""2019-12-18
15:39:51"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000112"",""bug_id"":""11991001000034"",""author"":""test-11test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-18
15:49:33"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-12,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000370"",""bug_id"":""11991001000064"",""author"":""test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-20
15:06:39"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
-13,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001000381"",""bug_id"":""11991001000075"",""author"":""test-11test-11test-11"",""field"":""delete_bug"",""old_value"":""--"",""new_value"":""--"",""memo"":""delete
bug"",""created"":""2019-12-20
15:37:52"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?limit=100&order=created+asc&page=1&workspace_id=991,null,2022-05-28
02:02:02.905
+48,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001008694"",""bug_id"":""11991001007926"",""author"":""\u9648\u6620\u521d"",""field"":""iteration_id"",""old_value"":""迭代1"",""new_value"":""迭代5"",""memo"":""{\""tapd_request_id\"":\""5a97d91815901fd9f2600bb69580b9df\""}"",""created"":""2023-03-22
21:44:13"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?created=%3E2023-03-22&limit=100&order=created+desc&page=1&w
[...]
+49,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001008695"",""bug_id"":""11991001007927"",""author"":""\u9648\u6620\u521d"",""field"":""iteration_id"",""old_value"":""迭代2"",""new_value"":""迭代6"",""memo"":""{\""tapd_request_id\"":\""5a97d91815901fd9f2600bb69580b9df\""}"",""created"":""2023-03-22
21:44:13"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?created=%3E2023-03-22&limit=100&order=created+desc&page=1&w
[...]
+50,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""BugChange"":{""id"":""11991001008696"",""bug_id"":""11991001007928"",""author"":""\u9648\u6620\u521d"",""field"":""iteration_id"",""old_value"":""迭代3"",""new_value"":""迭代8"",""memo"":""{\""tapd_request_id\"":\""5a97d91815901fd9f2600bb69580b9df\""}"",""created"":""2023-03-22
21:44:13"",""change_type"":"""",""workspace_id"":""991""}}",https://api.tapd.cn/bug_changes?created=%3E2023-03-22&limit=100&order=created+desc&page=1&w
[...]
diff --git a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_iterations.csv
b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_iterations.csv
index 2e927a979..fc7cf4f3e 100644
--- a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_iterations.csv
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_iterations.csv
@@ -1,11 +1,11 @@
id,params,data,url,input,created_at
-1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000077"",""name"":""test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-02-10"",""enddate"":""2020-02-21"",""status"":""done"",""release_id"":null,""description"":""test-11test-11test-11test-11test-11test-11test-11test-11"",""creator"":""TAPD"",""created"":""2020-02-13
10:16:21"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"","" [...]
-2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000078"",""name"":""test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-02-17"",""enddate"":""2020-02-28"",""status"":""done"",""release_id"":null,""description"":""test-11test-11test-11test-11test-11test-11test-11test-11"",""creator"":""TAPD"",""created"":""2020-02-13
10:16:21"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"","" [...]
-3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000099"",""name"":""test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-02-25"",""enddate"":""2020-03-24"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-02-25
14:45:45"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2" [...]
-4,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000205"",""name"":""test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-04-29"",""enddate"":""2020-05-14"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""suhaonan"",""created"":""2020-04-29
10:32:41"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"": [...]
-5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000353"",""name"":""test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-06-18"",""enddate"":""2020-07-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-06-18
17:57:55"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21 10:
[...]
-6,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000379"",""name"":""test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-07-20"",""enddate"":""2020-07-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-07-20
18:25:32"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null, [...]
-7,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000381"",""name"":""PCtest-11test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-07-21"",""enddate"":""2020-07-30"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-07-21
14:56:13"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null," [...]
-8,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000395"",""name"":""test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-08-07"",""enddate"":""2020-08-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-08-07
16:45:02"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custo [...]
-9,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000404"",""name"":""test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-08-21"",""enddate"":""2020-08-26"",""status"":""done"",""release_id"":null,""description"":""<div> 1.
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test
[...]
-10,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000406"",""name"":""test-11test-11test-11test-11test-11test-11test-11test-11test-11"",""workspace_id"":""991"",""startdate"":""2020-08-17"",""enddate"":""2020-08-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-08-24
15:28:32"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,"" [...]
+1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000077"",""name"":""迭代1"",""workspace_id"":""991"",""startdate"":""2020-02-10"",""enddate"":""2020-02-21"",""status"":""done"",""release_id"":null,""description"":""test-11test-11test-11test-11test-11test-11test-11test-11"",""creator"":""TAPD"",""created"":""2020-02-13
10:16:21"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2" [...]
+2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000078"",""name"":""迭代2"",""workspace_id"":""991"",""startdate"":""2020-02-17"",""enddate"":""2020-02-28"",""status"":""done"",""release_id"":null,""description"":""test-11test-11test-11test-11test-11test-11test-11test-11"",""creator"":""TAPD"",""created"":""2020-02-13
10:16:21"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2" [...]
+3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000099"",""name"":""迭代3"",""workspace_id"":""991"",""startdate"":""2020-02-25"",""enddate"":""2020-03-24"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-02-25
14:45:45"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom_field_
[...]
+4,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000205"",""name"":""迭代4"",""workspace_id"":""991"",""startdate"":""2020-04-29"",""enddate"":""2020-05-14"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""suhaonan"",""created"":""2020-04-29
10:32:41"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom_field_4"":nu
[...]
+5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000353"",""name"":""迭代5"",""workspace_id"":""991"",""startdate"":""2020-06-18"",""enddate"":""2020-07-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-06-18
17:57:55"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom_field_
[...]
+6,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000379"",""name"":""迭代6"",""workspace_id"":""991"",""startdate"":""2020-07-20"",""enddate"":""2020-07-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-07-20
18:25:32"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom
[...]
+7,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000381"",""name"":""迭代7"",""workspace_id"":""991"",""startdate"":""2020-07-21"",""enddate"":""2020-07-30"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-07-21
14:56:13"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom
[...]
+8,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000395"",""name"":""迭代8"",""workspace_id"":""991"",""startdate"":""2020-08-07"",""enddate"":""2020-08-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11test-11"",""created"":""2020-08-07
16:45:02"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom
[...]
+9,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000404"",""name"":""迭代9"",""workspace_id"":""991"",""startdate"":""2020-08-21"",""enddate"":""2020-08-26"",""status"":""done"",""release_id"":null,""description"":""<div> 1.
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11
test-11test-11 test-11test-11test-11test-11test-1 [...]
+10,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""Iteration"":{""id"":""11991001000406"",""name"":""迭代10"",""workspace_id"":""991"",""startdate"":""2020-08-17"",""enddate"":""2020-08-31"",""status"":""done"",""release_id"":null,""description"":null,""creator"":""test-11test-11"",""created"":""2020-08-24
15:28:32"",""modified"":""2021-06-21 10:44:22"",""completed"":""2021-06-21
10:44:22"",""custom_field_1"":null,""custom_field_2"":null,""custom_field_3"":null,""custom_fiel
[...]
diff --git
a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
index 3efc3ac91..1fdf38e05 100644
--- a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_story_changelogs.csv
@@ -1,6 +1,7 @@
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\"":
[...]
-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\"":\""开发中\"",\""value_after\"":\""\test-11\test-11\test-11\test-11\""}]"",""entity_type"":""Story"",""change_type"":"""",""change_type_text"":"""",""fiel
[...]
+557,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018772"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17
10:38:59"",""change_summary"":""create_story"",""comment"":null,""changes"":""[{\""field\"":\""owner\"",\""value_before\"":\""\"",\""value_after\"":\""\\u90dd\\u7433;\""},{\""field\"":\""priority\"",\""value_before\"":\""\"",\""value_after\"":\""4\""},{\""field\"":\""iterati
[...]
+559,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018777"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17
10:43:59"",""change_summary"":""status_4"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代2\"",\""value_after\"":\""迭代3\"",\""before_iteration_id\"":\""11991001000077\"",\""after_iteration_id\"":\""11991001000099\"",\""before_iteratio
[...]
+560,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001018778"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""\u90dd\u7433"",""created"":""2023-03-17
12:12:18"",""change_summary"":""planning"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代1\"",\""value_after\"":\""迭代4\"",\""before_iteration_id\"":\""11991001000078\"",\""after_iteration_id\"":\""11991001000205\"",\""before_iteratio
[...]
diff --git
a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_task_changelogs.csv
b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_task_changelogs.csv
index b7e6343ef..775da2dca 100644
--- a/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_task_changelogs.csv
+++ b/backend/plugins/tapd/e2e/raw_tables/_raw_tapd_api_task_changelogs.csv
@@ -1,18 +1,8 @@
id,params,data,url,input,created_at
-1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000220"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-13
14:36:10"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""0\"",\""value_after\"":\""\test-11\test-11.0\""}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""fiel
[...]
-2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000221"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-13
14:36:14"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""0\"",\""value_after\"":\""\test-11\test-11.0\""}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""fiel
[...]
+1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000220"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-13
14:36:10"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代3\"",\""value_after\"":\""迭代6\""}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""iterati
[...]
+2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000221"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-13
14:36:14"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代4\"",\""value_after\"":\""迭代5\""}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""iterati
[...]
3,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000222"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-13
14:52:33"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""open\"",\""value_after\"":\""progressing\""},{\""field\"":\""flows\"",\""value_before\"":\""|progressing\"",\""value_after\"":null}]"",""entity_type"
[...]
-4,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000274"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11"",""created"":""2019-12-13
18:41:13"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""open\"",\""value_after\"":\""progressing\""},{\""field\"":\""flows\"",\""value_before\"":\""|progressing\"",\""value_after\"":null}]"",""entity_type"":""Tas
[...]
-5,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000275"",""workspace_id"":""991"",""workitem_type_id"":""2"",""creator"":""test-11test-11"",""created"":""2019-12-13
18:41:48"",""change_summary"":""progressing"",""comment"":null,""changes"":""[{\""field\"":\""description\"",\""value_before\"":\""\"",\""value_after\"":\""<div>\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\test-11\t
[...]
-6,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000313"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
10:49:48"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""story_id\"",\""value_before\"":\""0\"",\""value_after\"":\""11991001000130\""},{\""field\"":\""effort\"",\""value_before\"":\""24\"",\""value_after\"":\""0\""},{\""field\"":\""itera
[...]
-7,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000314"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
10:50:09"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""story_id\"",\""value_before\"":\""11991001000130\"",\""value_after\"":0},{\""field\"":\""iteration_id\"",\""value_before\"":\""0\"",\""value_after\"":\""\test-11\test-11.0\""}]"",""
[...]
-8,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000355"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:02"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""open\"",\""value_after\"":\""progressing\""},{\""field\"":\""flows\"",\""value_before\"":\""|progressing\"",\""value_after\"":null}]"",""entity_type"
[...]
+6,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000313"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
10:49:48"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""story_id\"",\""value_before\"":\""0\"",\""value_after\"":\""11991001000130\""},{\""field\"":\""effort\"",\""value_before\"":\""24\"",\""value_after\"":\""0\""},{\""field\"":\""itera
[...]
+7,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000314"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
10:50:09"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""story_id\"",\""value_before\"":\""11991001000130\"",\""value_after\"":0},{\""field\"":\""iteration_id\"",\""value_before\"":\""迭代1\"",\""value_after\"":\""迭代3\""}]"",""entity_type""
[...]
9,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000356"",""workspace_id"":""991"",""workitem_type_id"":""2"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:04"",""change_summary"":""progressing"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""progressing\"",\""value_after\"":\""open\""}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""
[...]
-10,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000357"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:07"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""open\"",\""value_after\"":\""progressing\""},{\""field\"":\""flows\"",\""value_before\"":\""|progressing\"",\""value_after\"":null}]"",""entity_type
[...]
-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000358"",""workspace_id"":""991"",""workitem_type_id"":""2"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:39"",""change_summary"":""progressing"",""comment"":null,""changes"":""[{\""field\"":\""priority\"",\""value_before\"":\""3\"",\""value_after\"":4}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""priori
[...]
-12,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000359"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:42"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""priority\"",\""value_before\"":\""\"",\""value_after\"":3}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""priority"",""v
[...]
-13,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000360"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:46"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""priority\"",\""value_before\"":\""\"",\""value_after\"":3}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""priority"",""v
[...]
-14,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000361"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
12:46:49"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""priority\"",\""value_before\"":\""3\"",\""value_after\"":2}]"",""entity_type"":""Task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{""field"":""priority"",""
[...]
15,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000366"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
16:07:18"",""change_summary"":""open"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""open\"",\""value_after\"":\""progressing\""},{\""field\"":\""flows\"",\""value_before\"":\""|progressing\"",\""value_after\"":null}]"",""entity_type
[...]
-16,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000367"",""workspace_id"":""991"",""workitem_type_id"":""0"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
16:10:25"",""change_summary"":""progressing"",""comment"":null,""changes"":""[{\""field\"":\""status\"",\""value_before\"":\""progressing\"",\""value_after\"":\""done\""}]"",""entity_type"":""task"",""change_type"":"""",""change_type_text"":"""",""field_changes"":[{"
[...]
-17,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}","{""WorkitemChange"":{""id"":""11991001000368"",""workspace_id"":""991"",""workitem_type_id"":""2"",""creator"":""test-11test-11test-11"",""created"":""2019-12-16
16:10:25"",""change_summary"":""progressing"",""comment"":null,""changes"":""[{\""field\"":\""modified\"",\""value_before\"":\""2019-12-13
14:53:08\"",\""value_after\"":\""2019-12-16
16:10:25\""},{\""field\"":\""status\"",\""value_before\"":\""progressing\"",\""value
[...]
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
index d50bdf470..3a416eace 100644
---
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
+++
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelog_items.csv
@@ -1,14 +1,9 @@
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,11991001000039,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,1,
-1,11991001000040,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,2,
-1,11991001000090,current_owner,test-11test-11;,test-11test-11test-11;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
-1,11991001000091,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,4,
+1,11991001000039,delete_bug,,,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,1,
+1,11991001000090,current_owner,owner1;owner2;,owner2;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
1,11991001000093,bugtype,,App,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,5,
-1,11991001000094,status,new,in_progress,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,6,
-1,11991001000095,bugtype,H5,test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,7,
-1,11991001000096,bugtype,test-11test-11,App,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,8,
-1,11991001000097,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,9,
-1,11991001000110,current_owner,test-11test-11test-11;,test-11test-11test-11;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
-1,11991001000112,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,11,
-1,11991001000370,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,12,
-1,11991001000381,delete_bug,--,--,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,13,
+1,11991001000110,current_owner,owner1;owner2;,owner1;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
+1,11991001000112,delete_bug,,,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,11,
+1,11991001008694,iteration_id,迭代1,迭代5,11991001000077,11991001000353,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,48,
+1,11991001008695,iteration_id,迭代2,迭代6,11991001000078,11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,49,
+1,11991001008696,iteration_id,迭代3,迭代8,11991001000099,11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,50,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
index 986067d13..57fffb37a 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bug_changelogs.csv
@@ -1,14 +1,9 @@
connection_id,id,field,workspace_id,bug_id,author,old_value,new_value,memo,created,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
1,11991001000039,delete_bug,991,11991001000009,test-11test-11,--,--,delete
bug,2019-12-13T03:36:06.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,1,
-1,11991001000040,delete_bug,991,11991001000008,test-11test-11,--,--,delete
bug,2019-12-13T03:36:11.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,2,
-1,11991001000090,current_owner,991,11991001000025,test-11test-11test-11,test-11test-11;,test-11test-11test-11;,,2019-12-17T09:35:34.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
-1,11991001000091,delete_bug,991,11991001000025,test-11test-11test-11,--,--,delete
bug,2019-12-17T09:49:27.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,4,
+1,11991001000090,current_owner,991,11991001000025,test-11test-11test-11,owner1;owner2;,owner2;,,2019-12-17T09:35:34.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
1,11991001000093,bugtype,991,11991001000026,test-11test-11test-11,,App,,2019-12-17T09:53:19.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,5,
-1,11991001000094,status,991,11991001000026,test-11test-11test-11,new,in_progress,,2019-12-17T09:53:27.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,6,
-1,11991001000095,bugtype,991,11991001000026,test-11test-11test-11,H5,test-11test-11,,2019-12-17T09:53:29.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,7,
-1,11991001000096,bugtype,991,11991001000026,test-11test-11test-11,test-11test-11,App,,2019-12-17T09:53:32.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,8,
-1,11991001000097,delete_bug,991,11991001000026,test-11test-11test-11,--,--,delete
bug,2019-12-17T09:53:54.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,9,
-1,11991001000110,current_owner,991,11991001000034,test-11test-11test-11,test-11test-11test-11;,test-11test-11test-11;,,2019-12-18T07:39:51.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
+1,11991001000110,current_owner,991,11991001000034,test-11test-11test-11,owner1;owner2;,owner1;,,2019-12-18T07:39:51.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
1,11991001000112,delete_bug,991,11991001000034,test-11test-11test-11,--,--,delete
bug,2019-12-18T07:49:33.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,11,
-1,11991001000370,delete_bug,991,11991001000064,test-11test-11,--,--,delete
bug,2019-12-20T07:06:39.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,12,
-1,11991001000381,delete_bug,991,11991001000075,test-11test-11test-11,--,--,delete
bug,2019-12-20T07:37:52.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,13,
+1,11991001008694,iteration_id,991,11991001007926,陈映初,迭代1,迭代5,"{""tapd_request_id"":""5a97d91815901fd9f2600bb69580b9df""}",2023-03-22T13:44:13.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,48,
+1,11991001008695,iteration_id,991,11991001007927,陈映初,迭代2,迭代6,"{""tapd_request_id"":""5a97d91815901fd9f2600bb69580b9df""}",2023-03-22T13:44:13.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,49,
+1,11991001008696,iteration_id,991,11991001007928,陈映初,迭代3,迭代8,"{""tapd_request_id"":""5a97d91815901fd9f2600bb69580b9df""}",2023-03-22T13:44:13.000+00:00,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,50,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_iterations.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_iterations.csv
index b02f42d6d..a9e65ca4e 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_iterations.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_iterations.csv
@@ -1,11 +1,11 @@
connection_id,id,name,workspace_id,startdate,enddate,status,release_id,description,creator,created,modified,completed,releaseowner,launchdate,notice,releasename,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-1,11991001000077,test-11test-11test-11test-11test-11test-11,991,2020-02-09T16:00:00.000+00:00,2020-02-20T16:00:00.000+00:00,done,0,test-11test-11test-11test-11test-11test-11test-11test-11,TAPD,2020-02-13T02:16:21.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,1,
-1,11991001000078,test-11test-11test-11test-11test-11test-11,991,2020-02-16T16:00:00.000+00:00,2020-02-27T16:00:00.000+00:00,done,0,test-11test-11test-11test-11test-11test-11test-11test-11,TAPD,2020-02-13T02:16:21.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,2,
-1,11991001000099,test-11test-11test-11test-11test-11test-11test-11,991,2020-02-24T16:00:00.000+00:00,2020-03-23T16:00:00.000+00:00,done,0,,test-11test-11,2020-02-25T06:45:45.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,3,
-1,11991001000205,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,991,2020-04-28T16:00:00.000+00:00,2020-05-13T16:00:00.000+00:00,done,0,,suhaonan,2020-04-29T02:32:41.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,4,
-1,11991001000353,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,991,2020-06-17T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,done,0,,test-11test-11,2020-06-18T09:57:55.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,5,
-1,11991001000379,test-11test-11test-11test-11test-11,991,2020-07-19T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-07-20T10:25:32.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,6,
-1,11991001000381,PCtest-11test-11test-11test-11test-11test-11test-11test-11,991,2020-07-20T16:00:00.000+00:00,2020-07-29T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-07-21T06:56:13.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,7,
-1,11991001000395,test-11test-11test-11test-11,991,2020-08-06T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-08-07T08:45:02.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,8,
-1,11991001000404,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,991,2020-08-20T16:00:00.000+00:00,2020-08-25T16:00:00.000+00:00,done,0,<div> 1.
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11
test-11test-11
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11te
[...]
-1,11991001000406,test-11test-11test-11test-11test-11test-11test-11test-11test-11,991,2020-08-16T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,done,0,,test-11test-11,2020-08-24T07:28:32.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,10,
+1,11991001000077,迭代1,991,2020-02-09T16:00:00.000+00:00,2020-02-20T16:00:00.000+00:00,done,0,test-11test-11test-11test-11test-11test-11test-11test-11,TAPD,2020-02-13T02:16:21.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,1,
+1,11991001000078,迭代2,991,2020-02-16T16:00:00.000+00:00,2020-02-27T16:00:00.000+00:00,done,0,test-11test-11test-11test-11test-11test-11test-11test-11,TAPD,2020-02-13T02:16:21.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,2,
+1,11991001000099,迭代3,991,2020-02-24T16:00:00.000+00:00,2020-03-23T16:00:00.000+00:00,done,0,,test-11test-11,2020-02-25T06:45:45.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,3,
+1,11991001000205,迭代4,991,2020-04-28T16:00:00.000+00:00,2020-05-13T16:00:00.000+00:00,done,0,,suhaonan,2020-04-29T02:32:41.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,4,
+1,11991001000353,迭代5,991,2020-06-17T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,done,0,,test-11test-11,2020-06-18T09:57:55.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,5,
+1,11991001000379,迭代6,991,2020-07-19T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-07-20T10:25:32.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,6,
+1,11991001000381,迭代7,991,2020-07-20T16:00:00.000+00:00,2020-07-29T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-07-21T06:56:13.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,7,
+1,11991001000395,迭代8,991,2020-08-06T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,done,0,,test-11test-11test-11,2020-08-07T08:45:02.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,8,
+1,11991001000404,迭代9,991,2020-08-20T16:00:00.000+00:00,2020-08-25T16:00:00.000+00:00,done,0,<div> 1.
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11
test-11test-11
test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div>2.
test-11test [...]
+1,11991001000406,迭代10,991,2020-08-16T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,done,0,,test-11test-11,2020-08-24T07:28:32.000+00:00,2021-06-21T02:44:22.000+00:00,2021-06-21T02:44:22.000+00:00,,,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,10,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
index 23725838a..0a102b8c1 100644
---
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
+++
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelog_items.csv
@@ -1,8 +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"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,1,
-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,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-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,
+1,11991001018772,creator,,郝琳,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,id,,11991001017184,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,iteration_id,迭代1,迭代6,11991001000077,11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,name,,需求1,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,owner,,郝琳;,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,priority,,High,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,status,,规划中,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,tapd_request_id,,21e9d47ac983776e50ce5f3e4761bb31,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018772,workitem_type_id,,需求,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018777,iteration_id,迭代1,迭代8,11991001000077,11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
+1,11991001018777,tapd_request_id,,1624c25163294aff59dc84958f179241,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
+1,11991001018778,iteration_id,迭代3,迭代7,11991001000099,11991001000381,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
+1,11991001018778,tapd_request_id,,374a5c21b7a8b2dc598a8557406fe847,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
index 33952cdba..224e37cf1 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_story_changelogs.csv
@@ -1,6 +1,7 @@
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"":0,""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"":0,""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"":0,""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"":0,""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"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,5,
+1,11991001018772,991,0,郝琳,2023-03-17T02:38:59.000+00:00,create_story,,Story,create_story,11991001017184,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+1,11991001018777,991,0,郝琳,2023-03-17T02:43:59.000+00:00,status_4,,Story,manual_update,11991001017174,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
+1,11991001018778,991,0,郝琳,2023-03-17T04:12:18.000+00:00,planning,,Story,manual_update,11991001017185,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
new file mode 100644
index 000000000..c69a4d20c
--- /dev/null
+++
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelog_items.csv
@@ -0,0 +1,14 @@
+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,迭代2,迭代6,11991001000078,11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,1,
+1,11991001000221,iteration_id,迭代3,迭代9,11991001000099,11991001000404,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,2,
+1,11991001000222,flows,|progressing,,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000222,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000313,effort,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,iteration_id,迭代2,迭代8,11991001000078,11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,remain,24,0,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000313,story_id,0,11991001000130,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+1,11991001000314,iteration_id,迭代3,迭代9,11991001000099,11991001000404,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000314,story_id,11991001000130,0,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000356,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000366,flows,|progressing,,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,15,
+1,11991001000366,status,test-11test-11test-11,test-11test-11test-11,0,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,15,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
new file mode 100644
index 000000000..08342c13d
--- /dev/null
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_task_changelogs.csv
@@ -0,0 +1,8 @@
+connection_id,id,workspace_id,workitem_type_id,creator,created,change_summary,comment,entity_type,change_type,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"":0,""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"":0,""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"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,3,
+1,11991001000313,991,0,test-11test-11test-11,2019-12-16T02:49:48.000+00:00,open,,Task,,11991001000112,"{""ConnectionId"":1,""CompanyId"":0,""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"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,7,
+1,11991001000356,991,2,test-11test-11test-11,2019-12-16T04:46:04.000+00:00,progressing,,Task,,11991001000102,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,9,
+1,11991001000366,991,0,test-11test-11test-11,2019-12-16T08:07:18.000+00:00,open,,Task,,11991001000104,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,15,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_bug.csv
b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_bug.csv
index 01c17574a..ffe6d74d6 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_bug.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_bug.csv
@@ -1,14 +1,9 @@
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:TapdBugChangelog:1:11991001000039:delete_bug,tapd:TapdBug:1:11991001000009,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-13T03:36:06.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,1,
-tapd:TapdBugChangelog:1:11991001000040:delete_bug,tapd:TapdBug:1:11991001000008,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-13T03:36:11.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,2,
-tapd:TapdBugChangelog:1:11991001000090:current_owner,tapd:TapdBug:1:11991001000025,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,current_owner,current_owner,,,2019-12-17T09:35:34.000+00:00,test-11test-11;,test-11test-11test-11;,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
-tapd:TapdBugChangelog:1:11991001000091:delete_bug,tapd:TapdBug:1:11991001000025,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-17T09:49:27.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,4,
+tapd:TapdBugChangelog:1:11991001000039:delete_bug,tapd:TapdBug:1:11991001000009,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-13T03:36:06.000+00:00,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,1,
+tapd:TapdBugChangelog:1:11991001000090:current_owner,tapd:TapdBug:1:11991001000025,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,current_owner,assignee,,,2019-12-17T09:35:34.000+00:00,"tapd:TapdAccount:1:owner1,tapd:TapdAccount:1:owner2",tapd:TapdAccount:1:owner2,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,3,
tapd:TapdBugChangelog:1:11991001000093:bugtype,tapd:TapdBug:1:11991001000026,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:19.000+00:00,,App,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,5,
-tapd:TapdBugChangelog:1:11991001000094:status,tapd:TapdBug:1:11991001000026,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,TODO,IN_PROGRESS,2019-12-17T09:53:27.000+00:00,新,接受/处理,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,6,
-tapd:TapdBugChangelog:1:11991001000095:bugtype,tapd:TapdBug:1:11991001000026,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:29.000+00:00,H5,test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,7,
-tapd:TapdBugChangelog:1:11991001000096:bugtype,tapd:TapdBug:1:11991001000026,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,bugtype,bugtype,,,2019-12-17T09:53:32.000+00:00,test-11test-11,App,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,8,
-tapd:TapdBugChangelog:1:11991001000097:delete_bug,tapd:TapdBug:1:11991001000026,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-17T09:53:54.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,9,
-tapd:TapdBugChangelog:1:11991001000110:current_owner,tapd:TapdBug:1:11991001000034,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,current_owner,current_owner,,,2019-12-18T07:39:51.000+00:00,test-11test-11test-11;,test-11test-11test-11;,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
-tapd:TapdBugChangelog:1:11991001000112:delete_bug,tapd:TapdBug:1:11991001000034,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-18T07:49:33.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,11,
-tapd:TapdBugChangelog:1:11991001000370:delete_bug,tapd:TapdBug:1:11991001000064,tapd:TapdAccount:1:test-11test-11,test-11test-11,delete_bug,delete_bug,,,2019-12-20T07:06:39.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,12,
-tapd:TapdBugChangelog:1:11991001000381:delete_bug,tapd:TapdBug:1:11991001000075,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-20T07:37:52.000+00:00,--,--,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,13,
+tapd:TapdBugChangelog:1:11991001000110:current_owner,tapd:TapdBug:1:11991001000034,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,current_owner,assignee,,,2019-12-18T07:39:51.000+00:00,"tapd:TapdAccount:1:owner1,tapd:TapdAccount:1:owner2",tapd:TapdAccount:1:owner1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,10,
+tapd:TapdBugChangelog:1:11991001000112:delete_bug,tapd:TapdBug:1:11991001000034,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,delete_bug,delete_bug,,,2019-12-18T07:49:33.000+00:00,,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,11,
+tapd:TapdBugChangelog:1:11991001008694:iteration_id,tapd:TapdBug:1:11991001007926,tapd:TapdAccount:1:陈映初,陈映初,iteration_id,Sprint,迭代1,迭代5,2023-03-22T13:44:13.000+00:00,tapd:TapdIteration:1:11991001000077,tapd:TapdIteration:1:11991001000353,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,48,
+tapd:TapdBugChangelog:1:11991001008695:iteration_id,tapd:TapdBug:1:11991001007927,tapd:TapdAccount:1:陈映初,陈映初,iteration_id,Sprint,迭代2,迭代6,2023-03-22T13:44:13.000+00:00,tapd:TapdIteration:1:11991001000078,tapd:TapdIteration:1:11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,49,
+tapd:TapdBugChangelog:1:11991001008696:iteration_id,tapd:TapdBug:1:11991001007928,tapd:TapdAccount:1:陈映初,陈映初,iteration_id,Sprint,迭代3,迭代8,2023-03-22T13:44:13.000+00:00,tapd:TapdIteration:1:11991001000099,tapd:TapdIteration:1:11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_bug_changelogs,50,
diff --git
a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
index afd7620e3..abbc3384c 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_story.csv
@@ -1,8 +1,19 @@
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:TapdStory: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:TapdStory: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:TapdStory: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:TapdStory: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:11991001000093:owner,tapd:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,assignee,,,2019-12-12T10:01:42.000+00:00,,tapd:TapdAccount:1:u5d14u6600,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,2,
+tapd:TapdStoryChangelog:1:11991001000095:comment,tapd:TapdStory: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:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,owner,assignee,,,2019-12-12T10:12:07.000+00:00,tapd:TapdAccount:1:u5d14u6600,"tapd:TapdAccount:1:u5d14u6600,tapd:TapdAccount:1:u9648u5fd7u9274","{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,3,
tapd:TapdStoryChangelog:1:11991001000095:status,tapd:TapdStory:1:11991001000033,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,TODO,IN_PROGRESS,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:TapdStory: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:TapdStory: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,
+tapd:TapdStoryChangelog:1:11991001018772:creator,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,creator,creator,,,2023-03-17T02:38:59.000+00:00,,郝琳,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:id,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,id,id,,,2023-03-17T02:38:59.000+00:00,,11991001017184,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:iteration_id,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,iteration_id,Sprint,迭代1,迭代6,2023-03-17T02:38:59.000+00:00,tapd:TapdIteration:1:11991001000077,tapd:TapdIteration:1:11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:name,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,name,name,,,2023-03-17T02:38:59.000+00:00,,需求1,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:owner,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,owner,assignee,,,2023-03-17T02:38:59.000+00:00,,tapd:TapdAccount:1:郝琳,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:priority,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,priority,priority,,,2023-03-17T02:38:59.000+00:00,,High,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:status,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,status,status,,,2023-03-17T02:38:59.000+00:00,,规划中,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:tapd_request_id,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,tapd_request_id,tapd_request_id,,,2023-03-17T02:38:59.000+00:00,,21e9d47ac983776e50ce5f3e4761bb31,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018772:workitem_type_id,tapd:TapdStory:1:11991001017184,tapd:TapdAccount:1:郝琳,郝琳,workitem_type_id,workitem_type_id,,REQUIREMENT,2023-03-17T02:38:59.000+00:00,,需求,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,557,
+tapd:TapdStoryChangelog:1:11991001018777:iteration_id,tapd:TapdStory:1:11991001017174,tapd:TapdAccount:1:郝琳,郝琳,iteration_id,Sprint,迭代1,迭代8,2023-03-17T02:43:59.000+00:00,tapd:TapdIteration:1:11991001000077,tapd:TapdIteration:1:11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
+tapd:TapdStoryChangelog:1:11991001018777:tapd_request_id,tapd:TapdStory:1:11991001017174,tapd:TapdAccount:1:郝琳,郝琳,tapd_request_id,tapd_request_id,,,2023-03-17T02:43:59.000+00:00,,1624c25163294aff59dc84958f179241,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,559,
+tapd:TapdStoryChangelog:1:11991001018778:iteration_id,tapd:TapdStory:1:11991001017185,tapd:TapdAccount:1:郝琳,郝琳,iteration_id,Sprint,迭代3,迭代7,2023-03-17T04:12:18.000+00:00,tapd:TapdIteration:1:11991001000099,tapd:TapdIteration:1:11991001000381,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
+tapd:TapdStoryChangelog:1:11991001018778:tapd_request_id,tapd:TapdStory:1:11991001017185,tapd:TapdAccount:1:郝琳,郝琳,tapd_request_id,tapd_request_id,,,2023-03-17T04:12:18.000+00:00,,374a5c21b7a8b2dc598a8557406fe847,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_story_changelogs,560,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_task.csv
b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_task.csv
new file mode 100644
index 000000000..89b325fd8
--- /dev/null
+++ b/backend/plugins/tapd/e2e/snapshot_tables/issue_changelogs_task.csv
@@ -0,0 +1,14 @@
+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:TapdTaskChangelog:1:11991001000220:iteration_id,tapd:TapdTask:1:11991001000111,tapd:TapdAccount:1:test-11test-11,test-11test-11,iteration_id,Sprint,迭代2,迭代6,2019-12-13T06:36:10.000+00:00,tapd:TapdIteration:1:11991001000078,tapd:TapdIteration:1:11991001000379,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,1,
+tapd:TapdTaskChangelog:1:11991001000221:iteration_id,tapd:TapdTask:1:11991001000110,tapd:TapdAccount:1:test-11test-11,test-11test-11,iteration_id,Sprint,迭代3,迭代9,2019-12-13T06:36:14.000+00:00,tapd:TapdIteration:1:11991001000099,tapd:TapdIteration:1:11991001000404,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,2,
+tapd:TapdTaskChangelog:1:11991001000222:flows,tapd:TapdTask:1:11991001000103,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-13T06:52:33.000+00:00,|progressing,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,3,
+tapd:TapdTaskChangelog:1:11991001000222:status,tapd:TapdTask:1:11991001000103,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,TODO,TODO,2019-12-13T06:52:33.000+00:00,test-11test-11test-11,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,3,
+tapd:TapdTaskChangelog:1:11991001000313:effort,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,effort,effort,,,2019-12-16T02:49:48.000+00:00,24,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+tapd:TapdTaskChangelog:1:11991001000313:iteration_id,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,iteration_id,Sprint,迭代2,迭代8,2019-12-16T02:49:48.000+00:00,tapd:TapdIteration:1:11991001000078,tapd:TapdIteration:1:11991001000395,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+tapd:TapdTaskChangelog:1:11991001000313:remain,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,remain,remain,,,2019-12-16T02:49:48.000+00:00,24,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+tapd:TapdTaskChangelog:1:11991001000313:story_id,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:49:48.000+00:00,0,11991001000130,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,6,
+tapd:TapdTaskChangelog:1:11991001000314:iteration_id,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,iteration_id,Sprint,迭代3,迭代9,2019-12-16T02:50:09.000+00:00,tapd:TapdIteration:1:11991001000099,tapd:TapdIteration:1:11991001000404,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,7,
+tapd:TapdTaskChangelog:1:11991001000314:story_id,tapd:TapdTask:1:11991001000112,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,story_id,story_id,,,2019-12-16T02:50:09.000+00:00,11991001000130,0,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,7,
+tapd:TapdTaskChangelog:1:11991001000356:status,tapd:TapdTask:1:11991001000102,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,TODO,TODO,2019-12-16T04:46:04.000+00:00,test-11test-11test-11,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,9,
+tapd:TapdTaskChangelog:1:11991001000366:flows,tapd:TapdTask:1:11991001000104,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,flows,flows,,,2019-12-16T08:07:18.000+00:00,|progressing,,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,15,
+tapd:TapdTaskChangelog:1:11991001000366:status,tapd:TapdTask:1:11991001000104,tapd:TapdAccount:1:test-11test-11test-11,test-11test-11test-11,status,status,TODO,TODO,2019-12-16T08:07:18.000+00:00,test-11test-11test-11,test-11test-11test-11,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_task_changelogs,15,
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/sprints.csv
b/backend/plugins/tapd/e2e/snapshot_tables/sprints.csv
index b7d7fa72a..3a54ec1a0 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/sprints.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/sprints.csv
@@ -1,11 +1,11 @@
id,name,url,status,started_date,ended_date,completed_date,original_board_id,_raw_data_params,_raw_data_table,_raw_data_id,_raw_data_remark
-tapd:TapdIteration:1:11991001000077,test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000077,CLOSED,2020-02-09T16:00:00.000+00:00,2020-02-20T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,1,
-tapd:TapdIteration:1:11991001000078,test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000078,CLOSED,2020-02-16T16:00:00.000+00:00,2020-02-27T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,2,
-tapd:TapdIteration:1:11991001000099,test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000099,CLOSED,2020-02-24T16:00:00.000+00:00,2020-03-23T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,3,
-tapd:TapdIteration:1:11991001000205,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000205,CLOSED,2020-04-28T16:00:00.000+00:00,2020-05-13T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,4,
-tapd:TapdIteration:1:11991001000353,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000353,CLOSED,2020-06-17T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,5,
-tapd:TapdIteration:1:11991001000379,test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000379,CLOSED,2020-07-19T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,6,
-tapd:TapdIteration:1:11991001000381,PCtest-11test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000381,CLOSED,2020-07-20T16:00:00.000+00:00,2020-07-29T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,7,
-tapd:TapdIteration:1:11991001000395,test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000395,CLOSED,2020-08-06T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,8,
-tapd:TapdIteration:1:11991001000404,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000404,CLOSED,2020-08-20T16:00:00.000+00:00,2020-08-25T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,9,
-tapd:TapdIteration:1:11991001000406,test-11test-11test-11test-11test-11test-11test-11test-11test-11,https://www.tapd.cn/991/prong/iterations/view/11991001000406,CLOSED,2020-08-16T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,10,
+tapd:TapdIteration:1:11991001000077,迭代1,https://www.tapd.cn/991/prong/iterations/view/11991001000077,CLOSED,2020-02-09T16:00:00.000+00:00,2020-02-20T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,1,
+tapd:TapdIteration:1:11991001000078,迭代2,https://www.tapd.cn/991/prong/iterations/view/11991001000078,CLOSED,2020-02-16T16:00:00.000+00:00,2020-02-27T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,2,
+tapd:TapdIteration:1:11991001000099,迭代3,https://www.tapd.cn/991/prong/iterations/view/11991001000099,CLOSED,2020-02-24T16:00:00.000+00:00,2020-03-23T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,3,
+tapd:TapdIteration:1:11991001000205,迭代4,https://www.tapd.cn/991/prong/iterations/view/11991001000205,CLOSED,2020-04-28T16:00:00.000+00:00,2020-05-13T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,4,
+tapd:TapdIteration:1:11991001000353,迭代5,https://www.tapd.cn/991/prong/iterations/view/11991001000353,CLOSED,2020-06-17T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,5,
+tapd:TapdIteration:1:11991001000379,迭代6,https://www.tapd.cn/991/prong/iterations/view/11991001000379,CLOSED,2020-07-19T16:00:00.000+00:00,2020-07-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,6,
+tapd:TapdIteration:1:11991001000381,迭代7,https://www.tapd.cn/991/prong/iterations/view/11991001000381,CLOSED,2020-07-20T16:00:00.000+00:00,2020-07-29T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,7,
+tapd:TapdIteration:1:11991001000395,迭代8,https://www.tapd.cn/991/prong/iterations/view/11991001000395,CLOSED,2020-08-06T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,8,
+tapd:TapdIteration:1:11991001000404,迭代9,https://www.tapd.cn/991/prong/iterations/view/11991001000404,CLOSED,2020-08-20T16:00:00.000+00:00,2020-08-25T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,9,
+tapd:TapdIteration:1:11991001000406,迭代10,https://www.tapd.cn/991/prong/iterations/view/11991001000406,CLOSED,2020-08-16T16:00:00.000+00:00,2020-08-30T16:00:00.000+00:00,2021-06-21T02:44:22.000+00:00,tapd:TapdWorkspace:1:991,"{""ConnectionId"":1,""CompanyId"":0,""WorkspaceId"":991}",_raw_tapd_api_iterations,10,
diff --git a/backend/plugins/tapd/e2e/story_changelog_test.go
b/backend/plugins/tapd/e2e/story_changelog_test.go
index 69fe381ee..59a577b0c 100644
--- a/backend/plugins/tapd/e2e/story_changelog_test.go
+++ b/backend/plugins/tapd/e2e/story_changelog_test.go
@@ -77,6 +77,8 @@ func TestTapdStoryChangelogDataFlow(t *testing.T) {
"is_last_step",
),
)
+ // iteration
+
dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_tapd_iterations.csv",
&models.TapdIteration{})
// import raw data table
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_changelogs.csv",
diff --git a/backend/plugins/tapd/e2e/story_changelog_test.go
b/backend/plugins/tapd/e2e/task_changelog_test.go
similarity index 53%
copy from backend/plugins/tapd/e2e/story_changelog_test.go
copy to backend/plugins/tapd/e2e/task_changelog_test.go
index 69fe381ee..8a42df4f6 100644
--- a/backend/plugins/tapd/e2e/story_changelog_test.go
+++ b/backend/plugins/tapd/e2e/task_changelog_test.go
@@ -26,7 +26,7 @@ import (
"testing"
)
-func TestTapdStoryChangelogDataFlow(t *testing.T) {
+func TestTapdTaskChangelogDataFlow(t *testing.T) {
var tapd impl.Tapd
dataflowTester := e2ehelper.NewDataFlowTester(t, "tapd", tapd)
@@ -36,59 +36,22 @@ 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{
- "DONE": []string{"已关闭"},
- "IN_PROGRESS": []string{"接受/处理", "开发中",
"developing", "test-11test-11test-12"},
- "TODO": []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",
- e2ehelper.ColumnWithRawData(
- "connection_id",
- "workspace_id",
- "english_name",
- "chinese_name",
- "is_last_step",
- ),
- )
+ // iteration
+
dataflowTester.ImportCsvIntoTabler("./snapshot_tables/_tool_tapd_iterations.csv",
&models.TapdIteration{})
// import raw data table
-
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_story_changelogs.csv",
- "_raw_tapd_api_story_changelogs")
+
dataflowTester.ImportCsvIntoRawTable("./raw_tables/_raw_tapd_api_task_changelogs.csv",
+ "_raw_tapd_api_task_changelogs")
// verify extraction
- dataflowTester.FlushTabler(&models.TapdStoryChangelog{})
- dataflowTester.FlushTabler(&models.TapdStoryChangelogItem{})
- dataflowTester.Subtask(tasks.ExtractStoryChangelogMeta, taskData)
+ dataflowTester.FlushTabler(&models.TapdTaskChangelog{})
+ dataflowTester.FlushTabler(&models.TapdTaskChangelogItem{})
+ dataflowTester.Subtask(tasks.ExtractTaskChangelogMeta, taskData)
dataflowTester.VerifyTable(
- models.TapdStoryChangelog{},
- "./snapshot_tables/_tool_tapd_story_changelogs.csv",
+ models.TapdTaskChangelog{},
+ "./snapshot_tables/_tool_tapd_task_changelogs.csv",
e2ehelper.ColumnWithRawData(
"connection_id",
"id",
@@ -100,13 +63,13 @@ func TestTapdStoryChangelogDataFlow(t *testing.T) {
"comment",
"entity_type",
"change_type",
- "story_id",
+ "task_id",
),
)
dataflowTester.VerifyTable(
- models.TapdStoryChangelogItem{},
- "./snapshot_tables/_tool_tapd_story_changelog_items.csv",
+ models.TapdTaskChangelogItem{},
+ "./snapshot_tables/_tool_tapd_task_changelog_items.csv",
e2ehelper.ColumnWithRawData(
"connection_id",
"changelog_id",
@@ -119,10 +82,10 @@ func TestTapdStoryChangelogDataFlow(t *testing.T) {
)
dataflowTester.FlushTabler(&ticket.IssueChangelogs{})
- dataflowTester.Subtask(tasks.ConvertStoryChangelogMeta, taskData)
+ dataflowTester.Subtask(tasks.ConvertTaskChangelogMeta, taskData)
dataflowTester.VerifyTable(
ticket.IssueChangelogs{},
- "./snapshot_tables/issue_changelogs_story.csv",
+ "./snapshot_tables/issue_changelogs_task.csv",
e2ehelper.ColumnWithRawData(
"id",
"issue_id",
diff --git a/backend/plugins/tapd/tasks/bug_changelog_converter.go
b/backend/plugins/tapd/tasks/bug_changelog_converter.go
index 192dc2917..aa5ad95f8 100644
--- a/backend/plugins/tapd/tasks/bug_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/bug_changelog_converter.go
@@ -55,13 +55,14 @@ func ConvertBugChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
logger := taskCtx.GetLogger()
db := taskCtx.GetDal()
statusList := make([]models.TapdBugStatus, 0)
- statusLanguageMap, getStdStatus, err := getDefaltStdStatusMapping(data,
db, statusList)
+ statusLanguageMap, getStdStatus, err :=
getDefaultStdStatusMapping(data, db, statusList)
if err != nil {
return err
}
customStatusMap := getStatusMapping(data)
logger.Info("convert changelog :%d", data.Options.WorkspaceId)
issueIdGen := didgen.NewDomainIdGenerator(&models.TapdBug{})
+ clIterIdGen := didgen.NewDomainIdGenerator(&models.TapdIteration{})
clIdGen := didgen.NewDomainIdGenerator(&models.TapdBugChangelog{})
clauses := []dal.Clause{
dal.Select("tc.created, tc.id, tc.workspace_id, tc.bug_id,
tc.author, _tool_tapd_bug_changelog_items.*"),
@@ -96,6 +97,19 @@ func ConvertBugChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
OriginalToValue: cl.ValueAfterParsed,
CreatedDate: *cl.Created,
}
+ if domainCl.FieldId == "iteration_id" {
+ domainCl.FieldName = "Sprint"
+ domainCl.OriginalFromValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+ domainCl.OriginalToValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+ domainCl.ToValue = cl.ValueAfterParsed
+ domainCl.FromValue = cl.ValueBeforeParsed
+ }
+ if domainCl.FieldId == "current_owner" {
+ domainCl.FieldName = "assignee"
+ domainCl.OriginalFromValue =
generateDomainAccountIdForUsers(cl.ValueBeforeParsed, cl.ConnectionId)
+ domainCl.OriginalToValue =
generateDomainAccountIdForUsers(cl.ValueAfterParsed, cl.ConnectionId)
+
+ }
if domainCl.FieldName == "status" {
domainCl.OriginalFromValue =
statusLanguageMap[domainCl.OriginalFromValue]
domainCl.OriginalToValue =
statusLanguageMap[domainCl.OriginalToValue]
diff --git a/backend/plugins/tapd/tasks/bug_changelog_extractor.go
b/backend/plugins/tapd/tasks/bug_changelog_extractor.go
index f2130819d..1888e79f4 100644
--- a/backend/plugins/tapd/tasks/bug_changelog_extractor.go
+++ b/backend/plugins/tapd/tasks/bug_changelog_extractor.go
@@ -59,6 +59,10 @@ func ExtractBugChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
ValueBeforeParsed: bugChangelog.OldValue,
ValueAfterParsed: bugChangelog.NewValue,
}
+ err = convertUnicode(item)
+ if err != nil {
+ return nil, err
+ }
if item.Field == "iteration_id" {
iterationFrom, iterationTo, err :=
parseIterationChangelog(taskCtx, item.ValueBeforeParsed, item.ValueAfterParsed)
if err != nil {
diff --git a/backend/plugins/tapd/tasks/bug_extractor.go
b/backend/plugins/tapd/tasks/bug_extractor.go
index f7dc8b4eb..a1b142d11 100644
--- a/backend/plugins/tapd/tasks/bug_extractor.go
+++ b/backend/plugins/tapd/tasks/bug_extractor.go
@@ -42,7 +42,7 @@ func ExtractBugs(taskCtx plugin.SubTaskContext) errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_BUG_TABLE, false)
db := taskCtx.GetDal()
statusList := make([]models.TapdBugStatus, 0)
- statusLanguageMap, getStdStatus, err := getDefaltStdStatusMapping(data,
db, statusList)
+ statusLanguageMap, getStdStatus, err :=
getDefaultStdStatusMapping(data, db, statusList)
if err != nil {
return err
}
diff --git a/backend/plugins/tapd/tasks/shared.go
b/backend/plugins/tapd/tasks/shared.go
index 762032c44..a0117a5fa 100644
--- a/backend/plugins/tapd/tasks/shared.go
+++ b/backend/plugins/tapd/tasks/shared.go
@@ -30,6 +30,8 @@ import (
"io"
"net/http"
"net/url"
+ "reflect"
+ "strconv"
"strings"
)
@@ -205,7 +207,7 @@ 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) {
+func getDefaultStdStatusMapping[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),
}
@@ -232,3 +234,65 @@ func getDefaltStdStatusMapping[S models.TapdStatus](data
*TapdTaskData, db dal.D
}
return statusLanguageMap, getStdStatus, nil
}
+
+func unicodeToZh(s string) (string, error) {
+ // strconv.Quote(s) will add additional `"`, so we need to do `Unquote`
again
+ str, err := strconv.Unquote(strings.Replace(strconv.Quote(s), `\\u`,
`\u`, -1))
+ if err != nil {
+ return "", err
+ }
+ return str, nil
+}
+
+func convertUnicode(p interface{}) errors.Error {
+ var err errors.Error
+ pType := reflect.TypeOf(p)
+ if pType.Kind() != reflect.Ptr {
+ panic("expected a pointer to a struct")
+ }
+ pValue := reflect.ValueOf(p).Elem()
+ if pValue.Kind() != reflect.Struct {
+ panic("expected a pointer to a struct")
+ }
+ after, err :=
errors.Convert01(unicodeToZh(pValue.FieldByName("ValueAfterParsed").String()))
+ if err != nil {
+ return err
+ }
+ before, err :=
errors.Convert01(unicodeToZh(pValue.FieldByName("ValueBeforeParsed").String()))
+ if err != nil {
+ return err
+ }
+ if after == "--" {
+ after = ""
+ }
+ if before == "--" {
+ before = ""
+ }
+ // set ValueAfterParsed
+ valueAfterField := pValue.FieldByName("ValueAfterParsed")
+ valueAfterField.SetString(after)
+ valueBeforeField := pValue.FieldByName("ValueBeforeParsed")
+ valueBeforeField.SetString(before)
+ return nil
+}
+
+// replace ";" with ","
+func replaceSemicolonWithComma(str string) string {
+ res := strings.ReplaceAll(str, ";", ",")
+ return strings.TrimRight(res, ",")
+}
+
+// generate domain account id for each user
+// param is a string with format "user1,user2,user3"
+func generateDomainAccountIdForUsers(param string, connectionId uint64) string
{
+ if param == "" {
+ return ""
+ }
+ param = replaceSemicolonWithComma(param)
+ users := strings.Split(param, ",")
+ var res []string
+ for _, user := range users {
+ res = append(res, getAccountIdGen().Generate(connectionId,
user))
+ }
+ return strings.Join(res, ",")
+}
diff --git a/backend/plugins/tapd/tasks/story_changelog_converter.go
b/backend/plugins/tapd/tasks/story_changelog_converter.go
index 934af5299..63c02183f 100644
--- a/backend/plugins/tapd/tasks/story_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/story_changelog_converter.go
@@ -58,13 +58,14 @@ func ConvertStoryChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
logger := taskCtx.GetLogger()
db := taskCtx.GetDal()
statusList := make([]models.TapdStoryStatus, 0)
- _, getStdStatus, err := getDefaltStdStatusMapping(data, db, statusList)
+ _, getStdStatus, err := getDefaultStdStatusMapping(data, db, statusList)
if err != nil {
return err
}
customStatusMap := getStatusMapping(data)
logger.Info("convert changelog :%d", data.Options.WorkspaceId)
clIdGen := didgen.NewDomainIdGenerator(&models.TapdStoryChangelog{})
+ clIterIdGen := didgen.NewDomainIdGenerator(&models.TapdIteration{})
issueIdGen := didgen.NewDomainIdGenerator(&models.TapdStory{})
stdTypeMappings := getStdTypeMappings(data)
clauses := []dal.Clause{
@@ -108,6 +109,13 @@ func ConvertStoryChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
domainCl.ToValue =
getStdStatus(domainCl.OriginalToValue)
}
}
+ if domainCl.FieldName == "iteration_id" {
+ domainCl.FieldName = "Sprint"
+ domainCl.OriginalFromValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+ domainCl.OriginalToValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+ domainCl.ToValue = cl.ValueAfterParsed
+ domainCl.FromValue = cl.ValueBeforeParsed
+ }
if domainCl.FieldName == "workitem_type_id" {
// As OriginalFromValue is value_before_parsed,
so we don't need to transform id to name
if stdTypeMappings[domainCl.OriginalFromValue]
!= "" {
@@ -117,6 +125,12 @@ func ConvertStoryChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
domainCl.ToValue =
stdTypeMappings[domainCl.OriginalToValue]
}
}
+ if domainCl.FieldId == "owner" {
+ domainCl.FieldName = "assignee"
+ domainCl.OriginalFromValue =
generateDomainAccountIdForUsers(cl.ValueBeforeParsed, cl.ConnectionId)
+ domainCl.OriginalToValue =
generateDomainAccountIdForUsers(cl.ValueAfterParsed, cl.ConnectionId)
+
+ }
return []interface{}{
domainCl,
}, nil
diff --git a/backend/plugins/tapd/tasks/story_changelog_extractor.go
b/backend/plugins/tapd/tasks/story_changelog_extractor.go
index e3bf1e0aa..94e438571 100644
--- a/backend/plugins/tapd/tasks/story_changelog_extractor.go
+++ b/backend/plugins/tapd/tasks/story_changelog_extractor.go
@@ -23,8 +23,6 @@ import (
"github.com/apache/incubator-devlake/core/plugin"
"github.com/apache/incubator-devlake/helpers/pluginhelper/api"
"github.com/apache/incubator-devlake/plugins/tapd/models"
- "strconv"
- "strings"
)
var _ plugin.SubTaskEntryPoint = ExtractStoryChangelog
@@ -108,6 +106,7 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
return nil, err
}
if item.Field == "iteration_id" {
+ // some users' tapd will not return
iteration_id_from/iteration_id_to
iterationFrom, iterationTo, err :=
parseIterationChangelog(taskCtx, item.ValueBeforeParsed, item.ValueAfterParsed)
if err != nil {
return nil, err
@@ -128,25 +127,3 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
return extractor.Execute()
}
-
-func unicodeToZh(s string) (string, error) {
- // strconv.Quote(s) will add additional `"`, so we need to do `Unquote`
again
- str, err := strconv.Unquote(strings.Replace(strconv.Quote(s), `\\u`,
`\u`, -1))
- if err != nil {
- return "", err
- }
- return str, nil
-}
-
-func convertUnicode(item *models.TapdStoryChangelogItem) errors.Error {
- var err errors.Error
- item.ValueAfterParsed, err =
errors.Convert01(unicodeToZh(item.ValueAfterParsed))
- if err != nil {
- return err
- }
- item.ValueBeforeParsed, err =
errors.Convert01(unicodeToZh(item.ValueBeforeParsed))
- if err != nil {
- return err
- }
- return nil
-}
diff --git a/backend/plugins/tapd/tasks/story_extractor.go
b/backend/plugins/tapd/tasks/story_extractor.go
index a9b4426c2..c4fcbfd91 100644
--- a/backend/plugins/tapd/tasks/story_extractor.go
+++ b/backend/plugins/tapd/tasks/story_extractor.go
@@ -42,7 +42,7 @@ func ExtractStories(taskCtx plugin.SubTaskContext)
errors.Error {
rawDataSubTaskArgs, data := CreateRawDataSubTaskArgs(taskCtx,
RAW_STORY_TABLE, false)
db := taskCtx.GetDal()
statusList := make([]models.TapdStoryStatus, 0)
- statusLanguageMap, getStdStatus, err := getDefaltStdStatusMapping(data,
db, statusList)
+ statusLanguageMap, getStdStatus, err :=
getDefaultStdStatusMapping(data, db, statusList)
if err != nil {
return err
}
diff --git a/backend/plugins/tapd/tasks/task_changelog_converter.go
b/backend/plugins/tapd/tasks/task_changelog_converter.go
index ffdfa47d8..a8cd16d7a 100644
--- a/backend/plugins/tapd/tasks/task_changelog_converter.go
+++ b/backend/plugins/tapd/tasks/task_changelog_converter.go
@@ -71,7 +71,7 @@ func ConvertTaskChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
logger.Info("convert changelog :%d", data.Options.WorkspaceId)
clIdGen := didgen.NewDomainIdGenerator(&models.TapdTaskChangelog{})
issueIdGen := didgen.NewDomainIdGenerator(&models.TapdTask{})
-
+ clIterIdGen := didgen.NewDomainIdGenerator(&models.TapdIteration{})
clauses := []dal.Clause{
dal.Select("tc.created, tc.id, tc.workspace_id, tc.task_id,
tc.creator, _tool_tapd_task_changelog_items.*"),
dal.From(&models.TapdTaskChangelogItem{}),
@@ -112,7 +112,18 @@ func ConvertTaskChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
domainCl.ToValue =
getTaskStdStatus(domainCl.OriginalToValue)
}
}
-
+ if domainCl.FieldName == "iteration_id" {
+ domainCl.FieldName = "Sprint"
+ domainCl.OriginalFromValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdFrom)
+ domainCl.OriginalToValue =
clIterIdGen.Generate(cl.ConnectionId, cl.IterationIdTo)
+ domainCl.ToValue = cl.ValueAfterParsed
+ domainCl.FromValue = cl.ValueBeforeParsed
+ }
+ if domainCl.FieldId == "owner" {
+ domainCl.FieldName = "assignee"
+ domainCl.OriginalFromValue =
generateDomainAccountIdForUsers(cl.ValueBeforeParsed, cl.ConnectionId)
+ domainCl.OriginalToValue =
generateDomainAccountIdForUsers(cl.ValueAfterParsed, cl.ConnectionId)
+ }
return []interface{}{
domainCl,
}, nil
diff --git a/backend/plugins/tapd/tasks/task_changelog_extractor.go
b/backend/plugins/tapd/tasks/task_changelog_extractor.go
index 875a014cd..17cefcb0e 100644
--- a/backend/plugins/tapd/tasks/task_changelog_extractor.go
+++ b/backend/plugins/tapd/tasks/task_changelog_extractor.go
@@ -90,6 +90,10 @@ func ExtractTaskChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
}
results = append(results, &item)
}
+ err = convertUnicode(&item)
+ if err != nil {
+ return nil, err
+ }
default:
item.ConnectionId =
data.Options.ConnectionId
item.ChangelogId = taskChangelog.Id
@@ -97,6 +101,10 @@ func ExtractTaskChangelog(taskCtx plugin.SubTaskContext)
errors.Error {
item.ValueAfterParsed =
strings.Trim(string(fc.ValueAfterParsed), `"`)
item.ValueBeforeParsed =
strings.Trim(string(fc.ValueBeforeParsed), `"`)
}
+ err = convertUnicode(&item)
+ if err != nil {
+ return nil, err
+ }
if item.Field == "iteration_id" {
iterationFrom, iterationTo, err :=
parseIterationChangelog(taskCtx, item.ValueBeforeParsed, item.ValueAfterParsed)
if err != nil {