This is an automated email from the ASF dual-hosted git repository. lynwee pushed a commit to branch fix-0317 in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git
commit 49f7d01c6e9e6b288d9630be65efaf701393b0e7 Author: d4x1 <[email protected]> AuthorDate: Mon Mar 17 13:02:04 2025 +0800 fix(tapd): fix panic when casting fields --- backend/plugins/tapd/tasks/story_changelog_extractor.go | 12 +++++++----- backend/plugins/tapd/tasks/task_changelog_extractor.go | 8 +++++--- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/backend/plugins/tapd/tasks/story_changelog_extractor.go b/backend/plugins/tapd/tasks/story_changelog_extractor.go index 667e833cc..07f3e64cc 100644 --- a/backend/plugins/tapd/tasks/story_changelog_extractor.go +++ b/backend/plugins/tapd/tasks/story_changelog_extractor.go @@ -23,6 +23,7 @@ import ( "github.com/apache/incubator-devlake/core/plugin" "github.com/apache/incubator-devlake/helpers/pluginhelper/api" "github.com/apache/incubator-devlake/plugins/tapd/models" + "github.com/spf13/cast" ) var _ plugin.SubTaskEntryPoint = ExtractStoryChangelog @@ -81,12 +82,13 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext) errors.Error { item.ConnectionId = data.Options.ConnectionId item.ChangelogId = storyChangelog.Id item.Field = k - item.ValueAfterParsed = v.(string) + item.ValueAfterParsed = cast.ToString(v) switch valueBeforeMap.(type) { case map[string]interface{}: - item.ValueBeforeParsed = valueBeforeMap.(map[string]interface{})[k].(string) + value := valueBeforeMap.(map[string]interface{})[k] + item.ValueBeforeParsed = cast.ToString(value) default: - item.ValueBeforeParsed = valueBeforeMap.(string) + item.ValueBeforeParsed = cast.ToString(valueBeforeMap) } err = convertUnicode(&item) if err != nil { @@ -98,9 +100,9 @@ func ExtractStoryChangelog(taskCtx plugin.SubTaskContext) errors.Error { item.ConnectionId = data.Options.ConnectionId item.ChangelogId = storyChangelog.Id item.Field = fc.Field - item.ValueAfterParsed = valueAfterMap.(string) + item.ValueAfterParsed = cast.ToString(valueAfterMap) // as ValueAfterParsed is string, valueBeforeMap is always string - item.ValueBeforeParsed = valueBeforeMap.(string) + item.ValueBeforeParsed = cast.ToString(valueBeforeMap) } err = convertUnicode(&item) if err != nil { diff --git a/backend/plugins/tapd/tasks/task_changelog_extractor.go b/backend/plugins/tapd/tasks/task_changelog_extractor.go index df9834b37..5e33f52af 100644 --- a/backend/plugins/tapd/tasks/task_changelog_extractor.go +++ b/backend/plugins/tapd/tasks/task_changelog_extractor.go @@ -23,6 +23,7 @@ import ( "github.com/apache/incubator-devlake/core/plugin" "github.com/apache/incubator-devlake/helpers/pluginhelper/api" "github.com/apache/incubator-devlake/plugins/tapd/models" + "github.com/spf13/cast" "strings" ) @@ -82,12 +83,13 @@ func ExtractTaskChangelog(taskCtx plugin.SubTaskContext) errors.Error { item.ConnectionId = data.Options.ConnectionId item.ChangelogId = taskChangelog.Id item.Field = k - item.ValueAfterParsed = v.(string) + item.ValueAfterParsed = cast.ToString(v) switch valueBeforeMap.(type) { case map[string]interface{}: - item.ValueBeforeParsed = valueBeforeMap.(map[string]interface{})[k].(string) + value := valueBeforeMap.(map[string]interface{})[k] + item.ValueBeforeParsed = cast.ToString(value) default: - item.ValueBeforeParsed = valueBeforeMap.(string) + item.ValueBeforeParsed = cast.ToString(valueBeforeMap) } results = append(results, &item) }
