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

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


The following commit(s) were added to refs/heads/main by this push:
     new c615c5bff fix(tapd): modify costom field name (#4913)
c615c5bff is described below

commit c615c5bff8366e477e22a9799755f630e0e30cc1
Author: Warren Chen <[email protected]>
AuthorDate: Thu Apr 13 12:35:44 2023 +0800

    fix(tapd): modify costom field name (#4913)
---
 backend/plugins/tapd/e2e/bugs_test.go              | 141 +--------------------
 .../tapd/e2e/snapshot_tables/_tool_tapd_bugs.csv   |  42 +++---
 .../e2e/snapshot_tables/_tool_tapd_stories.csv     |  42 +++---
 .../tapd/e2e/snapshot_tables/_tool_tapd_tasks.csv  |  32 ++---
 backend/plugins/tapd/e2e/stories_test.go           | 122 ++----------------
 backend/plugins/tapd/e2e/tasks_test.go             |  95 +-------------
 backend/plugins/tapd/models/bug.go                 |  90 ++++++-------
 .../20230411_modify_custom_field_name.go           |  73 +++++++++++
 .../tapd/models/migrationscripts/register.go       |   1 +
 backend/plugins/tapd/models/story.go               |  86 ++++++-------
 backend/plugins/tapd/models/task.go                |  84 ++++++------
 11 files changed, 280 insertions(+), 528 deletions(-)

diff --git a/backend/plugins/tapd/e2e/bugs_test.go 
b/backend/plugins/tapd/e2e/bugs_test.go
index 276109981..c4b33b497 100644
--- a/backend/plugins/tapd/e2e/bugs_test.go
+++ b/backend/plugins/tapd/e2e/bugs_test.go
@@ -18,6 +18,7 @@ limitations under the License.
 package e2e
 
 import (
+       "github.com/apache/incubator-devlake/core/models/common"
        "github.com/apache/incubator-devlake/core/models/domainlayer/ticket"
        "github.com/apache/incubator-devlake/helpers/e2ehelper"
        "github.com/apache/incubator-devlake/plugins/tapd/impl"
@@ -60,142 +61,10 @@ func TestTapdBugDataFlow(t *testing.T) {
        dataflowTester.FlushTabler(&models.TapdIterationBug{})
        dataflowTester.FlushTabler(&models.TapdBugLabel{})
        dataflowTester.Subtask(tasks.ExtractBugMeta, taskData)
-       dataflowTester.VerifyTable(
-               models.TapdBug{},
-               "./snapshot_tables/_tool_tapd_bugs.csv",
-               e2ehelper.ColumnWithRawData(
-                       "connection_id",
-                       "id",
-                       "epic_key",
-                       "title",
-                       "description",
-                       "workspace_id",
-                       "created",
-                       "modified",
-                       "status",
-                       "cc",
-                       "begin",
-                       "due",
-                       "priority",
-                       "iteration_id",
-                       "source",
-                       "module",
-                       "release_id",
-                       "created_from",
-                       "feature",
-                       "severity",
-                       "reporter",
-                       "resolved",
-                       "closed",
-                       "lastmodify",
-                       "auditer",
-                       "de",
-                       "fixer",
-                       "version_test",
-                       "version_report",
-                       "version_close",
-                       "version_fix",
-                       "baseline_find",
-                       "baseline_join",
-                       "baseline_close",
-                       "baseline_test",
-                       "sourcephase",
-                       "te",
-                       "current_owner",
-                       "resolution",
-                       "originphase",
-                       "confirmer",
-                       "participator",
-                       "closer",
-                       "platform",
-                       "os",
-                       "testtype",
-                       "testphase",
-                       "frequency",
-                       "regression_number",
-                       "flows",
-                       "testmode",
-                       "issue_id",
-                       "verify_time",
-                       "reject_time",
-                       "reopen_time",
-                       "audit_time",
-                       "suspend_time",
-                       "deadline",
-                       "in_progress_time",
-                       "assigned_time",
-                       "template_id",
-                       "story_id",
-                       "std_status",
-                       "std_type",
-                       "type",
-                       "url",
-                       "support_id",
-                       "support_forum_id",
-                       "ticket_id",
-                       "follower",
-                       "sync_type",
-                       "label",
-                       "effort",
-                       "effort_completed",
-                       "exceed",
-                       "remain",
-                       "progress",
-                       "estimate",
-                       "bugtype",
-                       "milestone",
-                       "custom_field_one",
-                       "custom_field_two",
-                       "custom_field_three",
-                       "custom_field_four",
-                       "custom_field_five",
-                       "custom_field6",
-                       "custom_field7",
-                       "custom_field8",
-                       "custom_field9",
-                       "custom_field10",
-                       "custom_field11",
-                       "custom_field12",
-                       "custom_field13",
-                       "custom_field14",
-                       "custom_field15",
-                       "custom_field16",
-                       "custom_field17",
-                       "custom_field18",
-                       "custom_field19",
-                       "custom_field20",
-                       "custom_field21",
-                       "custom_field22",
-                       "custom_field23",
-                       "custom_field24",
-                       "custom_field25",
-                       "custom_field26",
-                       "custom_field27",
-                       "custom_field28",
-                       "custom_field29",
-                       "custom_field30",
-                       "custom_field31",
-                       "custom_field32",
-                       "custom_field33",
-                       "custom_field34",
-                       "custom_field35",
-                       "custom_field36",
-                       "custom_field37",
-                       "custom_field38",
-                       "custom_field39",
-                       "custom_field40",
-                       "custom_field41",
-                       "custom_field42",
-                       "custom_field43",
-                       "custom_field44",
-                       "custom_field45",
-                       "custom_field46",
-                       "custom_field47",
-                       "custom_field48",
-                       "custom_field49",
-                       "custom_field50",
-               ),
-       )
+       dataflowTester.VerifyTableWithOptions(&models.TapdBug{}, 
e2ehelper.TableOptions{
+               CSVRelPath:  "./snapshot_tables/_tool_tapd_bugs.csv",
+               IgnoreTypes: []interface{}{common.NoPKModel{}},
+       })
        dataflowTester.VerifyTable(
                models.TapdWorkSpaceBug{},
                "./snapshot_tables/_tool_tapd_workspace_bugs.csv",
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bugs.csv 
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bugs.csv
index 6369cf0bc..6a90fe69c 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bugs.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_bugs.csv
@@ -1,21 +1,21 @@
-connection_id,id,epic_key,title,description,workspace_id,created,modified,status,cc,begin,due,priority,iteration_id,source,module,release_id,created_from,feature,severity,reporter,resolved,closed,lastmodify,auditer,de,fixer,version_test,version_report,version_close,version_fix,baseline_find,baseline_join,baseline_close,baseline_test,sourcephase,te,current_owner,resolution,originphase,confirmer,participator,closer,platform,os,testtype,testphase,frequency,regression_number,flows,testmode,i
 [...]
-1,11991001001025,,test-11test-11test-11test-11test-11est-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 href=""http://insurance.xxx-com-sss/index-0212.html""; 
target=""_blank"">http://insurance.xxx-com-sss/index-0212.html</a>test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div>
 [...]
-1,11991001001030,,test-11test-11test-11t11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 href=""http://insurance.xxx-com-sss/insurclass/""; target=""_blank"">http:// 
[...]
-1,11991001001031,,test-11test-11test-11test-11test-11test-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<br
  /></div><div><br  /></div><d [...]
-1,11991001001032,,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 h [...]
-1,11991001001417,,test-11test-11-11test-11tesst-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test-11</div>< [...]
-1,11991001001418,,test-11tesest-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test
 [...]
-1,11991001001420,,test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>3test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div>
 [...]
-1,11991001001422,,test-11te11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11 [...]
-1,11991001001423,,test--11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11tes
 [...]
-1,11991001001425,,test-11test1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11</div><div><b
 [...]
-1,11991001001426,,test-11test-11te11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11te
 [...]
-1,11991001001447,,IE11 
test-11te1test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-
 [...]
-1,11991001001448,,IE11 
test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11t
 [...]
-1,11991001001450,,IE11 
tes-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><
 [...]
-1,11991001001451,,IE11 
test-11test-11test-st-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test- 
[...]
-1,11991001001710,,test-11-11test-11test-11test-11test-11test-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11<br
  /></div><div><br  /></div><div>t [...]
-1,11991001001711,,test-11tesst-11test-11test-11test-11test-11test-11test-11test-11...test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11...test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test-11< [...]
-1,11991001001737,,test-11tesst-11test-1test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>3test-11test-11test-11test-11test-11test-11test-11test-11</div><div>4test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test- [...]
-1,11991001001739,,tt6d3btt52a8tt62a5tt5730tt65b986tt7a7att683c,"<div>tt64cdtt4f5ctt6b65tt9aa4ttff1a</div><div>1tt3001tt8fdbtt5165tt6d3btt52a8tt62a5tt540dtt5bfctt822att9875</div><div>2tt3001tt67e5tt770btt6d3btt52a8tt8be6tt60c5tt533att57dftt5c55tt793a</div><div><br
  
/></div><div>tt9884tt671ftt7ed3tt679cttff1a</div><div>tt6d3btt52a8tt8be6tt60c5tt533att57dftt5c55tt793att6b63tt5e38</div><div><br
  
/></div><div>tt5b9ett9645tt7ed3tt679cttff1a</div><div>tt6d3btt52a8tt8be6tt60c5tt6587tt5b57tt6587t
 [...]
-1,11991001001740,,tt6d3btt52a8tt6ctt5230tt4e13tt5bb6tt4ecbtt7ecdtt9875,<div>tt64cdtt4f5ctt6b65tt9aa4ttff1a</div><div>1tt3001tt8fdbtt5165tt6d3btt52a8tt62a5tt540dtt5bfctt822att9875</div><div>2tt3001tt5728tt4e13tt5bb6tt5c55tt793att533att57dftt70b9tt51fbtt4e13tt5bb6tt5934tt50cftt6216tt540dtt5b57</div><div>3tt3001tt67e5tt770btt9875tt9762tt8df3tt8f6c</div><div><br
  
/></div><div>tt9884tt671ftt7ed3tt679cttff1a</div><div>tt9875tt9762tt8df3转正常,跳转后地址正常</div><div><br
  /></div><div>实际结果:</div><div>页面 [...]
+connection_id,id,epic_key,title,description,workspace_id,created,modified,status,cc,begin,due,priority,iteration_id,source,module,release_id,created_from,feature,severity,reporter,resolved,closed,lastmodify,auditer,de,fixer,version_test,version_report,version_close,version_fix,baseline_find,baseline_join,baseline_close,baseline_test,sourcephase,te,current_owner,resolution,originphase,confirmer,participator,closer,platform,os,testtype,testphase,frequency,regression_number,flows,testmode,i
 [...]
+1,11991001001025,,test-11test-11test-11test-11test-11est-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 href=""http://insurance.xxx-com-sss/index-0212.html""; 
target=""_blank"">http://insurance.xxx-com-sss/index-0212.html</a>test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div>
 [...]
+1,11991001001030,,test-11test-11test-11t11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 href=""http://insurance.xxx-com-sss/insurclass/""; target=""_blank"">http:// 
[...]
+1,11991001001031,,test-11test-11test-11test-11test-11test-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<br
  /></div><div><br  /></div><d [...]
+1,11991001001032,,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11<a
 h [...]
+1,11991001001417,,test-11test-11-11test-11tesst-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test-11</div>< [...]
+1,11991001001418,,test-11tesest-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test
 [...]
+1,11991001001420,,test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>3test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div>
 [...]
+1,11991001001422,,test-11te11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11 [...]
+1,11991001001423,,test--11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11tes
 [...]
+1,11991001001425,,test-11test1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11test-11</div><div><b
 [...]
+1,11991001001426,,test-11test-11te11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11te
 [...]
+1,11991001001447,,IE11 
test-11te1test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-
 [...]
+1,11991001001448,,IE11 
test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11t
 [...]
+1,11991001001450,,IE11 
tes-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><
 [...]
+1,11991001001451,,IE11 
test-11test-11test-st-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test- 
[...]
+1,11991001001710,,test-11-11test-11test-11test-11test-11test-11test-11test-11test-11,<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  
/></div><div>test-11test-11test-11test-11test-11</div><div>test-11test-11test-11test-11test-11test-11<br
  /></div><div><br  /></div><div>t [...]
+1,11991001001711,,test-11tesst-11test-11test-11test-11test-11test-11test-11test-11...test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11...test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test-11< [...]
+1,11991001001737,,test-11tesst-11test-1test-11test-11test-11test-11test-11test-11test-11,"<div>test-11test-11test-11test-11test-11</div><div>1test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>2test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11</div><div>3test-11test-11test-11test-11test-11test-11test-11test-11</div><div>4test-11test-11test-11test-11test-11test-11test-11</div><div><br
  /></div><div>test-11test-11test-11test-11test- [...]
+1,11991001001739,,tt6d3btt52a8tt62a5tt5730tt65b986tt7a7att683c,"<div>tt64cdtt4f5ctt6b65tt9aa4ttff1a</div><div>1tt3001tt8fdbtt5165tt6d3btt52a8tt62a5tt540dtt5bfctt822att9875</div><div>2tt3001tt67e5tt770btt6d3btt52a8tt8be6tt60c5tt533att57dftt5c55tt793a</div><div><br
  
/></div><div>tt9884tt671ftt7ed3tt679cttff1a</div><div>tt6d3btt52a8tt8be6tt60c5tt533att57dftt5c55tt793att6b63tt5e38</div><div><br
  
/></div><div>tt5b9ett9645tt7ed3tt679cttff1a</div><div>tt6d3btt52a8tt8be6tt60c5tt6587tt5b57tt6587t
 [...]
+1,11991001001740,,tt6d3btt52a8tt6ctt5230tt4e13tt5bb6tt4ecbtt7ecdtt9875,<div>tt64cdtt4f5ctt6b65tt9aa4ttff1a</div><div>1tt3001tt8fdbtt5165tt6d3btt52a8tt62a5tt540dtt5bfctt822att9875</div><div>2tt3001tt5728tt4e13tt5bb6tt5c55tt793att533att57dftt70b9tt51fbtt4e13tt5bb6tt5934tt50cftt6216tt540dtt5b57</div><div>3tt3001tt67e5tt770btt9875tt9762tt8df3tt8f6c</div><div><br
  
/></div><div>tt9884tt671ftt7ed3tt679cttff1a</div><div>tt9875tt9762tt8df3转正常,跳转后地址正常</div><div><br
  /></div><div>实际结果:</div><div>页面 [...]
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_stories.csv 
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_stories.csv
index ef74f876a..5f594e68e 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_stories.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_stories.csv
@@ -1,21 +1,21 @@
-connection_id,id,workitem_type_id,name,description,workspace_id,creator,created,modified,status,owner,cc,begin,due,size,priority,developer,iteration_id,test_focus,type,source,module,version,completed,category_id,path,parent_id,children_id,ancestor_id,business_value,effort,effort_completed,exceed,remain,release_id,confidential,templated_id,created_from,feature,std_status,std_type,url,attachment_count,has_attachment,bug_id,follower,sync_type,predecessor_count,is_archived,modifier,progress_
 [...]
-1,11991001037563,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri
 [...]
-1,11991001037696,1146949574001000036,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-08-31T07:24:19.000+00:00,2021-09-03T08:13:49.000+00:00,test111test111,test-11test-11,,2021-08-31T16:00:00.000+00:00,2021-09-01T16:00:00.000+00:00,0,,,0,,技术债,,,,2021-09-03T08:13:49.000+00:00,11991001000175,11991001037696:,0,||11991001037697,11991001037696,,0,0,0,0,0,N,11991001001129,,,IN_PROGRESS,技术需求债务,https://www.tapd.cn/991/pro
 [...]
-1,11991001037697,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-j
 [...]
-1,11991001038322,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-07T08:07:25.000+00:00,2021-10-15T10:51:24.000+00:00,test111test111,test-11test-11,,2021-09-12T16:00:00.000+00:00,2021-10-07T16:00:00.000+00:00,0,Middle,,0,,需求,,,,2021-10-08T06:33:50.000+00:00,11991001000175,11991001038322:,0,||11991001038323,11991001038322,,57,57,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001038322,0,0,0,,,0
 [...]
-1,11991001038323,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:
 [...]
-1,11991001038697,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:
 [...]
-1,11991001038911,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-13T10:28:23.000+00:00,2022-03-26T08:56:07.000+00:00,test111test111test111,test-11test-11,,2021-09-13T16:00:00.000+00:00,2022-03-18T16:00:00.000+00:00,0,,,0,,需求,,,,2022-03-17T04:04:39.000+00:00,11991001000175,11991001038911:,0,||11991001038912,11991001038911,,22,21.5,-0.5,0,0,N,11991001001129,,"""""",IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001038911,0,0,
 [...]
-1,11991001038912,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Ca
 [...]
-1,11991001039664,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-24T07:46:47.000+00:00,2021-10-08T06:31:48.000+00:00,test111test111,test-11test-11,,2021-09-26T16:00:00.000+00:00,2021-09-29T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-08T06:31:48.000+00:00,11991001000175,11991001039664:,0,||11991001039673,11991001039664,,3,3,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.
 [...]
-1,11991001039673,11991001000026,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;te
 [...]
-1,11991001040086,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-29T06:52:01.000+00:00,2021-10-18T05:46:59.000+00:00,test111test111,test-11test-11,,2021-10-07T16:00:00.000+00:00,2021-10-26T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-18T05:46:59.000+00:00,11991001000175,11991001040086:,0,||11991001040088,11991001040086,,20,20,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001040086,0
 [...]
-1,11991001040088,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><p></p><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:in
 [...]
-1,11991001041163,11991001000269,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-10-19T07:58:33.000+00:00,2021-10-21T01:30:53.000+00:00,test111test111,test-11test-11,,2021-10-19T16:00:00.000+00:00,2021-10-20T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-21T01:30:53.000+00:00,11991001000175,11991001041163:,0,||11991001041164,11991001041163,,0,0,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/119910
 [...]
-1,11991001041164,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:in
 [...]
-1,11991001041165,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11testUnicode516btestUnicode671ftestUnicodeff09,"<div><p>testUnicode672ctestUnicode671ftestUnicode9700testUnicode8981testUnicode6539testUnicode9020testUnicode7684testUnicode9875testUnicode9762testUnicode6709</p><p>1testUnicode3001</p><p><a
 href=""http://news.xxx-com-sss/economy/""; rel=""noopener"" 
target=""_blank"">http://news.xxx-com-sss/economy/</a></p><p><a 
href=""http://news.xxx-com-sss/international/"";  [...]
-1,11991001041166,1146949574001000035,PCtestUnicode7aefhttpstestUnicode6539testUnicode9020testUnicode5de5testUnicode4f5ctestUnicodeff08testUnicode7b2ctestUnicode516btestUnicode671ftestUnicodeff09,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode5b8btestUnicode6587;m
 [...]
-1,11991001041788,11991001000269,testUnicode300atestUnicode777ftestUnicode89c1testUnicode300btestUnicode680ftestUnicode76eetestUnicode9875testUnicodeff08pc&mtestUnicode7ad9testUnicodeff09,,991,testUnicode6768testUnicode4e39,2021-10-27T08:55:27.000+00:00,2021-11-30T10:04:48.000+00:00,test111test111,testUnicode6768testUnicode4e39,,2021-11-02T16:00:00.000+00:00,2021-11-29T16:00:00.000+00:00,0,,,0,,需求,,,,2021-11-30T05:57:19.000+00:00,11991001000175,11991001041788:,0,||11991001041789,119910010
 [...]
-1,11991001041789,1146949574001000035,testUnicode300atestUnicode777ftestUnicode89c1testUnicode300btestUnicode680ftestUnicode76eetestUnicode9875testUnicodeff08pc&mtestUnicode7ad9testUnicodeff09,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode6b63testUnicode6587;mso-
 [...]
-1,11991001041899,11991001000269,2021testUnicode8d22testUnicode7ecftestUnicode98cetestUnicode4e91testUnicode699c,,991,testUnicode5218testUnicode5b87testUnicode6615,2021-10-28T02:56:01.000+00:00,2021-12-20T01:51:46.000+00:00,test111test111,testUnicode5218testUnicode5b87testUnicode6615,,2021-11-02T16:00:00.000+00:00,2021-12-07T16:00:00.000+00:00,0,Middle,,0,,需求,,,,2021-12-20T01:51:46.000+00:00,11991001000175,11991001041899:,0,||11991001041900|11991001042964,11991001041899,,250,250,0,0,0,N,1
 [...]
-1,11991001041900,11991001000026,testUnicode4e3btestUnicode8bbatestUnicode575b-testUnicode4f1atestUnicode524d,"<div><div><div><div><div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div></div></div></div></div><style>@font-face{font-family:""Times
 New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode6b63testUnicode6587;mso-style-parent:"""";margin:0.00px;margin-
 [...]
+connection_id,id,workitem_type_id,name,description,workspace_id,creator,created,modified,status,owner,cc,begin,due,size,priority,developer,iteration_id,test_focus,type,source,module,version,completed,category_id,path,parent_id,children_id,ancestor_id,business_value,effort,effort_completed,exceed,remain,release_id,confidential,templated_id,created_from,feature,std_status,std_type,url,attachment_count,has_attachment,bug_id,follower,sync_type,predecessor_count,is_archived,modifier,progress_
 [...]
+1,11991001037563,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri
 [...]
+1,11991001037696,1146949574001000036,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-08-31T07:24:19.000+00:00,2021-09-03T08:13:49.000+00:00,test111test111,test-11test-11,,2021-08-31T16:00:00.000+00:00,2021-09-01T16:00:00.000+00:00,0,,,0,,技术债,,,,2021-09-03T08:13:49.000+00:00,11991001000175,11991001037696:,0,||11991001037697,11991001037696,,0,0,0,0,0,N,11991001001129,,,IN_PROGRESS,技术需求债务,https://www.tapd.cn/991/pro
 [...]
+1,11991001037697,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-j
 [...]
+1,11991001038322,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-07T08:07:25.000+00:00,2021-10-15T10:51:24.000+00:00,test111test111,test-11test-11,,2021-09-12T16:00:00.000+00:00,2021-10-07T16:00:00.000+00:00,0,Middle,,0,,需求,,,,2021-10-08T06:33:50.000+00:00,11991001000175,11991001038322:,0,||11991001038323,11991001038322,,57,57,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001038322,0,0,0,,,0
 [...]
+1,11991001038323,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:
 [...]
+1,11991001038697,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:
 [...]
+1,11991001038911,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-13T10:28:23.000+00:00,2022-03-26T08:56:07.000+00:00,test111test111test111,test-11test-11,,2021-09-13T16:00:00.000+00:00,2022-03-18T16:00:00.000+00:00,0,,,0,,需求,,,,2022-03-17T04:04:39.000+00:00,11991001000175,11991001038911:,0,||11991001038912,11991001038911,,22,21.5,-0.5,0,0,N,11991001001129,,"""""",IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001038911,0,0,
 [...]
+1,11991001038912,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Ca
 [...]
+1,11991001039664,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-24T07:46:47.000+00:00,2021-10-08T06:31:48.000+00:00,test111test111,test-11test-11,,2021-09-26T16:00:00.000+00:00,2021-09-29T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-08T06:31:48.000+00:00,11991001000175,11991001039664:,0,||11991001039673,11991001039664,,3,3,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.
 [...]
+1,11991001039673,11991001000026,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;te
 [...]
+1,11991001040086,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-09-29T06:52:01.000+00:00,2021-10-18T05:46:59.000+00:00,test111test111,test-11test-11,,2021-10-07T16:00:00.000+00:00,2021-10-26T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-18T05:46:59.000+00:00,11991001000175,11991001040086:,0,||11991001040088,11991001040086,,20,20,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/11991001040086,0
 [...]
+1,11991001040088,1146949574001000036,PCtest-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><p></p><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:in
 [...]
+1,11991001041163,11991001000269,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2021-10-19T07:58:33.000+00:00,2021-10-21T01:30:53.000+00:00,test111test111,test-11test-11,,2021-10-19T16:00:00.000+00:00,2021-10-20T16:00:00.000+00:00,0,,,0,,需求,,,,2021-10-21T01:30:53.000+00:00,11991001000175,11991001041163:,0,||11991001041164,11991001041163,,0,0,0,0,0,N,11991001001129,,,IN_PROGRESS,故事需求,https://www.tapd.cn/991/prong/stories/view/119910
 [...]
+1,11991001041164,11991001000026,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""test-11test-11"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:test-11test-11;mso-style-parent:"""";margin:0.00px;margin-bottom:0.00px;mso-pagination:none;text-align:justify;text-justify:in
 [...]
+1,11991001041165,11991001000269,PCtest-11test-11test-11test-11test-11test-11test-11testUnicode516btestUnicode671ftestUnicodeff09,"<div><p>testUnicode672ctestUnicode671ftestUnicode9700testUnicode8981testUnicode6539testUnicode9020testUnicode7684testUnicode9875testUnicode9762testUnicode6709</p><p>1testUnicode3001</p><p><a
 href=""http://news.xxx-com-sss/economy/""; rel=""noopener"" 
target=""_blank"">http://news.xxx-com-sss/economy/</a></p><p><a 
href=""http://news.xxx-com-sss/international/"";  [...]
+1,11991001041166,1146949574001000035,PCtestUnicode7aefhttpstestUnicode6539testUnicode9020testUnicode5de5testUnicode4f5ctestUnicodeff08testUnicode7b2ctestUnicode516btestUnicode671ftestUnicodeff09,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode5b8btestUnicode6587;m
 [...]
+1,11991001041788,11991001000269,testUnicode300atestUnicode777ftestUnicode89c1testUnicode300btestUnicode680ftestUnicode76eetestUnicode9875testUnicodeff08pc&mtestUnicode7ad9testUnicodeff09,,991,testUnicode6768testUnicode4e39,2021-10-27T08:55:27.000+00:00,2021-11-30T10:04:48.000+00:00,test111test111,testUnicode6768testUnicode4e39,,2021-11-02T16:00:00.000+00:00,2021-11-29T16:00:00.000+00:00,0,,,0,,需求,,,,2021-11-30T05:57:19.000+00:00,11991001000175,11991001041788:,0,||11991001041789,119910010
 [...]
+1,11991001041789,1146949574001000035,testUnicode300atestUnicode777ftestUnicode89c1testUnicode300btestUnicode680ftestUnicode76eetestUnicode9875testUnicodeff08pc&mtestUnicode7ad9testUnicodeff09,"<div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div><style>@font-face{font-family:""Times New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode6b63testUnicode6587;mso-
 [...]
+1,11991001041899,11991001000269,2021testUnicode8d22testUnicode7ecftestUnicode98cetestUnicode4e91testUnicode699c,,991,testUnicode5218testUnicode5b87testUnicode6615,2021-10-28T02:56:01.000+00:00,2021-12-20T01:51:46.000+00:00,test111test111,testUnicode5218testUnicode5b87testUnicode6615,,2021-11-02T16:00:00.000+00:00,2021-12-07T16:00:00.000+00:00,0,Middle,,0,,需求,,,,2021-12-20T01:51:46.000+00:00,11991001000175,11991001041899:,0,||11991001041900|11991001042964,11991001041899,,250,250,0,0,0,N,1
 [...]
+1,11991001041900,11991001000026,testUnicode4e3btestUnicode8bbatestUnicode575b-testUnicode4f1atestUnicode524d,"<div><div><div><div><div><div><div><!--
 [if gte mso 9]><![endif]--><!-- [if gte mso 
9]><![endif]--></div></div></div></div></div></div><style>@font-face{font-family:""Times
 New 
Roman"";}@font-face{font-family:""testUnicode5b8btestUnicode4f53"";}@font-face{font-family:""Calibri"";}p.MsoNormal{mso-style-name:testUnicode6b63testUnicode6587;mso-style-parent:"""";margin:0.00px;margin-
 [...]
diff --git a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_tasks.csv 
b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_tasks.csv
index d404d3441..e6a9306d9 100644
--- a/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_tasks.csv
+++ b/backend/plugins/tapd/e2e/snapshot_tables/_tool_tapd_tasks.csv
@@ -1,16 +1,16 @@
-connection_id,id,name,description,workspace_id,creator,created,modified,status,owner,cc,begin,due,priority,iteration_id,completed,effort,effort_completed,exceed,remain,std_status,std_type,type,story_id,progress,has_attachment,url,attachment_count,follower,created_from,predecessor_count,successor_count,release_id,label,new_story_id,custom_field_one,custom_field_two,custom_field_three,custom_field_four,custom_field_five,custom_field6,custom_field7,custom_field8,custom_field9,custom_field10
 [...]
-1,11991001015107,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-03T09:52:00.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T09:53:39.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015107,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4339,
-1,11991001015121,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11;,2020-11-03T10:39:57.000+00:00,2020-11-03T10:40:17.000+00:00,done,test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T10:40:17.000+00:00,9,9,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015121,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tas
 [...]
-1,11991001015142,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-03T10:58:43.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T11:00:18.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015142,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
-1,11991001015184,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-04T09:12:11.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-03T16:00:00.000+00:00,2020-11-03T16:00:00.000+00:00,,0,2020-11-04T09:14:22.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015184,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4342,
-1,11991001015203,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-04T10:38:10.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-03T16:00:00.000+00:00,2020-11-03T16:00:00.000+00:00,,0,2020-11-04T10:38:54.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015203,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
-1,11991001015207,pctest-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-04T10:43:02.000+00:00,2020-11-10T11:01:47.000+00:00,done,test-11test-11,test-11test-11;,2020-11-03T16:00:00.000+00:00,2020-11-09T16:00:00.000+00:00,,0,2020-11-10T11:01:47.000+00:00,27,27,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015207,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api
 [...]
-1,11991001015253,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-05T08:49:42.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-04T16:00:00.000+00:00,,0,2020-11-05T08:50:55.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015253,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4345,
-1,11991001015307,Mtest-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-05T11:12:13.000+00:00,2020-11-06T11:03:43.000+00:00,done,test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T11:03:43.000+00:00,19,18,-1,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015307,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4346,
-1,11991001015309,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-05T11:14:41.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-04T16:00:00.000+00:00,,0,2020-11-05T11:16:00.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015309,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
-1,11991001015340,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-06T09:10:44.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-05T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T09:12:19.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015340,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4348,
-1,11991001015361,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-06T10:49:54.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-05T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T10:50:31.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015361,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
-1,11991001015431,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-09T04:45:27.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-08T16:00:00.000+00:00,,0,2020-11-09T04:46:54.000+00:00,3,3,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015431,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
-1,11991001015441,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-09T09:14:15.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-08T16:00:00.000+00:00,,0,2020-11-09T09:16:32.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015441,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4351,
-1,11991001015452,Mtest-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-09T10:22:28.000+00:00,2020-11-11T10:47:24.000+00:00,done,test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-10T16:00:00.000+00:00,,0,2020-11-11T10:47:24.000+00:00,27,27,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015452,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_api_tasks,4352,
-1,11991001015583,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-10T03:45:34.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-09T16:00:00.000+00:00,2020-11-09T16:00:00.000+00:00,,0,2020-11-10T03:47:30.000+00:00,3,3,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015583,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"{""ConnectionId"":1,""WorkspaceId"":991}",_raw_tapd_ap
 [...]
+connection_id,id,name,description,workspace_id,creator,created,modified,status,owner,cc,begin,due,priority,iteration_id,completed,effort,effort_completed,exceed,remain,std_status,std_type,type,story_id,progress,has_attachment,url,attachment_count,follower,created_from,predecessor_count,successor_count,release_id,label,new_story_id,custom_field_one,custom_field_two,custom_field_three,custom_field_four,custom_field_five,custom_field6,custom_field7,custom_field8,custom_field_9,custom_field_
 [...]
+1,11991001015107,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-03T09:52:00.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T09:53:39.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015107,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015121,test-11test-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11;,2020-11-03T10:39:57.000+00:00,2020-11-03T10:40:17.000+00:00,done,test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T10:40:17.000+00:00,9,9,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015121,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015142,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-03T10:58:43.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-02T16:00:00.000+00:00,2020-11-02T16:00:00.000+00:00,,0,2020-11-03T11:00:18.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015142,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015184,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-04T09:12:11.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-03T16:00:00.000+00:00,2020-11-03T16:00:00.000+00:00,,0,2020-11-04T09:14:22.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015184,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015203,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-04T10:38:10.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-03T16:00:00.000+00:00,2020-11-03T16:00:00.000+00:00,,0,2020-11-04T10:38:54.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015203,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015207,pctest-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-04T10:43:02.000+00:00,2020-11-10T11:01:47.000+00:00,done,test-11test-11,test-11test-11;,2020-11-03T16:00:00.000+00:00,2020-11-09T16:00:00.000+00:00,,0,2020-11-10T11:01:47.000+00:00,27,27,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015207,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015253,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-05T08:49:42.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-04T16:00:00.000+00:00,,0,2020-11-05T08:50:55.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015253,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015307,Mtest-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-05T11:12:13.000+00:00,2020-11-06T11:03:43.000+00:00,done,test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T11:03:43.000+00:00,19,18,-1,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015307,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015309,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-05T11:14:41.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-04T16:00:00.000+00:00,2020-11-04T16:00:00.000+00:00,,0,2020-11-05T11:16:00.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015309,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015340,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-06T09:10:44.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-05T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T09:12:19.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015340,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015361,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-06T10:49:54.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-05T16:00:00.000+00:00,2020-11-05T16:00:00.000+00:00,,0,2020-11-06T10:50:31.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015361,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015431,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-09T04:45:27.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-08T16:00:00.000+00:00,,0,2020-11-09T04:46:54.000+00:00,3,3,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015431,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015441,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-09T09:14:15.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-08T16:00:00.000+00:00,,0,2020-11-09T09:16:32.000+00:00,9,9,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015441,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015452,Mtest-11test-11test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11,2020-11-09T10:22:28.000+00:00,2020-11-11T10:47:24.000+00:00,done,test-11test-11,,2020-11-08T16:00:00.000+00:00,2020-11-10T16:00:00.000+00:00,,0,2020-11-11T10:47:24.000+00:00,27,27,0,0,DONE,任务,TASK,0,100,,https://www.tapd.cn/991/prong/stories/view/11991001015452,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
+1,11991001015583,test-11test-11test-11test-11test-11test-11test-11,,991,test-11test-11test-11,2020-11-10T03:45:34.000+00:00,2022-06-01T11:53:30.000+00:00,done,test-11test-11test-11,,2020-11-09T16:00:00.000+00:00,2020-11-09T16:00:00.000+00:00,,0,2020-11-10T03:47:30.000+00:00,3,3,0,0,DONE,任务,TASK,11991001001301,100,,https://www.tapd.cn/991/prong/stories/view/11991001015583,0,,,0,0,0,,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
diff --git a/backend/plugins/tapd/e2e/stories_test.go 
b/backend/plugins/tapd/e2e/stories_test.go
index 86814a98c..19f990785 100644
--- a/backend/plugins/tapd/e2e/stories_test.go
+++ b/backend/plugins/tapd/e2e/stories_test.go
@@ -38,10 +38,10 @@ func TestTapdStoryDataFlow(t *testing.T) {
                        WorkspaceId:  991,
                        TransformationRules: &tasks.TransformationRules{
                                TypeMappings: tasks.TypeMappings{
-                                       "BUG":  "缺陷",
-                                       "TASK": "任务",
-                                       "需求":   "故事需求",
-                                       "技术债":  "技术需求债务",
+                                       "BUG":      "缺陷",
+                                       "TASK":     "任务",
+                                       "需求":     "故事需求",
+                                       "技术债":   "技术需求债务",
                                        "长篇故事": "Epic需求",
                                },
                        },
@@ -61,115 +61,11 @@ func TestTapdStoryDataFlow(t *testing.T) {
        dataflowTester.FlushTabler(&models.TapdIterationStory{})
        dataflowTester.FlushTabler(&models.TapdStoryLabel{})
        dataflowTester.Subtask(tasks.ExtractStoryMeta, taskData)
-       dataflowTester.VerifyTable(
-               models.TapdStory{},
-               "./snapshot_tables/_tool_tapd_stories.csv",
-               e2ehelper.ColumnWithRawData(
-                       "connection_id",
-                       "id",
-                       "workitem_type_id",
-                       "name",
-                       "description",
-                       "workspace_id",
-                       "creator",
-                       "created",
-                       "modified",
-                       "status",
-                       "owner",
-                       "cc",
-                       "begin",
-                       "due",
-                       "size",
-                       "priority",
-                       "developer",
-                       "iteration_id",
-                       "test_focus",
-                       "type",
-                       "source",
-                       "module",
-                       "version",
-                       "completed",
-                       "category_id",
-                       "path",
-                       "parent_id",
-                       "children_id",
-                       "ancestor_id",
-                       "business_value",
-                       "effort",
-                       "effort_completed",
-                       "exceed",
-                       "remain",
-                       "release_id",
-                       "confidential",
-                       "templated_id",
-                       "created_from",
-                       "feature",
-                       "std_status",
-                       "std_type",
-                       "url",
-                       "attachment_count",
-                       "has_attachment",
-                       "bug_id",
-                       "follower",
-                       "sync_type",
-                       "predecessor_count",
-                       "is_archived",
-                       "modifier",
-                       "progress_manual",
-                       "successor_count",
-                       "label",
-                       "custom_field_one",
-                       "custom_field_two",
-                       "custom_field_three",
-                       "custom_field_four",
-                       "custom_field_five",
-                       "custom_field6",
-                       "custom_field7",
-                       "custom_field8",
-                       "custom_field9",
-                       "custom_field10",
-                       "custom_field11",
-                       "custom_field12",
-                       "custom_field13",
-                       "custom_field14",
-                       "custom_field15",
-                       "custom_field16",
-                       "custom_field17",
-                       "custom_field18",
-                       "custom_field19",
-                       "custom_field20",
-                       "custom_field21",
-                       "custom_field22",
-                       "custom_field23",
-                       "custom_field24",
-                       "custom_field25",
-                       "custom_field26",
-                       "custom_field27",
-                       "custom_field28",
-                       "custom_field29",
-                       "custom_field30",
-                       "custom_field31",
-                       "custom_field32",
-                       "custom_field33",
-                       "custom_field34",
-                       "custom_field35",
-                       "custom_field36",
-                       "custom_field37",
-                       "custom_field38",
-                       "custom_field39",
-                       "custom_field40",
-                       "custom_field41",
-                       "custom_field42",
-                       "custom_field43",
-                       "custom_field44",
-                       "custom_field45",
-                       "custom_field46",
-                       "custom_field47",
-                       "custom_field48",
-                       "custom_field49",
-                       "custom_field50",
-               ),
-       )
+       dataflowTester.VerifyTableWithOptions(&models.TapdStory{}, 
e2ehelper.TableOptions{
+               CSVRelPath:  "./snapshot_tables/_tool_tapd_stories.csv",
+               IgnoreTypes: []interface{}{common.NoPKModel{}},
+       })
+
        dataflowTester.VerifyTable(
                models.TapdWorkSpaceStory{},
                "./snapshot_tables/_tool_tapd_workspace_stories.csv",
diff --git a/backend/plugins/tapd/e2e/tasks_test.go 
b/backend/plugins/tapd/e2e/tasks_test.go
index a38e9eca6..696651dab 100644
--- a/backend/plugins/tapd/e2e/tasks_test.go
+++ b/backend/plugins/tapd/e2e/tasks_test.go
@@ -54,97 +54,10 @@ func TestTapdTaskDataFlow(t *testing.T) {
        dataflowTester.FlushTabler(&models.TapdIterationTask{})
        dataflowTester.FlushTabler(&models.TapdTaskLabel{})
        dataflowTester.Subtask(tasks.ExtractTaskMeta, taskData)
-       dataflowTester.VerifyTable(
-               models.TapdTask{},
-               "./snapshot_tables/_tool_tapd_tasks.csv",
-               e2ehelper.ColumnWithRawData(
-                       "connection_id",
-                       "id",
-                       "name",
-                       "description",
-                       "workspace_id",
-                       "creator",
-                       "created",
-                       "modified",
-                       "status",
-                       "owner",
-                       "cc",
-                       "begin",
-                       "due",
-                       "priority",
-                       "iteration_id",
-                       "completed",
-                       "effort",
-                       "effort_completed",
-                       "exceed",
-                       "remain",
-                       "std_status",
-                       "std_type",
-                       "type",
-                       "story_id",
-                       "progress",
-                       "has_attachment",
-                       "url",
-                       "attachment_count",
-                       "follower",
-                       "created_from",
-                       "predecessor_count",
-                       "successor_count",
-                       "release_id",
-                       "label",
-                       "new_story_id",
-                       "custom_field_one",
-                       "custom_field_two",
-                       "custom_field_three",
-                       "custom_field_four",
-                       "custom_field_five",
-                       "custom_field6",
-                       "custom_field7",
-                       "custom_field8",
-                       "custom_field9",
-                       "custom_field10",
-                       "custom_field11",
-                       "custom_field12",
-                       "custom_field13",
-                       "custom_field14",
-                       "custom_field15",
-                       "custom_field16",
-                       "custom_field17",
-                       "custom_field18",
-                       "custom_field19",
-                       "custom_field20",
-                       "custom_field21",
-                       "custom_field22",
-                       "custom_field23",
-                       "custom_field24",
-                       "custom_field25",
-                       "custom_field26",
-                       "custom_field27",
-                       "custom_field28",
-                       "custom_field29",
-                       "custom_field30",
-                       "custom_field31",
-                       "custom_field32",
-                       "custom_field33",
-                       "custom_field34",
-                       "custom_field35",
-                       "custom_field36",
-                       "custom_field37",
-                       "custom_field38",
-                       "custom_field39",
-                       "custom_field40",
-                       "custom_field41",
-                       "custom_field42",
-                       "custom_field43",
-                       "custom_field44",
-                       "custom_field45",
-                       "custom_field46",
-                       "custom_field47",
-                       "custom_field48",
-                       "custom_field49",
-                       "custom_field50",
-               ),
-       )
+       dataflowTester.VerifyTableWithOptions(&models.TapdTask{}, 
e2ehelper.TableOptions{
+               CSVRelPath:  "./snapshot_tables/_tool_tapd_tasks.csv",
+               IgnoreTypes: []interface{}{common.NoPKModel{}},
+       })
        dataflowTester.VerifyTable(
                models.TapdWorkSpaceTask{},
                "./snapshot_tables/_tool_tapd_workspace_tasks.csv",
diff --git a/backend/plugins/tapd/models/bug.go 
b/backend/plugins/tapd/models/bug.go
index 3bd468c02..e5d3a328f 100644
--- a/backend/plugins/tapd/models/bug.go
+++ b/backend/plugins/tapd/models/bug.go
@@ -112,51 +112,51 @@ type TapdBug struct {
        CustomFieldThree string `json:"custom_field_three" gorm:"type:text"`
        CustomFieldFour  string `json:"custom_field_four" gorm:"type:text"`
        CustomFieldFive  string `json:"custom_field_five" gorm:"type:text"`
-       CustomField6     string `json:"custom_field_6" gorm:"type:text"`
-       CustomField7     string `json:"custom_field_7" gorm:"type:text"`
-       CustomField8     string `json:"custom_field_8" gorm:"type:text"`
-       CustomField9     string `json:"custom_field_9" gorm:"type:text"`
-       CustomField10    string `json:"custom_field_10" gorm:"type:text"`
-       CustomField11    string `json:"custom_field_11" gorm:"type:text"`
-       CustomField12    string `json:"custom_field_12" gorm:"type:text"`
-       CustomField13    string `json:"custom_field_13" gorm:"type:text"`
-       CustomField14    string `json:"custom_field_14" gorm:"type:text"`
-       CustomField15    string `json:"custom_field_15" gorm:"type:text"`
-       CustomField16    string `json:"custom_field_16" gorm:"type:text"`
-       CustomField17    string `json:"custom_field_17" gorm:"type:text"`
-       CustomField18    string `json:"custom_field_18" gorm:"type:text"`
-       CustomField19    string `json:"custom_field_19" gorm:"type:text"`
-       CustomField20    string `json:"custom_field_20" gorm:"type:text"`
-       CustomField21    string `json:"custom_field_21" gorm:"type:text"`
-       CustomField22    string `json:"custom_field_22" gorm:"type:text"`
-       CustomField23    string `json:"custom_field_23" gorm:"type:text"`
-       CustomField24    string `json:"custom_field_24" gorm:"type:text"`
-       CustomField25    string `json:"custom_field_25" gorm:"type:text"`
-       CustomField26    string `json:"custom_field_26" gorm:"type:text"`
-       CustomField27    string `json:"custom_field_27" gorm:"type:text"`
-       CustomField28    string `json:"custom_field_28" gorm:"type:text"`
-       CustomField29    string `json:"custom_field_29" gorm:"type:text"`
-       CustomField30    string `json:"custom_field_30" gorm:"type:text"`
-       CustomField31    string `json:"custom_field_31" gorm:"type:text"`
-       CustomField32    string `json:"custom_field_32" gorm:"type:text"`
-       CustomField33    string `json:"custom_field_33" gorm:"type:text"`
-       CustomField34    string `json:"custom_field_34" gorm:"type:text"`
-       CustomField35    string `json:"custom_field_35" gorm:"type:text"`
-       CustomField36    string `json:"custom_field_36" gorm:"type:text"`
-       CustomField37    string `json:"custom_field_37" gorm:"type:text"`
-       CustomField38    string `json:"custom_field_38" gorm:"type:text"`
-       CustomField39    string `json:"custom_field_39" gorm:"type:text"`
-       CustomField40    string `json:"custom_field_40" gorm:"type:text"`
-       CustomField41    string `json:"custom_field_41" gorm:"type:text"`
-       CustomField42    string `json:"custom_field_42" gorm:"type:text"`
-       CustomField43    string `json:"custom_field_43" gorm:"type:text"`
-       CustomField44    string `json:"custom_field_44" gorm:"type:text"`
-       CustomField45    string `json:"custom_field_45" gorm:"type:text"`
-       CustomField46    string `json:"custom_field_46" gorm:"type:text"`
-       CustomField47    string `json:"custom_field_47" gorm:"type:text"`
-       CustomField48    string `json:"custom_field_48" gorm:"type:text"`
-       CustomField49    string `json:"custom_field_49" gorm:"type:text"`
-       CustomField50    string `json:"custom_field_50" gorm:"type:text"`
+       CustomField6     string `json:"custom_field_6" 
gorm:"type:text;column:custom_field_6"`
+       CustomField7     string `json:"custom_field_7" 
gorm:"type:text;column:custom_field_7"`
+       CustomField8     string `json:"custom_field_8" 
gorm:"type:text;column:custom_field_8"`
+       CustomField9     string `json:"custom_field_9" 
gorm:"type:text;column:custom_field_9"`
+       CustomField10    string `json:"custom_field_10" 
gorm:"type:text;column:custom_field_10"`
+       CustomField11    string `json:"custom_field_11" 
gorm:"type:text;column:custom_field_11"`
+       CustomField12    string `json:"custom_field_12" 
gorm:"type:text;column:custom_field_12"`
+       CustomField13    string `json:"custom_field_13" 
gorm:"type:text;column:custom_field_13"`
+       CustomField14    string `json:"custom_field_14" 
gorm:"type:text;column:custom_field_14"`
+       CustomField15    string `json:"custom_field_15" 
gorm:"type:text;column:custom_field_15"`
+       CustomField16    string `json:"custom_field_16" 
gorm:"type:text;column:custom_field_16"`
+       CustomField17    string `json:"custom_field_17" 
gorm:"type:text;column:custom_field_17"`
+       CustomField18    string `json:"custom_field_18" 
gorm:"type:text;column:custom_field_18"`
+       CustomField19    string `json:"custom_field_19" 
gorm:"type:text;column:custom_field_19"`
+       CustomField20    string `json:"custom_field_20" 
gorm:"type:text;column:custom_field_20"`
+       CustomField21    string `json:"custom_field_21" 
gorm:"type:text;column:custom_field_21"`
+       CustomField22    string `json:"custom_field_22" 
gorm:"type:text;column:custom_field_22"`
+       CustomField23    string `json:"custom_field_23" 
gorm:"type:text;column:custom_field_23"`
+       CustomField24    string `json:"custom_field_24" 
gorm:"type:text;column:custom_field_24"`
+       CustomField25    string `json:"custom_field_25" 
gorm:"type:text;column:custom_field_25"`
+       CustomField26    string `json:"custom_field_26" 
gorm:"type:text;column:custom_field_26"`
+       CustomField27    string `json:"custom_field_27" 
gorm:"type:text;column:custom_field_27"`
+       CustomField28    string `json:"custom_field_28" 
gorm:"type:text;column:custom_field_28"`
+       CustomField29    string `json:"custom_field_29" 
gorm:"type:text;column:custom_field_29"`
+       CustomField30    string `json:"custom_field_30" 
gorm:"type:text;column:custom_field_30"`
+       CustomField31    string `json:"custom_field_31" 
gorm:"type:text;column:custom_field_31"`
+       CustomField32    string `json:"custom_field_32" 
gorm:"type:text;column:custom_field_32"`
+       CustomField33    string `json:"custom_field_33" 
gorm:"type:text;column:custom_field_33"`
+       CustomField34    string `json:"custom_field_34" 
gorm:"type:text;column:custom_field_34"`
+       CustomField35    string `json:"custom_field_35" 
gorm:"type:text;column:custom_field_35"`
+       CustomField36    string `json:"custom_field_36" 
gorm:"type:text;column:custom_field_36"`
+       CustomField37    string `json:"custom_field_37" 
gorm:"type:text;column:custom_field_37"`
+       CustomField38    string `json:"custom_field_38" 
gorm:"type:text;column:custom_field_38"`
+       CustomField39    string `json:"custom_field_39" 
gorm:"type:text;column:custom_field_39"`
+       CustomField40    string `json:"custom_field_40" 
gorm:"type:text;column:custom_field_40"`
+       CustomField41    string `json:"custom_field_41" 
gorm:"type:text;column:custom_field_41"`
+       CustomField42    string `json:"custom_field_42" 
gorm:"type:text;column:custom_field_42"`
+       CustomField43    string `json:"custom_field_43" 
gorm:"type:text;column:custom_field_43"`
+       CustomField44    string `json:"custom_field_44" 
gorm:"type:text;column:custom_field_44"`
+       CustomField45    string `json:"custom_field_45" 
gorm:"type:text;column:custom_field_45"`
+       CustomField46    string `json:"custom_field_46" 
gorm:"type:text;column:custom_field_46"`
+       CustomField47    string `json:"custom_field_47" 
gorm:"type:text;column:custom_field_47"`
+       CustomField48    string `json:"custom_field_48" 
gorm:"type:text;column:custom_field_48"`
+       CustomField49    string `json:"custom_field_49" 
gorm:"type:text;column:custom_field_49"`
+       CustomField50    string `json:"custom_field_50" 
gorm:"type:text;column:custom_field_50"`
 }
 
 func (TapdBug) TableName() string {
diff --git 
a/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
 
b/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
new file mode 100644
index 000000000..2e3857375
--- /dev/null
+++ 
b/backend/plugins/tapd/models/migrationscripts/20230411_modify_custom_field_name.go
@@ -0,0 +1,73 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package migrationscripts
+
+import (
+       "fmt"
+       "github.com/apache/incubator-devlake/core/context"
+       "github.com/apache/incubator-devlake/core/errors"
+)
+
+type modifyCustomFieldName struct{}
+
+func (*modifyCustomFieldName) Up(basicRes context.BasicRes) errors.Error {
+       db := basicRes.GetDal()
+       var err errors.Error
+       issuesNameList := []string{"_tool_tapd_stories", "_tool_tapd_bugs", 
"_tool_tapd_tasks"}
+       for _, issuesName := range issuesNameList {
+               switch issuesName {
+               case "_tool_tapd_bugs":
+                       for i := 6; i < 9; i++ {
+                               err = db.RenameColumn(issuesName, 
fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
+                               if err != nil {
+                                       return err
+                               }
+                       }
+               case "_tool_tapd_stories":
+                       fallthrough
+               case "_tool_tapd_tasks":
+                       err = db.RenameColumn(issuesName, `custom_field6`, 
`custom_field_six`)
+                       if err != nil {
+                               return err
+                       }
+                       err = db.RenameColumn(issuesName, `custom_field7`, 
`custom_field_seven`)
+                       if err != nil {
+                               return err
+                       }
+                       err = db.RenameColumn(issuesName, `custom_field8`, 
`custom_field_eight`)
+                       if err != nil {
+                               return err
+                       }
+               }
+               for i := 9; i <= 50; i++ {
+                       err = db.RenameColumn(issuesName, 
fmt.Sprintf("custom_field%d", i), fmt.Sprintf("custom_field_%d", i))
+                       if err != nil {
+                               return err
+                       }
+               }
+       }
+       return nil
+}
+
+func (*modifyCustomFieldName) Version() uint64 {
+       return 20230411000004
+}
+
+func (*modifyCustomFieldName) Name() string {
+       return "modify tapd custom field name"
+}
diff --git a/backend/plugins/tapd/models/migrationscripts/register.go 
b/backend/plugins/tapd/models/migrationscripts/register.go
index 04461d050..232c48e33 100644
--- a/backend/plugins/tapd/models/migrationscripts/register.go
+++ b/backend/plugins/tapd/models/migrationscripts/register.go
@@ -28,5 +28,6 @@ func All() []plugin.MigrationScript {
                new(encodeConnToken),
                new(addTransformation),
                new(deleteIssue),
+               new(modifyCustomFieldName),
        }
 }
diff --git a/backend/plugins/tapd/models/story.go 
b/backend/plugins/tapd/models/story.go
index 73fd4e039..79e7140ae 100644
--- a/backend/plugins/tapd/models/story.go
+++ b/backend/plugins/tapd/models/story.go
@@ -77,7 +77,7 @@ type TapdStory struct {
        ProgressManual   string `json:"progress_manual" 
gorm:"type:varchar(255)"`
        SuccessorCount   int16  `json:"successor_count,string"`
        Label            string `json:"label" gorm:"type:varchar(255)"`
-       CustomFieldOne   string `json:"custom_field_one" gorm:"type:text"`
+       CustomFieldOne   string `json:"custom_field_one" 
gorm:"type:text;column:custom_field_one"`
        CustomFieldTwo   string `json:"custom_field_two" gorm:"type:text"`
        CustomFieldThree string `json:"custom_field_three" gorm:"type:text"`
        CustomFieldFour  string `json:"custom_field_four" gorm:"type:text"`
@@ -85,48 +85,48 @@ type TapdStory struct {
        CustomField6     string `json:"custom_field_six" gorm:"type:text"`
        CustomField7     string `json:"custom_field_seven" gorm:"type:text"`
        CustomField8     string `json:"custom_field_eight" gorm:"type:text"`
-       CustomField9     string `json:"custom_field_9" gorm:"type:text"`
-       CustomField10    string `json:"custom_field_10" gorm:"type:text"`
-       CustomField11    string `json:"custom_field_11" gorm:"type:text"`
-       CustomField12    string `json:"custom_field_12" gorm:"type:text"`
-       CustomField13    string `json:"custom_field_13" gorm:"type:text"`
-       CustomField14    string `json:"custom_field_14" gorm:"type:text"`
-       CustomField15    string `json:"custom_field_15" gorm:"type:text"`
-       CustomField16    string `json:"custom_field_16" gorm:"type:text"`
-       CustomField17    string `json:"custom_field_17" gorm:"type:text"`
-       CustomField18    string `json:"custom_field_18" gorm:"type:text"`
-       CustomField19    string `json:"custom_field_19" gorm:"type:text"`
-       CustomField20    string `json:"custom_field_20" gorm:"type:text"`
-       CustomField21    string `json:"custom_field_21" gorm:"type:text"`
-       CustomField22    string `json:"custom_field_22" gorm:"type:text"`
-       CustomField23    string `json:"custom_field_23" gorm:"type:text"`
-       CustomField24    string `json:"custom_field_24" gorm:"type:text"`
-       CustomField25    string `json:"custom_field_25" gorm:"type:text"`
-       CustomField26    string `json:"custom_field_26" gorm:"type:text"`
-       CustomField27    string `json:"custom_field_27" gorm:"type:text"`
-       CustomField28    string `json:"custom_field_28" gorm:"type:text"`
-       CustomField29    string `json:"custom_field_29" gorm:"type:text"`
-       CustomField30    string `json:"custom_field_30" gorm:"type:text"`
-       CustomField31    string `json:"custom_field_31" gorm:"type:text"`
-       CustomField32    string `json:"custom_field_32" gorm:"type:text"`
-       CustomField33    string `json:"custom_field_33" gorm:"type:text"`
-       CustomField34    string `json:"custom_field_34" gorm:"type:text"`
-       CustomField35    string `json:"custom_field_35" gorm:"type:text"`
-       CustomField36    string `json:"custom_field_36" gorm:"type:text"`
-       CustomField37    string `json:"custom_field_37" gorm:"type:text"`
-       CustomField38    string `json:"custom_field_38" gorm:"type:text"`
-       CustomField39    string `json:"custom_field_39" gorm:"type:text"`
-       CustomField40    string `json:"custom_field_40" gorm:"type:text"`
-       CustomField41    string `json:"custom_field_41" gorm:"type:text"`
-       CustomField42    string `json:"custom_field_42" gorm:"type:text"`
-       CustomField43    string `json:"custom_field_43" gorm:"type:text"`
-       CustomField44    string `json:"custom_field_44" gorm:"type:text"`
-       CustomField45    string `json:"custom_field_45" gorm:"type:text"`
-       CustomField46    string `json:"custom_field_46" gorm:"type:text"`
-       CustomField47    string `json:"custom_field_47" gorm:"type:text"`
-       CustomField48    string `json:"custom_field_48" gorm:"type:text"`
-       CustomField49    string `json:"custom_field_49" gorm:"type:text"`
-       CustomField50    string `json:"custom_field_50" gorm:"type:text"`
+       CustomField9     string `json:"custom_field_9" 
gorm:"type:text;column:custom_field_9"`
+       CustomField10    string `json:"custom_field_10" 
gorm:"type:text;column:custom_field_10"`
+       CustomField11    string `json:"custom_field_11" 
gorm:"type:text;column:custom_field_11"`
+       CustomField12    string `json:"custom_field_12" 
gorm:"type:text;column:custom_field_12"`
+       CustomField13    string `json:"custom_field_13" 
gorm:"type:text;column:custom_field_13"`
+       CustomField14    string `json:"custom_field_14" 
gorm:"type:text;column:custom_field_14"`
+       CustomField15    string `json:"custom_field_15" 
gorm:"type:text;column:custom_field_15"`
+       CustomField16    string `json:"custom_field_16" 
gorm:"type:text;column:custom_field_16"`
+       CustomField17    string `json:"custom_field_17" 
gorm:"type:text;column:custom_field_17"`
+       CustomField18    string `json:"custom_field_18" 
gorm:"type:text;column:custom_field_18"`
+       CustomField19    string `json:"custom_field_19" 
gorm:"type:text;column:custom_field_19"`
+       CustomField20    string `json:"custom_field_20" 
gorm:"type:text;column:custom_field_20"`
+       CustomField21    string `json:"custom_field_21" 
gorm:"type:text;column:custom_field_21"`
+       CustomField22    string `json:"custom_field_22" 
gorm:"type:text;column:custom_field_22"`
+       CustomField23    string `json:"custom_field_23" 
gorm:"type:text;column:custom_field_23"`
+       CustomField24    string `json:"custom_field_24" 
gorm:"type:text;column:custom_field_24"`
+       CustomField25    string `json:"custom_field_25" 
gorm:"type:text;column:custom_field_25"`
+       CustomField26    string `json:"custom_field_26" 
gorm:"type:text;column:custom_field_26"`
+       CustomField27    string `json:"custom_field_27" 
gorm:"type:text;column:custom_field_27"`
+       CustomField28    string `json:"custom_field_28" 
gorm:"type:text;column:custom_field_28"`
+       CustomField29    string `json:"custom_field_29" 
gorm:"type:text;column:custom_field_29"`
+       CustomField30    string `json:"custom_field_30" 
gorm:"type:text;column:custom_field_30"`
+       CustomField31    string `json:"custom_field_31" 
gorm:"type:text;column:custom_field_31"`
+       CustomField32    string `json:"custom_field_32" 
gorm:"type:text;column:custom_field_32"`
+       CustomField33    string `json:"custom_field_33" 
gorm:"type:text;column:custom_field_33"`
+       CustomField34    string `json:"custom_field_34" 
gorm:"type:text;column:custom_field_34"`
+       CustomField35    string `json:"custom_field_35" 
gorm:"type:text;column:custom_field_35"`
+       CustomField36    string `json:"custom_field_36" 
gorm:"type:text;column:custom_field_36"`
+       CustomField37    string `json:"custom_field_37" 
gorm:"type:text;column:custom_field_37"`
+       CustomField38    string `json:"custom_field_38" 
gorm:"type:text;column:custom_field_38"`
+       CustomField39    string `json:"custom_field_39" 
gorm:"type:text;column:custom_field_39"`
+       CustomField40    string `json:"custom_field_40" 
gorm:"type:text;column:custom_field_40"`
+       CustomField41    string `json:"custom_field_41" 
gorm:"type:text;column:custom_field_41"`
+       CustomField42    string `json:"custom_field_42" 
gorm:"type:text;column:custom_field_42"`
+       CustomField43    string `json:"custom_field_43" 
gorm:"type:text;column:custom_field_43"`
+       CustomField44    string `json:"custom_field_44" 
gorm:"type:text;column:custom_field_44"`
+       CustomField45    string `json:"custom_field_45" 
gorm:"type:text;column:custom_field_45"`
+       CustomField46    string `json:"custom_field_46" 
gorm:"type:text;column:custom_field_46"`
+       CustomField47    string `json:"custom_field_47" 
gorm:"type:text;column:custom_field_47"`
+       CustomField48    string `json:"custom_field_48" 
gorm:"type:text;column:custom_field_48"`
+       CustomField49    string `json:"custom_field_49" 
gorm:"type:text;column:custom_field_49"`
+       CustomField50    string `json:"custom_field_50" 
gorm:"type:text;column:custom_field_50"`
 
        common.NoPKModel
 }
diff --git a/backend/plugins/tapd/models/task.go 
b/backend/plugins/tapd/models/task.go
index 05bb03ba2..bd9f70852 100644
--- a/backend/plugins/tapd/models/task.go
+++ b/backend/plugins/tapd/models/task.go
@@ -67,48 +67,48 @@ type TapdTask struct {
        CustomField6     string `json:"custom_field_six" gorm:"type:text"`
        CustomField7     string `json:"custom_field_seven" gorm:"type:text"`
        CustomField8     string `json:"custom_field_eight" gorm:"type:text"`
-       CustomField9     string `json:"custom_field_9" gorm:"type:text"`
-       CustomField10    string `json:"custom_field_10" gorm:"type:text"`
-       CustomField11    string `json:"custom_field_11" gorm:"type:text"`
-       CustomField12    string `json:"custom_field_12" gorm:"type:text"`
-       CustomField13    string `json:"custom_field_13" gorm:"type:text"`
-       CustomField14    string `json:"custom_field_14" gorm:"type:text"`
-       CustomField15    string `json:"custom_field_15" gorm:"type:text"`
-       CustomField16    string `json:"custom_field_16" gorm:"type:text"`
-       CustomField17    string `json:"custom_field_17" gorm:"type:text"`
-       CustomField18    string `json:"custom_field_18" gorm:"type:text"`
-       CustomField19    string `json:"custom_field_19" gorm:"type:text"`
-       CustomField20    string `json:"custom_field_20" gorm:"type:text"`
-       CustomField21    string `json:"custom_field_21" gorm:"type:text"`
-       CustomField22    string `json:"custom_field_22" gorm:"type:text"`
-       CustomField23    string `json:"custom_field_23" gorm:"type:text"`
-       CustomField24    string `json:"custom_field_24" gorm:"type:text"`
-       CustomField25    string `json:"custom_field_25" gorm:"type:text"`
-       CustomField26    string `json:"custom_field_26" gorm:"type:text"`
-       CustomField27    string `json:"custom_field_27" gorm:"type:text"`
-       CustomField28    string `json:"custom_field_28" gorm:"type:text"`
-       CustomField29    string `json:"custom_field_29" gorm:"type:text"`
-       CustomField30    string `json:"custom_field_30" gorm:"type:text"`
-       CustomField31    string `json:"custom_field_31" gorm:"type:text"`
-       CustomField32    string `json:"custom_field_32" gorm:"type:text"`
-       CustomField33    string `json:"custom_field_33" gorm:"type:text"`
-       CustomField34    string `json:"custom_field_34" gorm:"type:text"`
-       CustomField35    string `json:"custom_field_35" gorm:"type:text"`
-       CustomField36    string `json:"custom_field_36" gorm:"type:text"`
-       CustomField37    string `json:"custom_field_37" gorm:"type:text"`
-       CustomField38    string `json:"custom_field_38" gorm:"type:text"`
-       CustomField39    string `json:"custom_field_39" gorm:"type:text"`
-       CustomField40    string `json:"custom_field_40" gorm:"type:text"`
-       CustomField41    string `json:"custom_field_41" gorm:"type:text"`
-       CustomField42    string `json:"custom_field_42" gorm:"type:text"`
-       CustomField43    string `json:"custom_field_43" gorm:"type:text"`
-       CustomField44    string `json:"custom_field_44" gorm:"type:text"`
-       CustomField45    string `json:"custom_field_45" gorm:"type:text"`
-       CustomField46    string `json:"custom_field_46" gorm:"type:text"`
-       CustomField47    string `json:"custom_field_47" gorm:"type:text"`
-       CustomField48    string `json:"custom_field_48" gorm:"type:text"`
-       CustomField49    string `json:"custom_field_49" gorm:"type:text"`
-       CustomField50    string `json:"custom_field_50" gorm:"type:text"`
+       CustomField9     string `json:"custom_field_9" 
gorm:"type:text;column:custom_field_9"`
+       CustomField10    string `json:"custom_field_10" 
gorm:"type:text;column:custom_field_10"`
+       CustomField11    string `json:"custom_field_11" 
gorm:"type:text;column:custom_field_11"`
+       CustomField12    string `json:"custom_field_12" 
gorm:"type:text;column:custom_field_12"`
+       CustomField13    string `json:"custom_field_13" 
gorm:"type:text;column:custom_field_13"`
+       CustomField14    string `json:"custom_field_14" 
gorm:"type:text;column:custom_field_14"`
+       CustomField15    string `json:"custom_field_15" 
gorm:"type:text;column:custom_field_15"`
+       CustomField16    string `json:"custom_field_16" 
gorm:"type:text;column:custom_field_16"`
+       CustomField17    string `json:"custom_field_17" 
gorm:"type:text;column:custom_field_17"`
+       CustomField18    string `json:"custom_field_18" 
gorm:"type:text;column:custom_field_18"`
+       CustomField19    string `json:"custom_field_19" 
gorm:"type:text;column:custom_field_19"`
+       CustomField20    string `json:"custom_field_20" 
gorm:"type:text;column:custom_field_20"`
+       CustomField21    string `json:"custom_field_21" 
gorm:"type:text;column:custom_field_21"`
+       CustomField22    string `json:"custom_field_22" 
gorm:"type:text;column:custom_field_22"`
+       CustomField23    string `json:"custom_field_23" 
gorm:"type:text;column:custom_field_23"`
+       CustomField24    string `json:"custom_field_24" 
gorm:"type:text;column:custom_field_24"`
+       CustomField25    string `json:"custom_field_25" 
gorm:"type:text;column:custom_field_25"`
+       CustomField26    string `json:"custom_field_26" 
gorm:"type:text;column:custom_field_26"`
+       CustomField27    string `json:"custom_field_27" 
gorm:"type:text;column:custom_field_27"`
+       CustomField28    string `json:"custom_field_28" 
gorm:"type:text;column:custom_field_28"`
+       CustomField29    string `json:"custom_field_29" 
gorm:"type:text;column:custom_field_29"`
+       CustomField30    string `json:"custom_field_30" 
gorm:"type:text;column:custom_field_30"`
+       CustomField31    string `json:"custom_field_31" 
gorm:"type:text;column:custom_field_31"`
+       CustomField32    string `json:"custom_field_32" 
gorm:"type:text;column:custom_field_32"`
+       CustomField33    string `json:"custom_field_33" 
gorm:"type:text;column:custom_field_33"`
+       CustomField34    string `json:"custom_field_34" 
gorm:"type:text;column:custom_field_34"`
+       CustomField35    string `json:"custom_field_35" 
gorm:"type:text;column:custom_field_35"`
+       CustomField36    string `json:"custom_field_36" 
gorm:"type:text;column:custom_field_36"`
+       CustomField37    string `json:"custom_field_37" 
gorm:"type:text;column:custom_field_37"`
+       CustomField38    string `json:"custom_field_38" 
gorm:"type:text;column:custom_field_38"`
+       CustomField39    string `json:"custom_field_39" 
gorm:"type:text;column:custom_field_39"`
+       CustomField40    string `json:"custom_field_40" 
gorm:"type:text;column:custom_field_40"`
+       CustomField41    string `json:"custom_field_41" 
gorm:"type:text;column:custom_field_41"`
+       CustomField42    string `json:"custom_field_42" 
gorm:"type:text;column:custom_field_42"`
+       CustomField43    string `json:"custom_field_43" 
gorm:"type:text;column:custom_field_43"`
+       CustomField44    string `json:"custom_field_44" 
gorm:"type:text;column:custom_field_44"`
+       CustomField45    string `json:"custom_field_45" 
gorm:"type:text;column:custom_field_45"`
+       CustomField46    string `json:"custom_field_46" 
gorm:"type:text;column:custom_field_46"`
+       CustomField47    string `json:"custom_field_47" 
gorm:"type:text;column:custom_field_47"`
+       CustomField48    string `json:"custom_field_48" 
gorm:"type:text;column:custom_field_48"`
+       CustomField49    string `json:"custom_field_49" 
gorm:"type:text;column:custom_field_49"`
+       CustomField50    string `json:"custom_field_50" 
gorm:"type:text;column:custom_field_50"`
        common.NoPKModel
 }
 


Reply via email to