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

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

commit f36dbbbf6c7fb733ed47ffb3d8c2e1ac78672182
Author: dunyu.song <[email protected]>
AuthorDate: Fri May 20 19:05:45 2022 +0800

    fixed code not found in reference
    
    fixed: fixed code not found in reference and moves test file to helper
---
 plugins/github/tasks/comment_extractor.go          |   7 +-
 plugins/github/tasks/commit_extractor.go           |   5 +-
 plugins/github/tasks/commit_stats_extractor.go     |   3 +-
 plugins/github/tasks/event_extractor.go            |   3 +-
 plugins/github/tasks/issue_extractor.go            |  11 +-
 plugins/github/tasks/pr_commit_extractor.go        |   7 +-
 plugins/github/tasks/pr_extractor.go               |  14 +--
 plugins/github/tasks/pr_review_extractor.go        |   5 +-
 plugins/github/tasks/repositorie_extractor.go      |   8 +-
 plugins/gitlab/tasks/commit_collector.go           |  16 +--
 plugins/gitlab/tasks/mr_extractor.go               |  24 ++---
 plugins/gitlab/tasks/mr_note_extractor.go          |   3 +-
 plugins/gitlab/tasks/pipeline_extractor.go         |  24 ++---
 plugins/gitlab/tasks/project_collector.go          |  12 +--
 plugins/gitlab/tasks/project_convertor.go          |   2 +-
 plugins/helper/config_util_test.go                 |   3 +-
 plugins/{core => helper}/cst_time_test.go          |   2 +-
 plugins/{core => helper}/iso8601time_test.go       |   2 +-
 plugins/jira/tasks/apiv2models/changelog.go        |  12 +--
 plugins/jira/tasks/apiv2models/issue.go            |  31 +++---
 plugins/jira/tasks/apiv2models/worklog.go          |  24 ++---
 plugins/tapd/models/bug.go                         | 116 ++++++++++-----------
 plugins/tapd/models/bug_changelog.go               |  22 ++--
 plugins/tapd/models/bug_commit.go                  |  14 +--
 plugins/tapd/models/iteration.go                   |  36 +++----
 plugins/tapd/models/iteration_bug.go               |   6 +-
 plugins/tapd/models/iteration_story.go             |   6 +-
 plugins/tapd/models/iteration_task.go              |   6 +-
 .../tapd/models/migrationscripts/archived/bug.go   | 116 ++++++++++-----------
 .../migrationscripts/archived/bug_changelog.go     |  22 ++--
 .../models/migrationscripts/archived/bug_commit.go |  14 +--
 .../models/migrationscripts/archived/iteration.go  |  40 +++----
 .../migrationscripts/archived/iteration_bug.go     |   6 +-
 .../migrationscripts/archived/iteration_story.go   |   6 +-
 .../migrationscripts/archived/iteration_task.go    |   6 +-
 .../tapd/models/migrationscripts/archived/story.go |  80 +++++++-------
 .../migrationscripts/archived/story_changelog.go   |  24 ++---
 .../migrationscripts/archived/story_commits.go     |  14 +--
 .../tapd/models/migrationscripts/archived/task.go  |  42 ++++----
 .../migrationscripts/archived/task_changelog.go    |  26 ++---
 .../migrationscripts/archived/task_commits.go      |  14 +--
 .../models/migrationscripts/archived/worklog.go    |  22 ++--
 .../models/migrationscripts/archived/workspace.go  |  26 ++---
 plugins/tapd/models/story.go                       |  80 +++++++-------
 plugins/tapd/models/story_changelog.go             |  25 ++---
 plugins/tapd/models/story_commits.go               |  14 +--
 plugins/tapd/models/task.go                        |  42 ++++----
 plugins/tapd/models/task_changelog.go              |  27 ++---
 plugins/tapd/models/task_commits.go                |  14 +--
 plugins/tapd/models/worklog.go                     |  22 ++--
 plugins/tapd/models/workspace.go                   |  26 ++---
 51 files changed, 572 insertions(+), 560 deletions(-)

diff --git a/plugins/github/tasks/comment_extractor.go 
b/plugins/github/tasks/comment_extractor.go
index 00079e25..07551c1b 100644
--- a/plugins/github/tasks/comment_extractor.go
+++ b/plugins/github/tasks/comment_extractor.go
@@ -2,6 +2,7 @@ package tasks
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/github/models"
        githubUtils "github.com/merico-dev/lake/plugins/github/utils"
@@ -23,9 +24,9 @@ type IssueComment struct {
                Login string
                Id    int
        }
-       IssueUrl        string           `json:"issue_url"`
-       GithubCreatedAt core.Iso8601Time `json:"created_at"`
-       GithubUpdatedAt core.Iso8601Time `json:"updated_at"`
+       IssueUrl        string             `json:"issue_url"`
+       GithubCreatedAt helper.Iso8601Time `json:"created_at"`
+       GithubUpdatedAt helper.Iso8601Time `json:"updated_at"`
 }
 
 func ExtractApiComments(taskCtx core.SubTaskContext) error {
diff --git a/plugins/github/tasks/commit_extractor.go 
b/plugins/github/tasks/commit_extractor.go
index 53670254..9f74d289 100644
--- a/plugins/github/tasks/commit_extractor.go
+++ b/plugins/github/tasks/commit_extractor.go
@@ -2,6 +2,7 @@ package tasks
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/github/models"
        "github.com/merico-dev/lake/plugins/helper"
@@ -26,12 +27,12 @@ type Commit struct {
        Author struct {
                Name  string
                Email string
-               Date  core.Iso8601Time
+               Date  helper.Iso8601Time
        }
        Committer struct {
                Name  string
                Email string
-               Date  core.Iso8601Time
+               Date  helper.Iso8601Time
        }
        Message string
 }
diff --git a/plugins/github/tasks/commit_stats_extractor.go 
b/plugins/github/tasks/commit_stats_extractor.go
index e0be6450..8736cfde 100644
--- a/plugins/github/tasks/commit_stats_extractor.go
+++ b/plugins/github/tasks/commit_stats_extractor.go
@@ -2,6 +2,7 @@ package tasks
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/github/models"
        "github.com/merico-dev/lake/plugins/helper"
@@ -24,7 +25,7 @@ type ApiSingleCommitResponse struct {
                Committer struct {
                        Name  string
                        Email string
-                       Date  core.Iso8601Time
+                       Date  helper.Iso8601Time
                }
        }
 }
diff --git a/plugins/github/tasks/event_extractor.go 
b/plugins/github/tasks/event_extractor.go
index d6be8ec6..45102244 100644
--- a/plugins/github/tasks/event_extractor.go
+++ b/plugins/github/tasks/event_extractor.go
@@ -2,6 +2,7 @@ package tasks
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/github/models"
        "github.com/merico-dev/lake/plugins/helper"
@@ -23,7 +24,7 @@ type IssueEvent struct {
        Issue struct {
                Id int
        }
-       GithubCreatedAt core.Iso8601Time `json:"created_at"`
+       GithubCreatedAt helper.Iso8601Time `json:"created_at"`
 }
 
 func ExtractApiEvents(taskCtx core.SubTaskContext) error {
diff --git a/plugins/github/tasks/issue_extractor.go 
b/plugins/github/tasks/issue_extractor.go
index aa32bff3..2cd8280f 100644
--- a/plugins/github/tasks/issue_extractor.go
+++ b/plugins/github/tasks/issue_extractor.go
@@ -2,9 +2,10 @@ package tasks
 
 import (
        "encoding/json"
-       "github.com/merico-dev/lake/models/domainlayer/ticket"
        "regexp"
 
+       "github.com/merico-dev/lake/models/domainlayer/ticket"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/github/models"
        "github.com/merico-dev/lake/plugins/helper"
@@ -36,9 +37,9 @@ type IssuesResponse struct {
                Login string
                Id    int
        }
-       ClosedAt        *core.Iso8601Time `json:"closed_at"`
-       GithubCreatedAt core.Iso8601Time  `json:"created_at"`
-       GithubUpdatedAt core.Iso8601Time  `json:"updated_at"`
+       ClosedAt        *helper.Iso8601Time `json:"closed_at"`
+       GithubCreatedAt helper.Iso8601Time  `json:"created_at"`
+       GithubUpdatedAt helper.Iso8601Time  `json:"updated_at"`
 }
 
 func ExtractApiIssues(taskCtx core.SubTaskContext) error {
@@ -193,7 +194,7 @@ func convertGithubIssue(issue *IssuesResponse, repositoryId 
int) (*models.Github
                Title:           issue.Title,
                Body:            issue.Body,
                Url:             issue.HtmlUrl,
-               ClosedAt:        core.Iso8601TimeToTime(issue.ClosedAt),
+               ClosedAt:        helper.Iso8601TimeToTime(issue.ClosedAt),
                GithubCreatedAt: issue.GithubCreatedAt.ToTime(),
                GithubUpdatedAt: issue.GithubUpdatedAt.ToTime(),
        }
diff --git a/plugins/github/tasks/pr_commit_extractor.go 
b/plugins/github/tasks/pr_commit_extractor.go
index feb7323f..6ee35801 100644
--- a/plugins/github/tasks/pr_commit_extractor.go
+++ b/plugins/github/tasks/pr_commit_extractor.go
@@ -2,9 +2,10 @@ package tasks
 
 import (
        "encoding/json"
-       "github.com/merico-dev/lake/plugins/github/models"
        "strings"
 
+       "github.com/merico-dev/lake/plugins/github/models"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/helper"
 )
@@ -27,12 +28,12 @@ type PullRequestCommit struct {
                Id    int
                Name  string
                Email string
-               Date  core.Iso8601Time
+               Date  helper.Iso8601Time
        }
        Committer struct {
                Name  string
                Email string
-               Date  core.Iso8601Time
+               Date  helper.Iso8601Time
        }
        Message string
 }
diff --git a/plugins/github/tasks/pr_extractor.go 
b/plugins/github/tasks/pr_extractor.go
index 4c948b46..0fd65542 100644
--- a/plugins/github/tasks/pr_extractor.go
+++ b/plugins/github/tasks/pr_extractor.go
@@ -34,11 +34,11 @@ type GithubApiPullRequest struct {
                Id    int
                Login string
        }
-       ClosedAt        *core.Iso8601Time `json:"closed_at"`
-       MergedAt        *core.Iso8601Time `json:"merged_at"`
-       GithubCreatedAt core.Iso8601Time  `json:"created_at"`
-       GithubUpdatedAt core.Iso8601Time  `json:"updated_at"`
-       MergeCommitSha  string            `json:"merge_commit_sha"`
+       ClosedAt        *helper.Iso8601Time `json:"closed_at"`
+       MergedAt        *helper.Iso8601Time `json:"merged_at"`
+       GithubCreatedAt helper.Iso8601Time  `json:"created_at"`
+       GithubUpdatedAt helper.Iso8601Time  `json:"updated_at"`
+       MergeCommitSha  string              `json:"merge_commit_sha"`
        Head            struct {
                Ref string
                Sha string
@@ -146,8 +146,8 @@ func convertGithubPullRequest(pull *GithubApiPullRequest, 
repoId int) (*models.G
                AuthorId:        pull.User.Id,
                GithubCreatedAt: pull.GithubCreatedAt.ToTime(),
                GithubUpdatedAt: pull.GithubUpdatedAt.ToTime(),
-               ClosedAt:        core.Iso8601TimeToTime(pull.ClosedAt),
-               MergedAt:        core.Iso8601TimeToTime(pull.MergedAt),
+               ClosedAt:        helper.Iso8601TimeToTime(pull.ClosedAt),
+               MergedAt:        helper.Iso8601TimeToTime(pull.MergedAt),
                MergeCommitSha:  pull.MergeCommitSha,
                Body:            string(pull.Body),
                BaseRef:         pull.Base.Ref,
diff --git a/plugins/github/tasks/pr_review_extractor.go 
b/plugins/github/tasks/pr_review_extractor.go
index e7e88dd9..1ca70ca3 100644
--- a/plugins/github/tasks/pr_review_extractor.go
+++ b/plugins/github/tasks/pr_review_extractor.go
@@ -2,9 +2,10 @@ package tasks
 
 import (
        "encoding/json"
-       "github.com/merico-dev/lake/plugins/github/models"
        "strings"
 
+       "github.com/merico-dev/lake/plugins/github/models"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/helper"
 )
@@ -24,7 +25,7 @@ type PullRequestReview struct {
        }
        Body        string
        State       string
-       SubmittedAt core.Iso8601Time `json:"submitted_at"`
+       SubmittedAt helper.Iso8601Time `json:"submitted_at"`
 }
 
 func ExtractApiPullRequestReviews(taskCtx core.SubTaskContext) error {
diff --git a/plugins/github/tasks/repositorie_extractor.go 
b/plugins/github/tasks/repositorie_extractor.go
index 9025b751..40f83f18 100644
--- a/plugins/github/tasks/repositorie_extractor.go
+++ b/plugins/github/tasks/repositorie_extractor.go
@@ -25,9 +25,9 @@ type GithubApiRepo struct {
        Language    string `json:"language"`
        Description string `json:"description"`
        Owner       models.GithubUser
-       Parent      *GithubApiRepo    `json:"parent"`
-       CreatedAt   core.Iso8601Time  `json:"created_at"`
-       UpdatedAt   *core.Iso8601Time `json:"updated_at"`
+       Parent      *GithubApiRepo      `json:"parent"`
+       CreatedAt   helper.Iso8601Time  `json:"created_at"`
+       UpdatedAt   *helper.Iso8601Time `json:"updated_at"`
 }
 
 func ExtractApiRepositories(taskCtx core.SubTaskContext) error {
@@ -67,7 +67,7 @@ func ExtractApiRepositories(taskCtx core.SubTaskContext) 
error {
                                OwnerLogin:  body.Owner.Login,
                                Language:    body.Language,
                                CreatedDate: body.CreatedAt.ToTime(),
-                               UpdatedDate: 
core.Iso8601TimeToTime(body.UpdatedAt),
+                               UpdatedDate: 
helper.Iso8601TimeToTime(body.UpdatedAt),
                        }
                        data.Repo = githubRepository
 
diff --git a/plugins/gitlab/tasks/commit_collector.go 
b/plugins/gitlab/tasks/commit_collector.go
index 265b3a17..dc793f96 100644
--- a/plugins/gitlab/tasks/commit_collector.go
+++ b/plugins/gitlab/tasks/commit_collector.go
@@ -19,14 +19,14 @@ type GitlabApiCommit struct {
        Title          string
        Message        string
        ProjectId      int
-       ShortId        string           `json:"short_id"`
-       AuthorName     string           `json:"author_name"`
-       AuthorEmail    string           `json:"author_email"`
-       AuthoredDate   core.Iso8601Time `json:"authored_date"`
-       CommitterName  string           `json:"committer_name"`
-       CommitterEmail string           `json:"committer_email"`
-       CommittedDate  core.Iso8601Time `json:"committed_date"`
-       WebUrl         string           `json:"web_url"`
+       ShortId        string             `json:"short_id"`
+       AuthorName     string             `json:"author_name"`
+       AuthorEmail    string             `json:"author_email"`
+       AuthoredDate   helper.Iso8601Time `json:"authored_date"`
+       CommitterName  string             `json:"committer_name"`
+       CommitterEmail string             `json:"committer_email"`
+       CommittedDate  helper.Iso8601Time `json:"committed_date"`
+       WebUrl         string             `json:"web_url"`
        Stats          struct {
                Additions int
                Deletions int
diff --git a/plugins/gitlab/tasks/mr_extractor.go 
b/plugins/gitlab/tasks/mr_extractor.go
index ea0abd12..455fbb42 100644
--- a/plugins/gitlab/tasks/mr_extractor.go
+++ b/plugins/gitlab/tasks/mr_extractor.go
@@ -17,15 +17,15 @@ type MergeRequestRes struct {
        State           string
        Title           string
        Description     string
-       WebUrl          string            `json:"web_url"`
-       UserNotesCount  int               `json:"user_notes_count"`
-       WorkInProgress  bool              `json:"work_in_progress"`
-       SourceBranch    string            `json:"source_branch"`
-       TargetBranch    string            `json:"target_branch"`
-       GitlabCreatedAt core.Iso8601Time  `json:"created_at"`
-       MergedAt        *core.Iso8601Time `json:"merged_at"`
-       ClosedAt        *core.Iso8601Time `json:"closed_at"`
-       MergeCommitSha  string            `json:"merge_commit_sha"`
+       WebUrl          string              `json:"web_url"`
+       UserNotesCount  int                 `json:"user_notes_count"`
+       WorkInProgress  bool                `json:"work_in_progress"`
+       SourceBranch    string              `json:"source_branch"`
+       TargetBranch    string              `json:"target_branch"`
+       GitlabCreatedAt helper.Iso8601Time  `json:"created_at"`
+       MergedAt        *helper.Iso8601Time `json:"merged_at"`
+       ClosedAt        *helper.Iso8601Time `json:"closed_at"`
+       MergeCommitSha  string              `json:"merge_commit_sha"`
        MergedBy        struct {
                Username string `json:"username"`
        } `json:"merged_by"`
@@ -34,7 +34,7 @@ type MergeRequestRes struct {
                Username string `json:"username"`
        }
        Reviewers        []Reviewer
-       FirstCommentTime core.Iso8601Time
+       FirstCommentTime helper.Iso8601Time
 }
 
 type Reviewer struct {
@@ -115,9 +115,9 @@ func convertMergeRequest(mr *MergeRequestRes) 
(*models.GitlabMergeRequest, error
                SourceBranch:     mr.SourceBranch,
                TargetBranch:     mr.TargetBranch,
                MergeCommitSha:   mr.MergeCommitSha,
-               MergedAt:         core.Iso8601TimeToTime(mr.MergedAt),
+               MergedAt:         helper.Iso8601TimeToTime(mr.MergedAt),
                GitlabCreatedAt:  mr.GitlabCreatedAt.ToTime(),
-               ClosedAt:         core.Iso8601TimeToTime(mr.ClosedAt),
+               ClosedAt:         helper.Iso8601TimeToTime(mr.ClosedAt),
                MergedByUsername: mr.MergedBy.Username,
                AuthorUsername:   mr.Author.Username,
                AuthorUserId:     mr.Author.Id,
diff --git a/plugins/gitlab/tasks/mr_note_extractor.go 
b/plugins/gitlab/tasks/mr_note_extractor.go
index 7b973535..71440ed9 100644
--- a/plugins/gitlab/tasks/mr_note_extractor.go
+++ b/plugins/gitlab/tasks/mr_note_extractor.go
@@ -2,6 +2,7 @@ package tasks
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/plugins/core"
        "github.com/merico-dev/lake/plugins/gitlab/models"
        "github.com/merico-dev/lake/plugins/helper"
@@ -13,7 +14,7 @@ type MergeRequestNote struct {
        MergeRequestIid int    `json:"noteable_iid"`
        NoteableType    string `json:"noteable_type"`
        Body            string
-       GitlabCreatedAt core.Iso8601Time `json:"created_at"`
+       GitlabCreatedAt helper.Iso8601Time `json:"created_at"`
        Confidential    bool
        Resolvable      bool `json:"resolvable"`
        System          bool `json:"system"`
diff --git a/plugins/gitlab/tasks/pipeline_extractor.go 
b/plugins/gitlab/tasks/pipeline_extractor.go
index 60dd5e57..53d062a1 100644
--- a/plugins/gitlab/tasks/pipeline_extractor.go
+++ b/plugins/gitlab/tasks/pipeline_extractor.go
@@ -9,10 +9,10 @@ import (
 )
 
 type ApiPipeline struct {
-       GitlabId        int               `json:"id"`
-       ProjectId       int               `json:"project_id"`
-       GitlabCreatedAt *core.Iso8601Time `json:"created_at"`
-       UpdatedAt       *core.Iso8601Time `json:"updated_at"`
+       GitlabId        int                 `json:"id"`
+       ProjectId       int                 `json:"project_id"`
+       GitlabCreatedAt *helper.Iso8601Time `json:"created_at"`
+       UpdatedAt       *helper.Iso8601Time `json:"updated_at"`
        Ref             string
        Sha             string
        Duration        int
@@ -21,14 +21,14 @@ type ApiPipeline struct {
 }
 
 type ApiSinglePipelineResponse struct {
-       GitlabId        int               `json:"id"`
-       ProjectId       int               `json:"project_id"`
-       GitlabCreatedAt *core.Iso8601Time `json:"created_at"`
+       GitlabId        int                 `json:"id"`
+       ProjectId       int                 `json:"project_id"`
+       GitlabCreatedAt *helper.Iso8601Time `json:"created_at"`
        Ref             string
        Sha             string
        WebUrl          string `json:"web_url"`
        Duration        int
-       UpdatedAt       *core.Iso8601Time `json:"updated_at"`
+       UpdatedAt       *helper.Iso8601Time `json:"updated_at"`
        Coverage        string
        Status          string
 }
@@ -127,8 +127,8 @@ func convertSinglePipeline(pipeline 
*ApiSinglePipelineResponse) (*models.GitlabP
                Sha:             pipeline.Sha,
                WebUrl:          pipeline.WebUrl,
                Duration:        pipeline.Duration,
-               StartedAt:       
core.Iso8601TimeToTime(pipeline.GitlabCreatedAt),
-               FinishedAt:      core.Iso8601TimeToTime(pipeline.UpdatedAt),
+               StartedAt:       
helper.Iso8601TimeToTime(pipeline.GitlabCreatedAt),
+               FinishedAt:      helper.Iso8601TimeToTime(pipeline.UpdatedAt),
                Coverage:        pipeline.Coverage,
                Status:          pipeline.Status,
        }
@@ -144,8 +144,8 @@ func convertPipeline(pipeline *ApiPipeline) 
(*models.GitlabPipeline, error) {
                Sha:             pipeline.Sha,
                WebUrl:          pipeline.WebUrl,
                Status:          pipeline.Status,
-               StartedAt:       
core.Iso8601TimeToTime(pipeline.GitlabCreatedAt),
-               FinishedAt:      core.Iso8601TimeToTime(pipeline.UpdatedAt),
+               StartedAt:       
helper.Iso8601TimeToTime(pipeline.GitlabCreatedAt),
+               FinishedAt:      helper.Iso8601TimeToTime(pipeline.UpdatedAt),
                Duration:        pipeline.Duration,
        }
        return gitlabPipeline, nil
diff --git a/plugins/gitlab/tasks/project_collector.go 
b/plugins/gitlab/tasks/project_collector.go
index ff5ab3f5..9e0f8ed8 100644
--- a/plugins/gitlab/tasks/project_collector.go
+++ b/plugins/gitlab/tasks/project_collector.go
@@ -15,12 +15,12 @@ type GitlabApiProject struct {
        PathWithNamespace string `json:"path_with_namespace"`
        WebUrl            string `json:"web_url"`
        CreatorId         int
-       Visibility        string            `json:"visibility"`
-       OpenIssuesCount   int               `json:"open_issues_count"`
-       StarCount         int               `json:"star_count"`
-       ForkedFromProject *GitlabApiProject `json:"forked_from_project"`
-       CreatedAt         core.Iso8601Time  `json:"created_at"`
-       LastActivityAt    *core.Iso8601Time `json:"last_activity_at"`
+       Visibility        string              `json:"visibility"`
+       OpenIssuesCount   int                 `json:"open_issues_count"`
+       StarCount         int                 `json:"star_count"`
+       ForkedFromProject *GitlabApiProject   `json:"forked_from_project"`
+       CreatedAt         helper.Iso8601Time  `json:"created_at"`
+       LastActivityAt    *helper.Iso8601Time `json:"last_activity_at"`
 }
 
 var CollectProjectMeta = core.SubTaskMeta{
diff --git a/plugins/gitlab/tasks/project_convertor.go 
b/plugins/gitlab/tasks/project_convertor.go
index 308a147c..ef111cc3 100644
--- a/plugins/gitlab/tasks/project_convertor.go
+++ b/plugins/gitlab/tasks/project_convertor.go
@@ -66,7 +66,7 @@ func convertProject(gitlabApiProject *GitlabApiProject) 
*models.GitlabProject {
                OpenIssuesCount:   gitlabApiProject.OpenIssuesCount,
                StarCount:         gitlabApiProject.StarCount,
                CreatedDate:       gitlabApiProject.CreatedAt.ToTime(),
-               UpdatedDate:       
core.Iso8601TimeToTime(gitlabApiProject.LastActivityAt),
+               UpdatedDate:       
helper.Iso8601TimeToTime(gitlabApiProject.LastActivityAt),
        }
        if gitlabApiProject.ForkedFromProject != nil {
                gitlabProject.ForkedFromProjectId = 
gitlabApiProject.ForkedFromProject.GitlabId
diff --git a/plugins/helper/config_util_test.go 
b/plugins/helper/config_util_test.go
index 61fbc36e..e21690d7 100644
--- a/plugins/helper/config_util_test.go
+++ b/plugins/helper/config_util_test.go
@@ -1,9 +1,10 @@
 package helper
 
 import (
-       "github.com/merico-dev/lake/config"
        "testing"
 
+       "github.com/merico-dev/lake/config"
+
        "github.com/stretchr/testify/assert"
 )
 
diff --git a/plugins/core/cst_time_test.go b/plugins/helper/cst_time_test.go
similarity index 97%
rename from plugins/core/cst_time_test.go
rename to plugins/helper/cst_time_test.go
index 09e4db07..90dda19d 100644
--- a/plugins/core/cst_time_test.go
+++ b/plugins/helper/cst_time_test.go
@@ -1,4 +1,4 @@
-package core
+package helper
 
 import (
        "encoding/json"
diff --git a/plugins/core/iso8601time_test.go 
b/plugins/helper/iso8601time_test.go
similarity index 99%
rename from plugins/core/iso8601time_test.go
rename to plugins/helper/iso8601time_test.go
index 407d4eb3..5bcd7a3d 100644
--- a/plugins/core/iso8601time_test.go
+++ b/plugins/helper/iso8601time_test.go
@@ -1,4 +1,4 @@
-package core
+package helper
 
 import (
        "encoding/json"
diff --git a/plugins/jira/tasks/apiv2models/changelog.go 
b/plugins/jira/tasks/apiv2models/changelog.go
index 2d5fc76f..f27900e6 100644
--- a/plugins/jira/tasks/apiv2models/changelog.go
+++ b/plugins/jira/tasks/apiv2models/changelog.go
@@ -1,16 +1,16 @@
 package apiv2models
 
 import (
-       "github.com/merico-dev/lake/plugins/core"
-
        "github.com/merico-dev/lake/plugins/jira/models"
+
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type Changelog struct {
-       ID      uint64           `json:"id,string"`
-       Author  User             `json:"author"`
-       Created core.Iso8601Time `json:"created"`
-       Items   []ChangelogItem  `json:"items"`
+       ID      uint64             `json:"id,string"`
+       Author  User               `json:"author"`
+       Created helper.Iso8601Time `json:"created"`
+       Items   []ChangelogItem    `json:"items"`
 }
 
 func (c Changelog) ToToolLayer(connectionId, issueId uint64) 
(*models.JiraChangelog, *models.JiraUser) {
diff --git a/plugins/jira/tasks/apiv2models/issue.go 
b/plugins/jira/tasks/apiv2models/issue.go
index 22b61490..87b8b3c9 100644
--- a/plugins/jira/tasks/apiv2models/issue.go
+++ b/plugins/jira/tasks/apiv2models/issue.go
@@ -2,9 +2,10 @@ package apiv2models
 
 import (
        "encoding/json"
+
        "gorm.io/datatypes"
 
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 
        "github.com/merico-dev/lake/plugins/jira/models"
 )
@@ -45,18 +46,18 @@ type Issue struct {
                                Three2X32 string `json:"32x32"`
                        } `json:"avatarUrls"`
                } `json:"project"`
-               FixVersions        []interface{}     `json:"fixVersions"`
-               Aggregatetimespent interface{}       `json:"aggregatetimespent"`
-               Resolution         interface{}       `json:"resolution"`
-               Resolutiondate     *core.Iso8601Time `json:"resolutiondate"`
-               Workratio          int               `json:"workratio"`
-               LastViewed         string            `json:"lastViewed"`
+               FixVersions        []interface{}       `json:"fixVersions"`
+               Aggregatetimespent interface{}         
`json:"aggregatetimespent"`
+               Resolution         interface{}         `json:"resolution"`
+               Resolutiondate     *helper.Iso8601Time `json:"resolutiondate"`
+               Workratio          int                 `json:"workratio"`
+               LastViewed         string              `json:"lastViewed"`
                Watches            struct {
                        Self       string `json:"self"`
                        WatchCount int    `json:"watchCount"`
                        IsWatching bool   `json:"isWatching"`
                } `json:"watches"`
-               Created core.Iso8601Time `json:"created"`
+               Created helper.Iso8601Time `json:"created"`
                Epic    *struct {
                        ID      int    `json:"id"`
                        Key     string `json:"key"`
@@ -74,13 +75,13 @@ type Issue struct {
                        Name    string `json:"name"`
                        ID      uint64 `json:"id,string"`
                } `json:"priority"`
-               Labels                        []interface{}    `json:"labels"`
-               Timeestimate                  interface{}      
`json:"timeestimate"`
-               Aggregatetimeoriginalestimate interface{}      
`json:"aggregatetimeoriginalestimate"`
-               Versions                      []interface{}    `json:"versions"`
-               Issuelinks                    []interface{}    
`json:"issuelinks"`
-               Assignee                      *User            `json:"assignee"`
-               Updated                       core.Iso8601Time `json:"updated"`
+               Labels                        []interface{}      `json:"labels"`
+               Timeestimate                  interface{}        
`json:"timeestimate"`
+               Aggregatetimeoriginalestimate interface{}        
`json:"aggregatetimeoriginalestimate"`
+               Versions                      []interface{}      
`json:"versions"`
+               Issuelinks                    []interface{}      
`json:"issuelinks"`
+               Assignee                      *User              
`json:"assignee"`
+               Updated                       helper.Iso8601Time 
`json:"updated"`
                Status                        struct {
                        Self           string `json:"self"`
                        Description    string `json:"description"`
diff --git a/plugins/jira/tasks/apiv2models/worklog.go 
b/plugins/jira/tasks/apiv2models/worklog.go
index d919fc16..86aaee81 100644
--- a/plugins/jira/tasks/apiv2models/worklog.go
+++ b/plugins/jira/tasks/apiv2models/worklog.go
@@ -1,23 +1,23 @@
 package apiv2models
 
 import (
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 
        "github.com/merico-dev/lake/plugins/jira/models"
 )
 
 type Worklog struct {
-       Self             string           `json:"self"`
-       Author           *User            `json:"author"`
-       UpdateAuthor     *User            `json:"updateAuthor"`
-       Comment          string           `json:"comment"`
-       Created          string           `json:"created"`
-       Updated          core.Iso8601Time `json:"updated"`
-       Started          core.Iso8601Time `json:"started"`
-       TimeSpent        string           `json:"timeSpent"`
-       TimeSpentSeconds int              `json:"timeSpentSeconds"`
-       ID               string           `json:"id"`
-       IssueID          uint64           `json:"issueId,string"`
+       Self             string             `json:"self"`
+       Author           *User              `json:"author"`
+       UpdateAuthor     *User              `json:"updateAuthor"`
+       Comment          string             `json:"comment"`
+       Created          string             `json:"created"`
+       Updated          helper.Iso8601Time `json:"updated"`
+       Started          helper.Iso8601Time `json:"started"`
+       TimeSpent        string             `json:"timeSpent"`
+       TimeSpentSeconds int                `json:"timeSpentSeconds"`
+       ID               string             `json:"id"`
+       IssueID          uint64             `json:"issueId,string"`
 }
 
 func (w Worklog) ToToolLayer(connectionId uint64) *models.JiraWorklog {
diff --git a/plugins/tapd/models/bug.go b/plugins/tapd/models/bug.go
index da50914b..55f5e151 100644
--- a/plugins/tapd/models/bug.go
+++ b/plugins/tapd/models/bug.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBug struct {
@@ -11,65 +11,65 @@ type TapdBug struct {
        EpicKey      string
        Title        string `json:"name" gorm:"type:varchar(255)"`
        Description  string
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       Created      *core.CSTTime `json:"created"`
-       Modified     *core.CSTTime `json:"modified" gorm:"index"`
-       Status       string        `json:"status"`
-       Cc           string        `json:"cc"`
-       Begin        *core.CSTTime `json:"begin"`
-       Due          *core.CSTTime `json:"due"`
-       Priority     string        `json:"priority"`
-       IterationID  uint64        `json:"iteration_id,string"`
-       Source       string        `json:"source"`
-       Module       string        `json:"module"`
-       ReleaseID    uint64        `json:"release_id,string"`
-       CreatedFrom  string        `json:"created_from"`
-       Feature      string        `json:"feature"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       Created      *helper.CSTTime `json:"created"`
+       Modified     *helper.CSTTime `json:"modified" gorm:"index"`
+       Status       string          `json:"status"`
+       Cc           string          `json:"cc"`
+       Begin        *helper.CSTTime `json:"begin"`
+       Due          *helper.CSTTime `json:"due"`
+       Priority     string          `json:"priority"`
+       IterationID  uint64          `json:"iteration_id,string"`
+       Source       string          `json:"source"`
+       Module       string          `json:"module"`
+       ReleaseID    uint64          `json:"release_id,string"`
+       CreatedFrom  string          `json:"created_from"`
+       Feature      string          `json:"feature"`
        common.NoPKModel
 
-       Severity         string        `json:"severity"`
-       Reporter         string        `json:"reporter"`
-       Resolved         *core.CSTTime `json:"resolved"`
-       Closed           *core.CSTTime `json:"closed"`
-       Lastmodify       string        `json:"lastmodify"`
-       Auditer          string        `json:"auditer"`
-       De               string        `json:"De" 
gorm:"comment:developer;type:varchar(255)"`
-       Fixer            string        `json:"fixer"`
-       VersionTest      string        `json:"version_test"`
-       VersionReport    string        `json:"version_report"`
-       VersionClose     string        `json:"version_close"`
-       VersionFix       string        `json:"version_fix"`
-       BaselineFind     string        `json:"baseline_find"`
-       BaselineJoin     string        `json:"baseline_join"`
-       BaselineClose    string        `json:"baseline_close"`
-       BaselineTest     string        `json:"baseline_test"`
-       Sourcephase      string        `json:"sourcephase"`
-       Te               string        `json:"te"`
-       CurrentOwner     string        `json:"current_owner"`
-       Resolution       string        `json:"resolution"`
-       Originphase      string        `json:"originphase"`
-       Confirmer        string        `json:"confirmer"`
-       Participator     string        `json:"participator"`
-       Closer           string        `json:"closer"`
-       Platform         string        `json:"platform"`
-       Os               string        `json:"os"`
-       Testtype         string        `json:"testtype"`
-       Testphase        string        `json:"testphase"`
-       Frequency        string        `json:"frequency"`
-       RegressionNumber string        `json:"regression_number"`
-       Flows            string        `json:"flows"`
-       Testmode         string        `json:"testmode"`
-       IssueID          uint64        `json:"issue_id,string"`
-       VerifyTime       *core.CSTTime `json:"verify_time"`
-       RejectTime       *core.CSTTime `json:"reject_time"`
-       ReopenTime       *core.CSTTime `json:"reopen_time"`
-       AuditTime        *core.CSTTime `json:"audit_time"`
-       SuspendTime      *core.CSTTime `json:"suspend_time"`
-       Deadline         *core.CSTTime `json:"deadline"`
-       InProgressTime   *core.CSTTime `json:"in_progress_time"`
-       AssignedTime     *core.CSTTime `json:"assigned_time"`
-       TemplateID       uint64        `json:"template_id,string"`
-       StoryID          uint64        `json:"story_id,string"`
+       Severity         string          `json:"severity"`
+       Reporter         string          `json:"reporter"`
+       Resolved         *helper.CSTTime `json:"resolved"`
+       Closed           *helper.CSTTime `json:"closed"`
+       Lastmodify       string          `json:"lastmodify"`
+       Auditer          string          `json:"auditer"`
+       De               string          `json:"De" 
gorm:"comment:developer;type:varchar(255)"`
+       Fixer            string          `json:"fixer"`
+       VersionTest      string          `json:"version_test"`
+       VersionReport    string          `json:"version_report"`
+       VersionClose     string          `json:"version_close"`
+       VersionFix       string          `json:"version_fix"`
+       BaselineFind     string          `json:"baseline_find"`
+       BaselineJoin     string          `json:"baseline_join"`
+       BaselineClose    string          `json:"baseline_close"`
+       BaselineTest     string          `json:"baseline_test"`
+       Sourcephase      string          `json:"sourcephase"`
+       Te               string          `json:"te"`
+       CurrentOwner     string          `json:"current_owner"`
+       Resolution       string          `json:"resolution"`
+       Originphase      string          `json:"originphase"`
+       Confirmer        string          `json:"confirmer"`
+       Participator     string          `json:"participator"`
+       Closer           string          `json:"closer"`
+       Platform         string          `json:"platform"`
+       Os               string          `json:"os"`
+       Testtype         string          `json:"testtype"`
+       Testphase        string          `json:"testphase"`
+       Frequency        string          `json:"frequency"`
+       RegressionNumber string          `json:"regression_number"`
+       Flows            string          `json:"flows"`
+       Testmode         string          `json:"testmode"`
+       IssueID          uint64          `json:"issue_id,string"`
+       VerifyTime       *helper.CSTTime `json:"verify_time"`
+       RejectTime       *helper.CSTTime `json:"reject_time"`
+       ReopenTime       *helper.CSTTime `json:"reopen_time"`
+       AuditTime        *helper.CSTTime `json:"audit_time"`
+       SuspendTime      *helper.CSTTime `json:"suspend_time"`
+       Deadline         *helper.CSTTime `json:"deadline"`
+       InProgressTime   *helper.CSTTime `json:"in_progress_time"`
+       AssignedTime     *helper.CSTTime `json:"assigned_time"`
+       TemplateID       uint64          `json:"template_id,string"`
+       StoryID          uint64          `json:"story_id,string"`
        StdStatus        string
        StdType          string
        Type             string
diff --git a/plugins/tapd/models/bug_changelog.go 
b/plugins/tapd/models/bug_changelog.go
index 0be263fa..ceabfd36 100644
--- a/plugins/tapd/models/bug_changelog.go
+++ b/plugins/tapd/models/bug_changelog.go
@@ -2,20 +2,20 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBugChangelog struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       WorkspaceID  uint64        `gorm:"type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       BugID        uint64        `json:"bug_id,string"`
-       Author       string        `json:"author"`
-       Field        string        `gorm:"primaryKey;type:varchar(255)" 
json:"field"`
-       OldValue     string        `json:"old_value"`
-       NewValue     string        `json:"new_value"`
-       Memo         string        `json:"memo"`
-       Created      *core.CSTTime `json:"created"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       WorkspaceID  uint64          `gorm:"type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       BugID        uint64          `json:"bug_id,string"`
+       Author       string          `json:"author"`
+       Field        string          `gorm:"primaryKey;type:varchar(255)" 
json:"field"`
+       OldValue     string          `json:"old_value"`
+       NewValue     string          `json:"new_value"`
+       Memo         string          `json:"memo"`
+       Created      *helper.CSTTime `json:"created"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/bug_commit.go 
b/plugins/tapd/models/bug_commit.go
index 7be637ee..4f9c8f80 100644
--- a/plugins/tapd/models/bug_commit.go
+++ b/plugins/tapd/models/bug_commit.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBugCommit struct {
@@ -18,12 +18,12 @@ type TapdBugCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        BugId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/iteration.go b/plugins/tapd/models/iteration.go
index 01a08207..d0268262 100644
--- a/plugins/tapd/models/iteration.go
+++ b/plugins/tapd/models/iteration.go
@@ -2,27 +2,27 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIteration struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       Name         string        `gorm:"type:varchar(255)" json:"name"`
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       Startdate    *core.CSTTime `json:"startdate"`
-       Enddate      *core.CSTTime `json:"enddate"`
-       Status       string        `gorm:"type:varchar(255)" json:"status"`
-       ReleaseID    uint64        `gorm:"type:varchar(255)" 
json:"release_id,string"`
-       Description  string        `json:"description"`
-       Creator      string        `gorm:"type:varchar(255)" json:"creator"`
-       Created      *core.CSTTime `json:"created"`
-       Modified     *core.CSTTime `json:"modified"`
-       Completed    *core.CSTTime `json:"completed"`
-       Releaseowner string        `gorm:"type:varchar(255)" 
json:"releaseowner"`
-       Launchdate   *core.CSTTime `json:"launchdate"`
-       Notice       string        `gorm:"type:varchar(255)" json:"notice"`
-       Releasename  string        `gorm:"type:varchar(255)" json:"releasename"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       Name         string          `gorm:"type:varchar(255)" json:"name"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       Startdate    *helper.CSTTime `json:"startdate"`
+       Enddate      *helper.CSTTime `json:"enddate"`
+       Status       string          `gorm:"type:varchar(255)" json:"status"`
+       ReleaseID    uint64          `gorm:"type:varchar(255)" 
json:"release_id,string"`
+       Description  string          `json:"description"`
+       Creator      string          `gorm:"type:varchar(255)" json:"creator"`
+       Created      *helper.CSTTime `json:"created"`
+       Modified     *helper.CSTTime `json:"modified"`
+       Completed    *helper.CSTTime `json:"completed"`
+       Releaseowner string          `gorm:"type:varchar(255)" 
json:"releaseowner"`
+       Launchdate   *helper.CSTTime `json:"launchdate"`
+       Notice       string          `gorm:"type:varchar(255)" json:"notice"`
+       Releasename  string          `gorm:"type:varchar(255)" 
json:"releasename"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/iteration_bug.go 
b/plugins/tapd/models/iteration_bug.go
index c7b627fe..ebf67e0d 100644
--- a/plugins/tapd/models/iteration_bug.go
+++ b/plugins/tapd/models/iteration_bug.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationBug struct {
@@ -11,8 +11,8 @@ type TapdIterationBug struct {
        IterationId    uint64 `gorm:"primaryKey"`
        WorkspaceID    uint64 `gorm:"primaryKey"`
        BugId          uint64 `gorm:"primaryKey"`
-       ResolutionDate *core.CSTTime
-       BugCreatedDate *core.CSTTime
+       ResolutionDate *helper.CSTTime
+       BugCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationBug) TableName() string {
diff --git a/plugins/tapd/models/iteration_story.go 
b/plugins/tapd/models/iteration_story.go
index a7ab74f6..0ae9ed94 100644
--- a/plugins/tapd/models/iteration_story.go
+++ b/plugins/tapd/models/iteration_story.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationStory struct {
@@ -12,8 +12,8 @@ type TapdIterationStory struct {
        WorkspaceID  uint64 `gorm:"primaryKey"`
 
        StoryId          uint64 `gorm:"primaryKey"`
-       ResolutionDate   *core.CSTTime
-       StoryCreatedDate *core.CSTTime
+       ResolutionDate   *helper.CSTTime
+       StoryCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationStory) TableName() string {
diff --git a/plugins/tapd/models/iteration_task.go 
b/plugins/tapd/models/iteration_task.go
index 6636d0a9..4a1937f4 100644
--- a/plugins/tapd/models/iteration_task.go
+++ b/plugins/tapd/models/iteration_task.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationTask struct {
@@ -12,8 +12,8 @@ type TapdIterationTask struct {
        WorkspaceID  uint64 `gorm:"primaryKey"`
 
        TaskId          uint64 `gorm:"primaryKey"`
-       ResolutionDate  *core.CSTTime
-       TaskCreatedDate *core.CSTTime
+       ResolutionDate  *helper.CSTTime
+       TaskCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationTask) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/bug.go 
b/plugins/tapd/models/migrationscripts/archived/bug.go
index 4446aa25..72829a59 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBug struct {
@@ -11,65 +11,65 @@ type TapdBug struct {
        EpicKey      string
        Title        string `json:"name" gorm:"type:varchar(255)"`
        Description  string
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       Created      *core.CSTTime `json:"created"`
-       Modified     *core.CSTTime `json:"modified" gorm:"index"`
-       Status       string        `json:"status"`
-       Cc           string        `json:"cc"`
-       Begin        *core.CSTTime `json:"begin"`
-       Due          *core.CSTTime `json:"due"`
-       Priority     string        `json:"priority"`
-       IterationID  uint64        `json:"iteration_id,string"`
-       Source       string        `json:"source"`
-       Module       string        `json:"module"`
-       ReleaseID    uint64        `json:"release_id,string"`
-       CreatedFrom  string        `json:"created_from"`
-       Feature      string        `json:"feature"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       Created      *helper.CSTTime `json:"created"`
+       Modified     *helper.CSTTime `json:"modified" gorm:"index"`
+       Status       string          `json:"status"`
+       Cc           string          `json:"cc"`
+       Begin        *helper.CSTTime `json:"begin"`
+       Due          *helper.CSTTime `json:"due"`
+       Priority     string          `json:"priority"`
+       IterationID  uint64          `json:"iteration_id,string"`
+       Source       string          `json:"source"`
+       Module       string          `json:"module"`
+       ReleaseID    uint64          `json:"release_id,string"`
+       CreatedFrom  string          `json:"created_from"`
+       Feature      string          `json:"feature"`
        common.NoPKModel
 
-       Severity         string        `json:"severity"`
-       Reporter         string        `json:"reporter"`
-       Resolved         *core.CSTTime `json:"resolved"`
-       Closed           *core.CSTTime `json:"closed"`
-       Lastmodify       string        `json:"lastmodify"`
-       Auditer          string        `json:"auditer"`
-       De               string        `json:"De" gorm:"comment:developer"`
-       Fixer            string        `json:"fixer"`
-       VersionTest      string        `json:"version_test"`
-       VersionReport    string        `json:"version_report"`
-       VersionClose     string        `json:"version_close"`
-       VersionFix       string        `json:"version_fix"`
-       BaselineFind     string        `json:"baseline_find"`
-       BaselineJoin     string        `json:"baseline_join"`
-       BaselineClose    string        `json:"baseline_close"`
-       BaselineTest     string        `json:"baseline_test"`
-       Sourcephase      string        `json:"sourcephase"`
-       Te               string        `json:"te"`
-       CurrentOwner     string        `json:"current_owner"`
-       Resolution       string        `json:"resolution"`
-       Originphase      string        `json:"originphase"`
-       Confirmer        string        `json:"confirmer"`
-       Participator     string        `json:"participator"`
-       Closer           string        `json:"closer"`
-       Platform         string        `json:"platform"`
-       Os               string        `json:"os"`
-       Testtype         string        `json:"testtype"`
-       Testphase        string        `json:"testphase"`
-       Frequency        string        `json:"frequency"`
-       RegressionNumber string        `json:"regression_number"`
-       Flows            string        `json:"flows"`
-       Testmode         string        `json:"testmode"`
-       IssueID          uint64        `json:"issue_id,string"`
-       VerifyTime       *core.CSTTime `json:"verify_time"`
-       RejectTime       *core.CSTTime `json:"reject_time"`
-       ReopenTime       *core.CSTTime `json:"reopen_time"`
-       AuditTime        *core.CSTTime `json:"audit_time"`
-       SuspendTime      *core.CSTTime `json:"suspend_time"`
-       Deadline         *core.CSTTime `json:"deadline"`
-       InProgressTime   *core.CSTTime `json:"in_progress_time"`
-       AssignedTime     *core.CSTTime `json:"assigned_time"`
-       TemplateID       uint64        `json:"template_id,string"`
-       StoryID          uint64        `json:"story_id,string"`
+       Severity         string          `json:"severity"`
+       Reporter         string          `json:"reporter"`
+       Resolved         *helper.CSTTime `json:"resolved"`
+       Closed           *helper.CSTTime `json:"closed"`
+       Lastmodify       string          `json:"lastmodify"`
+       Auditer          string          `json:"auditer"`
+       De               string          `json:"De" gorm:"comment:developer"`
+       Fixer            string          `json:"fixer"`
+       VersionTest      string          `json:"version_test"`
+       VersionReport    string          `json:"version_report"`
+       VersionClose     string          `json:"version_close"`
+       VersionFix       string          `json:"version_fix"`
+       BaselineFind     string          `json:"baseline_find"`
+       BaselineJoin     string          `json:"baseline_join"`
+       BaselineClose    string          `json:"baseline_close"`
+       BaselineTest     string          `json:"baseline_test"`
+       Sourcephase      string          `json:"sourcephase"`
+       Te               string          `json:"te"`
+       CurrentOwner     string          `json:"current_owner"`
+       Resolution       string          `json:"resolution"`
+       Originphase      string          `json:"originphase"`
+       Confirmer        string          `json:"confirmer"`
+       Participator     string          `json:"participator"`
+       Closer           string          `json:"closer"`
+       Platform         string          `json:"platform"`
+       Os               string          `json:"os"`
+       Testtype         string          `json:"testtype"`
+       Testphase        string          `json:"testphase"`
+       Frequency        string          `json:"frequency"`
+       RegressionNumber string          `json:"regression_number"`
+       Flows            string          `json:"flows"`
+       Testmode         string          `json:"testmode"`
+       IssueID          uint64          `json:"issue_id,string"`
+       VerifyTime       *helper.CSTTime `json:"verify_time"`
+       RejectTime       *helper.CSTTime `json:"reject_time"`
+       ReopenTime       *helper.CSTTime `json:"reopen_time"`
+       AuditTime        *helper.CSTTime `json:"audit_time"`
+       SuspendTime      *helper.CSTTime `json:"suspend_time"`
+       Deadline         *helper.CSTTime `json:"deadline"`
+       InProgressTime   *helper.CSTTime `json:"in_progress_time"`
+       AssignedTime     *helper.CSTTime `json:"assigned_time"`
+       TemplateID       uint64          `json:"template_id,string"`
+       StoryID          uint64          `json:"story_id,string"`
        StdStatus        string
        StdType          string
        Type             string
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_changelog.go 
b/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
index a9eb82e2..2cef1ce6 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_changelog.go
@@ -2,20 +2,20 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBugChangelog struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       WorkspaceID  uint64        `gorm:"type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       BugID        uint64        `json:"bug_id,string"`
-       Author       string        `json:"author"`
-       Field        string        `gorm:"primaryKey;type:varchar(255)" 
json:"field"`
-       OldValue     string        `json:"old_value"`
-       NewValue     string        `json:"new_value"`
-       Memo         string        `json:"memo"`
-       Created      *core.CSTTime `json:"created"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       WorkspaceID  uint64          `gorm:"type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       BugID        uint64          `json:"bug_id,string"`
+       Author       string          `json:"author"`
+       Field        string          `gorm:"primaryKey;type:varchar(255)" 
json:"field"`
+       OldValue     string          `json:"old_value"`
+       NewValue     string          `json:"new_value"`
+       Memo         string          `json:"memo"`
+       Created      *helper.CSTTime `json:"created"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/migrationscripts/archived/bug_commit.go 
b/plugins/tapd/models/migrationscripts/archived/bug_commit.go
index 53d710a9..01744f9e 100644
--- a/plugins/tapd/models/migrationscripts/archived/bug_commit.go
+++ b/plugins/tapd/models/migrationscripts/archived/bug_commit.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdBugCommit struct {
@@ -18,12 +18,12 @@ type TapdBugCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        BugId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration.go 
b/plugins/tapd/models/migrationscripts/archived/iteration.go
index 727c10d4..8f754637 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration.go
@@ -2,27 +2,27 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIteration struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       Name         string        `gorm:"type:varchar(255)" json:"name"`
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       Startdate    *core.CSTTime `json:"startdate"`
-       Enddate      *core.CSTTime `json:"enddate"`
-       Status       string        `gorm:"type:varchar(255)" json:"status"`
-       ReleaseID    uint64        `gorm:"type:varchar(255)" 
json:"release_id,string"`
-       Description  string        `json:"description"`
-       Creator      string        `gorm:"type:varchar(255)" json:"creator"`
-       Created      *core.CSTTime `json:"created"`
-       Modified     *core.CSTTime `json:"modified"`
-       Completed    *core.CSTTime `json:"completed"`
-       Releaseowner string        `gorm:"type:varchar(255)" 
json:"releaseowner"`
-       Launchdate   *core.CSTTime `json:"launchdate"`
-       Notice       string        `gorm:"type:varchar(255)" json:"notice"`
-       Releasename  string        `gorm:"type:varchar(255)" json:"releasename"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       Name         string          `gorm:"type:varchar(255)" json:"name"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       Startdate    *helper.CSTTime `json:"startdate"`
+       Enddate      *helper.CSTTime `json:"enddate"`
+       Status       string          `gorm:"type:varchar(255)" json:"status"`
+       ReleaseID    uint64          `gorm:"type:varchar(255)" 
json:"release_id,string"`
+       Description  string          `json:"description"`
+       Creator      string          `gorm:"type:varchar(255)" json:"creator"`
+       Created      *helper.CSTTime `json:"created"`
+       Modified     *helper.CSTTime `json:"modified"`
+       Completed    *helper.CSTTime `json:"completed"`
+       Releaseowner string          `gorm:"type:varchar(255)" 
json:"releaseowner"`
+       Launchdate   *helper.CSTTime `json:"launchdate"`
+       Notice       string          `gorm:"type:varchar(255)" json:"notice"`
+       Releasename  string          `gorm:"type:varchar(255)" 
json:"releasename"`
        common.NoPKModel
 }
 
@@ -38,8 +38,8 @@ type TapdIterationIssue struct {
        ConnectionId     uint64 `gorm:"primaryKey"`
        IterationId      uint64 `gorm:"primaryKey"`
        IssueId          uint64 `gorm:"primaryKey"`
-       ResolutionDate   *core.CSTTime
-       IssueCreatedDate *core.CSTTime
+       ResolutionDate   *helper.CSTTime
+       IssueCreatedDate *helper.CSTTime
 }
 
 func (TapdIteration) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_bug.go 
b/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
index bbe7a1e4..27784358 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_bug.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationBug struct {
@@ -11,8 +11,8 @@ type TapdIterationBug struct {
        IterationId    uint64 `gorm:"primaryKey"`
        WorkspaceID    uint64 `gorm:"primaryKey"`
        BugId          uint64 `gorm:"primaryKey"`
-       ResolutionDate *core.CSTTime
-       BugCreatedDate *core.CSTTime
+       ResolutionDate *helper.CSTTime
+       BugCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationBug) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_story.go 
b/plugins/tapd/models/migrationscripts/archived/iteration_story.go
index e19df634..75926e49 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_story.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_story.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationStory struct {
@@ -11,8 +11,8 @@ type TapdIterationStory struct {
        IterationId      uint64 `gorm:"primaryKey"`
        WorkspaceID      uint64 `gorm:"primaryKey"`
        StoryId          uint64 `gorm:"primaryKey"`
-       ResolutionDate   *core.CSTTime
-       StoryCreatedDate *core.CSTTime
+       ResolutionDate   *helper.CSTTime
+       StoryCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationStory) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/iteration_task.go 
b/plugins/tapd/models/migrationscripts/archived/iteration_task.go
index ea4175fb..f3485ba3 100644
--- a/plugins/tapd/models/migrationscripts/archived/iteration_task.go
+++ b/plugins/tapd/models/migrationscripts/archived/iteration_task.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdIterationTask struct {
@@ -11,8 +11,8 @@ type TapdIterationTask struct {
        IterationId     uint64 `gorm:"primaryKey"`
        TaskId          uint64 `gorm:"primaryKey"`
        WorkspaceID     uint64 `gorm:"primaryKey"`
-       ResolutionDate  *core.CSTTime
-       TaskCreatedDate *core.CSTTime
+       ResolutionDate  *helper.CSTTime
+       TaskCreatedDate *helper.CSTTime
 }
 
 func (TapdIterationTask) TableName() string {
diff --git a/plugins/tapd/models/migrationscripts/archived/story.go 
b/plugins/tapd/models/migrationscripts/archived/story.go
index c471c2e9..01a8311c 100644
--- a/plugins/tapd/models/migrationscripts/archived/story.go
+++ b/plugins/tapd/models/migrationscripts/archived/story.go
@@ -2,49 +2,49 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStory struct {
-       ConnectionId    uint64        `gorm:"primaryKey"`
-       ID              uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       WorkitemTypeID  uint64        `json:"workitem_type_id,string"`
-       Name            string        `gorm:"type:varchar(255)" json:"name"`
-       Description     string        `json:"description"`
-       WorkspaceID     uint64        `json:"workspace_id,string"`
-       Creator         string        `gorm:"type:varchar(255)"`
-       Created         *core.CSTTime `json:"created"`
-       Modified        *core.CSTTime `json:"modified" gorm:"index"`
-       Status          string        `json:"status" gorm:"type:varchar(255)"`
-       Owner           string        `json:"owner" gorm:"type:varchar(255)"`
-       Cc              string        `json:"cc" gorm:"type:varchar(255)"`
-       Begin           *core.CSTTime `json:"begin"`
-       Due             *core.CSTTime `json:"due"`
-       Size            int16         `json:"size,string"`
-       Priority        string        `gorm:"type:varchar(255)" json:"priority"`
-       Developer       string        `gorm:"type:varchar(255)" 
json:"developer"`
-       IterationID     uint64        `json:"iteration_id,string"`
-       TestFocus       string        `json:"test_focus" 
gorm:"type:varchar(255)"`
-       Type            string        `json:"type" gorm:"type:varchar(255)"`
-       Source          string        `json:"source" gorm:"type:varchar(255)"`
-       Module          string        `json:"module" gorm:"type:varchar(255)"`
-       Version         string        `json:"version" gorm:"type:varchar(255)"`
-       Completed       *core.CSTTime `json:"completed"`
-       CategoryID      uint64        `json:"category_id,string"`
-       Path            string        `gorm:"type:varchar(255)" json:"path"`
-       ParentID        uint64        `json:"parent_id,string"`
-       ChildrenID      string        `gorm:"type:varchar(255)" 
json:"children_id"`
-       AncestorID      uint64        `json:"ancestor_id,string"`
-       BusinessValue   string        `gorm:"type:varchar(255)" 
json:"business_value"`
-       Effort          float32       `json:"effort,string"`
-       EffortCompleted float32       `json:"effort_completed,string"`
-       Exceed          float32       `json:"exceed,string"`
-       Remain          float32       `json:"remain,string"`
-       ReleaseID       uint64        `json:"release_id,string"`
-       Confidential    string        `gorm:"type:varchar(255)" 
json:"confidential"`
-       TemplatedID     uint64        `json:"templated_id,string"`
-       CreatedFrom     string        `gorm:"type:varchar(255)" 
json:"created_from"`
-       Feature         string        `gorm:"type:varchar(255)" json:"feature"`
+       ConnectionId    uint64          `gorm:"primaryKey"`
+       ID              uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       WorkitemTypeID  uint64          `json:"workitem_type_id,string"`
+       Name            string          `gorm:"type:varchar(255)" json:"name"`
+       Description     string          `json:"description"`
+       WorkspaceID     uint64          `json:"workspace_id,string"`
+       Creator         string          `gorm:"type:varchar(255)"`
+       Created         *helper.CSTTime `json:"created"`
+       Modified        *helper.CSTTime `json:"modified" gorm:"index"`
+       Status          string          `json:"status" gorm:"type:varchar(255)"`
+       Owner           string          `json:"owner" gorm:"type:varchar(255)"`
+       Cc              string          `json:"cc" gorm:"type:varchar(255)"`
+       Begin           *helper.CSTTime `json:"begin"`
+       Due             *helper.CSTTime `json:"due"`
+       Size            int16           `json:"size,string"`
+       Priority        string          `gorm:"type:varchar(255)" 
json:"priority"`
+       Developer       string          `gorm:"type:varchar(255)" 
json:"developer"`
+       IterationID     uint64          `json:"iteration_id,string"`
+       TestFocus       string          `json:"test_focus" 
gorm:"type:varchar(255)"`
+       Type            string          `json:"type" gorm:"type:varchar(255)"`
+       Source          string          `json:"source" gorm:"type:varchar(255)"`
+       Module          string          `json:"module" gorm:"type:varchar(255)"`
+       Version         string          `json:"version" 
gorm:"type:varchar(255)"`
+       Completed       *helper.CSTTime `json:"completed"`
+       CategoryID      uint64          `json:"category_id,string"`
+       Path            string          `gorm:"type:varchar(255)" json:"path"`
+       ParentID        uint64          `json:"parent_id,string"`
+       ChildrenID      string          `gorm:"type:varchar(255)" 
json:"children_id"`
+       AncestorID      uint64          `json:"ancestor_id,string"`
+       BusinessValue   string          `gorm:"type:varchar(255)" 
json:"business_value"`
+       Effort          float32         `json:"effort,string"`
+       EffortCompleted float32         `json:"effort_completed,string"`
+       Exceed          float32         `json:"exceed,string"`
+       Remain          float32         `json:"remain,string"`
+       ReleaseID       uint64          `json:"release_id,string"`
+       Confidential    string          `gorm:"type:varchar(255)" 
json:"confidential"`
+       TemplatedID     uint64          `json:"templated_id,string"`
+       CreatedFrom     string          `gorm:"type:varchar(255)" 
json:"created_from"`
+       Feature         string          `gorm:"type:varchar(255)" 
json:"feature"`
        StdStatus       string
        StdType         string
        Url             string
diff --git a/plugins/tapd/models/migrationscripts/archived/story_changelog.go 
b/plugins/tapd/models/migrationscripts/archived/story_changelog.go
index 19a676f6..bae0b613 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_changelog.go
@@ -2,21 +2,21 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStoryChangelog struct {
-       ConnectionId   uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID             uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID    uint64        `json:"workspace_id,string"`
-       WorkitemTypeID uint64        `json:"workitem_type_id,string"`
-       Creator        string        `json:"creator"`
-       Created        *core.CSTTime `json:"created"`
-       ChangeSummary  string        `json:"change_summary"`
-       Comment        string        `json:"comment"`
-       EntityType     string        `json:"entity_type"`
-       ChangeType     string        `json:"change_type"`
-       StoryID        uint64        `json:"story_id,string"`
+       ConnectionId   uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID             uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID    uint64          `json:"workspace_id,string"`
+       WorkitemTypeID uint64          `json:"workitem_type_id,string"`
+       Creator        string          `json:"creator"`
+       Created        *helper.CSTTime `json:"created"`
+       ChangeSummary  string          `json:"change_summary"`
+       Comment        string          `json:"comment"`
+       EntityType     string          `json:"entity_type"`
+       ChangeType     string          `json:"change_type"`
+       StoryID        uint64          `json:"story_id,string"`
        common.NoPKModel
        FieldChanges []TapdStoryChangelogItem `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/story_commits.go 
b/plugins/tapd/models/migrationscripts/archived/story_commits.go
index 9496d27d..a27775f6 100644
--- a/plugins/tapd/models/migrationscripts/archived/story_commits.go
+++ b/plugins/tapd/models/migrationscripts/archived/story_commits.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStoryCommit struct {
@@ -18,12 +18,12 @@ type TapdStoryCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        StoryId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/task.go 
b/plugins/tapd/models/migrationscripts/archived/task.go
index 3db6214c..a86f0586 100644
--- a/plugins/tapd/models/migrationscripts/archived/task.go
+++ b/plugins/tapd/models/migrationscripts/archived/task.go
@@ -2,30 +2,30 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTask struct {
-       ConnectionId    uint64        `gorm:"primaryKey"`
-       ID              uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       Name            string        `gorm:"type:varchar(255)" json:"name"`
-       Description     string        `json:"description"`
-       WorkspaceID     uint64        `json:"workspace_id,string"`
-       Creator         string        `gorm:"type:varchar(255)" json:"creator"`
-       Created         *core.CSTTime `json:"created"`
-       Modified        *core.CSTTime `json:"modified" gorm:"index"`
-       Status          string        `json:"status" gorm:"type:varchar(255)"`
-       Owner           string        `json:"owner" gorm:"type:varchar(255)"`
-       Cc              string        `json:"cc" gorm:"type:varchar(255)"`
-       Begin           *core.CSTTime `json:"begin"`
-       Due             *core.CSTTime `json:"due"`
-       Priority        string        `gorm:"type:varchar(255)" json:"priority"`
-       IterationID     uint64        `json:"iteration_id,string"`
-       Completed       *core.CSTTime `json:"completed"`
-       Effort          float32       `json:"effort,string"`
-       EffortCompleted float32       `json:"effort_completed,string"`
-       Exceed          float32       `json:"exceed,string"`
-       Remain          float32       `json:"remain,string"`
+       ConnectionId    uint64          `gorm:"primaryKey"`
+       ID              uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       Name            string          `gorm:"type:varchar(255)" json:"name"`
+       Description     string          `json:"description"`
+       WorkspaceID     uint64          `json:"workspace_id,string"`
+       Creator         string          `gorm:"type:varchar(255)" 
json:"creator"`
+       Created         *helper.CSTTime `json:"created"`
+       Modified        *helper.CSTTime `json:"modified" gorm:"index"`
+       Status          string          `json:"status" gorm:"type:varchar(255)"`
+       Owner           string          `json:"owner" gorm:"type:varchar(255)"`
+       Cc              string          `json:"cc" gorm:"type:varchar(255)"`
+       Begin           *helper.CSTTime `json:"begin"`
+       Due             *helper.CSTTime `json:"due"`
+       Priority        string          `gorm:"type:varchar(255)" 
json:"priority"`
+       IterationID     uint64          `json:"iteration_id,string"`
+       Completed       *helper.CSTTime `json:"completed"`
+       Effort          float32         `json:"effort,string"`
+       EffortCompleted float32         `json:"effort_completed,string"`
+       Exceed          float32         `json:"exceed,string"`
+       Remain          float32         `json:"remain,string"`
        StdStatus       string
        StdType         string
        Type            string
diff --git a/plugins/tapd/models/migrationscripts/archived/task_changelog.go 
b/plugins/tapd/models/migrationscripts/archived/task_changelog.go
index 82b86372..02e4761b 100644
--- a/plugins/tapd/models/migrationscripts/archived/task_changelog.go
+++ b/plugins/tapd/models/migrationscripts/archived/task_changelog.go
@@ -2,22 +2,22 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTaskChangelog struct {
-       ConnectionId   uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID             uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID    uint64        `json:"workspace_id,string"`
-       WorkitemTypeID uint64        `json:"workitem_type_id,string"`
-       Creator        string        `json:"creator"`
-       Created        *core.CSTTime `json:"created"`
-       ChangeSummary  string        `json:"change_summary"`
-       Comment        string        `json:"comment"`
-       EntityType     string        `json:"entity_type"`
-       ChangeType     string        `json:"change_type"`
-       ChangeTypeText string        `json:"change_type_text"`
-       TaskID         uint64        `json:"task_id,string"`
+       ConnectionId   uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID             uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID    uint64          `json:"workspace_id,string"`
+       WorkitemTypeID uint64          `json:"workitem_type_id,string"`
+       Creator        string          `json:"creator"`
+       Created        *helper.CSTTime `json:"created"`
+       ChangeSummary  string          `json:"change_summary"`
+       Comment        string          `json:"comment"`
+       EntityType     string          `json:"entity_type"`
+       ChangeType     string          `json:"change_type"`
+       ChangeTypeText string          `json:"change_type_text"`
+       TaskID         uint64          `json:"task_id,string"`
        common.NoPKModel
        FieldChanges []TapdTaskChangelogItem `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/migrationscripts/archived/task_commits.go 
b/plugins/tapd/models/migrationscripts/archived/task_commits.go
index 8411fffd..25e91ae3 100644
--- a/plugins/tapd/models/migrationscripts/archived/task_commits.go
+++ b/plugins/tapd/models/migrationscripts/archived/task_commits.go
@@ -2,7 +2,7 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTaskCommit struct {
@@ -18,12 +18,12 @@ type TapdTaskCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        TaskId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/migrationscripts/archived/worklog.go 
b/plugins/tapd/models/migrationscripts/archived/worklog.go
index a3074ef5..aea74910 100644
--- a/plugins/tapd/models/migrationscripts/archived/worklog.go
+++ b/plugins/tapd/models/migrationscripts/archived/worklog.go
@@ -2,20 +2,20 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdWorklog struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       EntityType   string        `gorm:"type:varchar(255)" json:"entity_type"`
-       EntityID     uint64        `json:"entity_id,string"`
-       Timespent    float32       `json:"timespent,string"`
-       Spentdate    *core.CSTTime `json:"spentdate"`
-       Owner        string        `gorm:"type:varchar(255)" json:"owner"`
-       Created      *core.CSTTime `json:"created"`
-       Memo         string        `gorm:"type:varchar(255)" json:"memo"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       EntityType   string          `gorm:"type:varchar(255)" 
json:"entity_type"`
+       EntityID     uint64          `json:"entity_id,string"`
+       Timespent    float32         `json:"timespent,string"`
+       Spentdate    *helper.CSTTime `json:"spentdate"`
+       Owner        string          `gorm:"type:varchar(255)" json:"owner"`
+       Created      *helper.CSTTime `json:"created"`
+       Memo         string          `gorm:"type:varchar(255)" json:"memo"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/migrationscripts/archived/workspace.go 
b/plugins/tapd/models/migrationscripts/archived/workspace.go
index d164eed8..7900d662 100644
--- a/plugins/tapd/models/migrationscripts/archived/workspace.go
+++ b/plugins/tapd/models/migrationscripts/archived/workspace.go
@@ -2,22 +2,22 @@ package archived
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdWorkspace struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       Name         string        `gorm:"type:varchar(255)" json:"name"`
-       PrettyName   string        `gorm:"type:varchar(255)" json:"pretty_name"`
-       Category     string        `gorm:"type:varchar(255)" json:"category"`
-       Status       string        `gorm:"type:varchar(255)" json:"status"`
-       Description  string        `json:"description"`
-       BeginDate    *core.CSTTime `json:"begin_date"`
-       EndDate      *core.CSTTime `json:"end_date"`
-       ExternalOn   string        `gorm:"type:varchar(255)" json:"external_on"`
-       Creator      string        `gorm:"type:varchar(255)" json:"creator"`
-       Created      *core.CSTTime `json:"created"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       Name         string          `gorm:"type:varchar(255)" json:"name"`
+       PrettyName   string          `gorm:"type:varchar(255)" 
json:"pretty_name"`
+       Category     string          `gorm:"type:varchar(255)" json:"category"`
+       Status       string          `gorm:"type:varchar(255)" json:"status"`
+       Description  string          `json:"description"`
+       BeginDate    *helper.CSTTime `json:"begin_date"`
+       EndDate      *helper.CSTTime `json:"end_date"`
+       ExternalOn   string          `gorm:"type:varchar(255)" 
json:"external_on"`
+       Creator      string          `gorm:"type:varchar(255)" json:"creator"`
+       Created      *helper.CSTTime `json:"created"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/story.go b/plugins/tapd/models/story.go
index 3a520c22..efee75d7 100644
--- a/plugins/tapd/models/story.go
+++ b/plugins/tapd/models/story.go
@@ -2,49 +2,49 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStory struct {
-       ConnectionId    uint64        `gorm:"primaryKey"`
-       ID              uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       WorkitemTypeID  uint64        `json:"workitem_type_id,string"`
-       Name            string        `gorm:"type:varchar(255)" json:"name"`
-       Description     string        `json:"description"`
-       WorkspaceID     uint64        `json:"workspace_id,string"`
-       Creator         string        `gorm:"type:varchar(255)"`
-       Created         *core.CSTTime `json:"created"`
-       Modified        *core.CSTTime `json:"modified" gorm:"index"`
-       Status          string        `json:"status" gorm:"type:varchar(255)"`
-       Owner           string        `json:"owner" gorm:"type:varchar(255)"`
-       Cc              string        `json:"cc" gorm:"type:varchar(255)"`
-       Begin           *core.CSTTime `json:"begin"`
-       Due             *core.CSTTime `json:"due"`
-       Size            int16         `json:"size,string"`
-       Priority        string        `gorm:"type:varchar(255)" json:"priority"`
-       Developer       string        `gorm:"type:varchar(255)" 
json:"developer"`
-       IterationID     uint64        `json:"iteration_id,string"`
-       TestFocus       string        `json:"test_focus" 
gorm:"type:varchar(255)"`
-       Type            string        `json:"type" gorm:"type:varchar(255)"`
-       Source          string        `json:"source" gorm:"type:varchar(255)"`
-       Module          string        `json:"module" gorm:"type:varchar(255)"`
-       Version         string        `json:"version" gorm:"type:varchar(255)"`
-       Completed       *core.CSTTime `json:"completed"`
-       CategoryID      uint64        `json:"category_id,string"`
-       Path            string        `gorm:"type:varchar(255)" json:"path"`
-       ParentID        uint64        `json:"parent_id,string"`
-       ChildrenID      string        `gorm:"type:varchar(255)" 
json:"children_id"`
-       AncestorID      uint64        `json:"ancestor_id,string"`
-       BusinessValue   string        `gorm:"type:varchar(255)" 
json:"business_value"`
-       Effort          float32       `json:"effort,string"`
-       EffortCompleted float32       `json:"effort_completed,string"`
-       Exceed          float32       `json:"exceed,string"`
-       Remain          float32       `json:"remain,string"`
-       ReleaseID       uint64        `json:"release_id,string"`
-       Confidential    string        `gorm:"type:varchar(255)" 
json:"confidential"`
-       TemplatedID     uint64        `json:"templated_id,string"`
-       CreatedFrom     string        `gorm:"type:varchar(255)" 
json:"created_from"`
-       Feature         string        `gorm:"type:varchar(255)" json:"feature"`
+       ConnectionId    uint64          `gorm:"primaryKey"`
+       ID              uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       WorkitemTypeID  uint64          `json:"workitem_type_id,string"`
+       Name            string          `gorm:"type:varchar(255)" json:"name"`
+       Description     string          `json:"description"`
+       WorkspaceID     uint64          `json:"workspace_id,string"`
+       Creator         string          `gorm:"type:varchar(255)"`
+       Created         *helper.CSTTime `json:"created"`
+       Modified        *helper.CSTTime `json:"modified" gorm:"index"`
+       Status          string          `json:"status" gorm:"type:varchar(255)"`
+       Owner           string          `json:"owner" gorm:"type:varchar(255)"`
+       Cc              string          `json:"cc" gorm:"type:varchar(255)"`
+       Begin           *helper.CSTTime `json:"begin"`
+       Due             *helper.CSTTime `json:"due"`
+       Size            int16           `json:"size,string"`
+       Priority        string          `gorm:"type:varchar(255)" 
json:"priority"`
+       Developer       string          `gorm:"type:varchar(255)" 
json:"developer"`
+       IterationID     uint64          `json:"iteration_id,string"`
+       TestFocus       string          `json:"test_focus" 
gorm:"type:varchar(255)"`
+       Type            string          `json:"type" gorm:"type:varchar(255)"`
+       Source          string          `json:"source" gorm:"type:varchar(255)"`
+       Module          string          `json:"module" gorm:"type:varchar(255)"`
+       Version         string          `json:"version" 
gorm:"type:varchar(255)"`
+       Completed       *helper.CSTTime `json:"completed"`
+       CategoryID      uint64          `json:"category_id,string"`
+       Path            string          `gorm:"type:varchar(255)" json:"path"`
+       ParentID        uint64          `json:"parent_id,string"`
+       ChildrenID      string          `gorm:"type:varchar(255)" 
json:"children_id"`
+       AncestorID      uint64          `json:"ancestor_id,string"`
+       BusinessValue   string          `gorm:"type:varchar(255)" 
json:"business_value"`
+       Effort          float32         `json:"effort,string"`
+       EffortCompleted float32         `json:"effort_completed,string"`
+       Exceed          float32         `json:"exceed,string"`
+       Remain          float32         `json:"remain,string"`
+       ReleaseID       uint64          `json:"release_id,string"`
+       Confidential    string          `gorm:"type:varchar(255)" 
json:"confidential"`
+       TemplatedID     uint64          `json:"templated_id,string"`
+       CreatedFrom     string          `gorm:"type:varchar(255)" 
json:"created_from"`
+       Feature         string          `gorm:"type:varchar(255)" 
json:"feature"`
        StdStatus       string
        StdType         string
        Url             string
diff --git a/plugins/tapd/models/story_changelog.go 
b/plugins/tapd/models/story_changelog.go
index 58080a1d..6486b311 100644
--- a/plugins/tapd/models/story_changelog.go
+++ b/plugins/tapd/models/story_changelog.go
@@ -2,22 +2,23 @@ package models
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStoryChangelog struct {
-       ConnectionId   uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID             uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID    uint64        `json:"workspace_id,string"`
-       WorkitemTypeID uint64        `json:"workitem_type_id,string"`
-       Creator        string        `json:"creator"`
-       Created        *core.CSTTime `json:"created"`
-       ChangeSummary  string        `json:"change_summary"`
-       Comment        string        `json:"comment"`
-       EntityType     string        `json:"entity_type"`
-       ChangeType     string        `json:"change_type"`
-       StoryID        uint64        `json:"story_id,string"`
+       ConnectionId   uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID             uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID    uint64          `json:"workspace_id,string"`
+       WorkitemTypeID uint64          `json:"workitem_type_id,string"`
+       Creator        string          `json:"creator"`
+       Created        *helper.CSTTime `json:"created"`
+       ChangeSummary  string          `json:"change_summary"`
+       Comment        string          `json:"comment"`
+       EntityType     string          `json:"entity_type"`
+       ChangeType     string          `json:"change_type"`
+       StoryID        uint64          `json:"story_id,string"`
        common.NoPKModel
        FieldChanges []TapdStoryChangelogItemRes `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/story_commits.go 
b/plugins/tapd/models/story_commits.go
index b4e95e0c..0002d0c2 100644
--- a/plugins/tapd/models/story_commits.go
+++ b/plugins/tapd/models/story_commits.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdStoryCommit struct {
@@ -18,12 +18,12 @@ type TapdStoryCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        StoryId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/task.go b/plugins/tapd/models/task.go
index 237f6050..36598151 100644
--- a/plugins/tapd/models/task.go
+++ b/plugins/tapd/models/task.go
@@ -2,30 +2,30 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTask struct {
-       ConnectionId    uint64        `gorm:"primaryKey"`
-       ID              uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       Name            string        `gorm:"type:varchar(255)" json:"name"`
-       Description     string        `json:"description"`
-       WorkspaceID     uint64        `json:"workspace_id,string"`
-       Creator         string        `gorm:"type:varchar(255)" json:"creator"`
-       Created         *core.CSTTime `json:"created"`
-       Modified        *core.CSTTime `json:"modified" gorm:"index"`
-       Status          string        `json:"status" gorm:"type:varchar(255)"`
-       Owner           string        `json:"owner" gorm:"type:varchar(255)"`
-       Cc              string        `json:"cc" gorm:"type:varchar(255)"`
-       Begin           *core.CSTTime `json:"begin"`
-       Due             *core.CSTTime `json:"due"`
-       Priority        string        `gorm:"type:varchar(255)" json:"priority"`
-       IterationID     uint64        `json:"iteration_id,string"`
-       Completed       *core.CSTTime `json:"completed"`
-       Effort          float32       `json:"effort,string"`
-       EffortCompleted float32       `json:"effort_completed,string"`
-       Exceed          float32       `json:"exceed,string"`
-       Remain          float32       `json:"remain,string"`
+       ConnectionId    uint64          `gorm:"primaryKey"`
+       ID              uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       Name            string          `gorm:"type:varchar(255)" json:"name"`
+       Description     string          `json:"description"`
+       WorkspaceID     uint64          `json:"workspace_id,string"`
+       Creator         string          `gorm:"type:varchar(255)" 
json:"creator"`
+       Created         *helper.CSTTime `json:"created"`
+       Modified        *helper.CSTTime `json:"modified" gorm:"index"`
+       Status          string          `json:"status" gorm:"type:varchar(255)"`
+       Owner           string          `json:"owner" gorm:"type:varchar(255)"`
+       Cc              string          `json:"cc" gorm:"type:varchar(255)"`
+       Begin           *helper.CSTTime `json:"begin"`
+       Due             *helper.CSTTime `json:"due"`
+       Priority        string          `gorm:"type:varchar(255)" 
json:"priority"`
+       IterationID     uint64          `json:"iteration_id,string"`
+       Completed       *helper.CSTTime `json:"completed"`
+       Effort          float32         `json:"effort,string"`
+       EffortCompleted float32         `json:"effort_completed,string"`
+       Exceed          float32         `json:"exceed,string"`
+       Remain          float32         `json:"remain,string"`
        StdStatus       string
        StdType         string
        Type            string
diff --git a/plugins/tapd/models/task_changelog.go 
b/plugins/tapd/models/task_changelog.go
index fcfe529f..97d6ae1c 100644
--- a/plugins/tapd/models/task_changelog.go
+++ b/plugins/tapd/models/task_changelog.go
@@ -2,23 +2,24 @@ package models
 
 import (
        "encoding/json"
+
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTaskChangelog struct {
-       ConnectionId   uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID             uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID    uint64        `json:"workspace_id,string"`
-       WorkitemTypeID uint64        `json:"workitem_type_id,string"`
-       Creator        string        `json:"creator"`
-       Created        *core.CSTTime `json:"created"`
-       ChangeSummary  string        `json:"change_summary"`
-       Comment        string        `json:"comment"`
-       EntityType     string        `json:"entity_type"`
-       ChangeType     string        `json:"change_type"`
-       ChangeTypeText string        `json:"change_type_text"`
-       TaskID         uint64        `json:"task_id,string"`
+       ConnectionId   uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID             uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID    uint64          `json:"workspace_id,string"`
+       WorkitemTypeID uint64          `json:"workitem_type_id,string"`
+       Creator        string          `json:"creator"`
+       Created        *helper.CSTTime `json:"created"`
+       ChangeSummary  string          `json:"change_summary"`
+       Comment        string          `json:"comment"`
+       EntityType     string          `json:"entity_type"`
+       ChangeType     string          `json:"change_type"`
+       ChangeTypeText string          `json:"change_type_text"`
+       TaskID         uint64          `json:"task_id,string"`
        common.NoPKModel
        FieldChanges []TapdTaskChangelogItemRes `json:"field_changes" gorm:"-"`
 }
diff --git a/plugins/tapd/models/task_commits.go 
b/plugins/tapd/models/task_commits.go
index 05735326..9d79f766 100644
--- a/plugins/tapd/models/task_commits.go
+++ b/plugins/tapd/models/task_commits.go
@@ -2,7 +2,7 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdTaskCommit struct {
@@ -18,12 +18,12 @@ type TapdTaskCommit struct {
        WebURL          string `json:"web_url" gorm:"type:varchar(255)"`
        HookProjectName string `json:"hook_project_name" 
gorm:"type:varchar(255)"`
 
-       Ref        string        `json:"ref" gorm:"type:varchar(255)"`
-       RefStatus  string        `json:"ref_status" gorm:"type:varchar(255)"`
-       GitEnv     string        `json:"git_env" gorm:"type:varchar(255)"`
-       FileCommit string        `json:"file_commit"`
-       CommitTime *core.CSTTime `json:"commit_time"`
-       Created    *core.CSTTime `json:"created"`
+       Ref        string          `json:"ref" gorm:"type:varchar(255)"`
+       RefStatus  string          `json:"ref_status" gorm:"type:varchar(255)"`
+       GitEnv     string          `json:"git_env" gorm:"type:varchar(255)"`
+       FileCommit string          `json:"file_commit"`
+       CommitTime *helper.CSTTime `json:"commit_time"`
+       Created    *helper.CSTTime `json:"created"`
 
        TaskId uint64
        common.NoPKModel
diff --git a/plugins/tapd/models/worklog.go b/plugins/tapd/models/worklog.go
index bd5574af..6f18c115 100644
--- a/plugins/tapd/models/worklog.go
+++ b/plugins/tapd/models/worklog.go
@@ -2,20 +2,20 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdWorklog struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
-       WorkspaceID  uint64        `json:"workspace_id,string"`
-       EntityType   string        `gorm:"type:varchar(255)" json:"entity_type"`
-       EntityID     uint64        `json:"entity_id,string"`
-       Timespent    float32       `json:"timespent,string"`
-       Spentdate    *core.CSTTime `json:"spentdate"`
-       Owner        string        `gorm:"type:varchar(255)" json:"owner"`
-       Created      *core.CSTTime `json:"created"`
-       Memo         string        `gorm:"type:varchar(255)" json:"memo"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL" 
json:"id,string"`
+       WorkspaceID  uint64          `json:"workspace_id,string"`
+       EntityType   string          `gorm:"type:varchar(255)" 
json:"entity_type"`
+       EntityID     uint64          `json:"entity_id,string"`
+       Timespent    float32         `json:"timespent,string"`
+       Spentdate    *helper.CSTTime `json:"spentdate"`
+       Owner        string          `gorm:"type:varchar(255)" json:"owner"`
+       Created      *helper.CSTTime `json:"created"`
+       Memo         string          `gorm:"type:varchar(255)" json:"memo"`
        common.NoPKModel
 }
 
diff --git a/plugins/tapd/models/workspace.go b/plugins/tapd/models/workspace.go
index 0607b3aa..fa3cfec9 100644
--- a/plugins/tapd/models/workspace.go
+++ b/plugins/tapd/models/workspace.go
@@ -2,22 +2,22 @@ package models
 
 import (
        "github.com/merico-dev/lake/models/common"
-       "github.com/merico-dev/lake/plugins/core"
+       "github.com/merico-dev/lake/plugins/helper"
 )
 
 type TapdWorkspace struct {
-       ConnectionId uint64        `gorm:"primaryKey;type:BIGINT  NOT NULL"`
-       ID           uint64        `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
-       Name         string        `gorm:"type:varchar(255)" json:"name"`
-       PrettyName   string        `gorm:"type:varchar(255)" json:"pretty_name"`
-       Category     string        `gorm:"type:varchar(255)" json:"category"`
-       Status       string        `gorm:"type:varchar(255)" json:"status"`
-       Description  string        `json:"description"`
-       BeginDate    *core.CSTTime `json:"begin_date"`
-       EndDate      *core.CSTTime `json:"end_date"`
-       ExternalOn   string        `gorm:"type:varchar(255)" json:"external_on"`
-       Creator      string        `gorm:"type:varchar(255)" json:"creator"`
-       Created      *core.CSTTime `json:"created"`
+       ConnectionId uint64          `gorm:"primaryKey;type:BIGINT  NOT NULL"`
+       ID           uint64          `gorm:"primaryKey;type:BIGINT" 
json:"id,string"`
+       Name         string          `gorm:"type:varchar(255)" json:"name"`
+       PrettyName   string          `gorm:"type:varchar(255)" 
json:"pretty_name"`
+       Category     string          `gorm:"type:varchar(255)" json:"category"`
+       Status       string          `gorm:"type:varchar(255)" json:"status"`
+       Description  string          `json:"description"`
+       BeginDate    *helper.CSTTime `json:"begin_date"`
+       EndDate      *helper.CSTTime `json:"end_date"`
+       ExternalOn   string          `gorm:"type:varchar(255)" 
json:"external_on"`
+       Creator      string          `gorm:"type:varchar(255)" json:"creator"`
+       Created      *helper.CSTTime `json:"created"`
        common.NoPKModel
 }
 

Reply via email to