From 3372c9a69bc8b22073c0be829360f2984f6f0e5f Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Wed, 9 Apr 2025 22:25:01 +0800 Subject: [PATCH] refactor: update ChatMessageContent model for improved structure and clarity - Removed type definitions for ChatMessageContentType and ChatMessageContentActionStatus, replacing them with string fields for flexibility. - Added a new 'Key' field to ChatMessageContent for enhanced content identification. - Updated the 'Content' field description in ChatMessage to specify its context for user/system messages. - Ensured consistency in field naming and descriptions across models for better maintainability. --- core/models/models/chat_message.go | 6 ++--- core/models/models/chat_message_content.go | 27 ++++++---------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/core/models/models/chat_message.go b/core/models/models/chat_message.go index 14713564..a36d67ef 100644 --- a/core/models/models/chat_message.go +++ b/core/models/models/chat_message.go @@ -9,7 +9,7 @@ type ChatMessage struct { BaseModel `bson:",inline"` ConversationId primitive.ObjectID `json:"conversation_id" bson:"conversation_id" description:"Conversation ID"` Role string `json:"role" bson:"role" description:"Message role (user/assistant/system)"` - Content string `json:"content,omitempty" bson:"content,omitempty" description:"Message content"` + Content string `json:"content,omitempty" bson:"content,omitempty" description:"Message content for user/system only"` IsAgent bool `json:"is_agent,omitempty" bson:"is_agent,omitempty" description:"Is agent"` ContentIds []primitive.ObjectID `json:"content_ids,omitempty" bson:"content_ids,omitempty" description:"Content IDs"` Contents []ChatMessageContent `json:"contents,omitempty" bson:"-" description:"Contents"` @@ -30,9 +30,9 @@ func (m *ChatMessage) GetContent() string { var result string for _, content := range m.Contents { switch content.Type { - case ChatMessageContentTypeText: + case "text": result += content.Content - case ChatMessageContentTypeAction: + case "action": // Format action content with status actionInfo := "[" + content.Action if content.ActionStatus != "" { diff --git a/core/models/models/chat_message_content.go b/core/models/models/chat_message_content.go index e3ffee0a..ee928c8a 100644 --- a/core/models/models/chat_message_content.go +++ b/core/models/models/chat_message_content.go @@ -21,27 +21,14 @@ package models import "go.mongodb.org/mongo-driver/bson/primitive" -type ChatMessageContentType string - -const ( - ChatMessageContentTypeText ChatMessageContentType = "text" - ChatMessageContentTypeAction ChatMessageContentType = "action" -) - -type ChatMessageContentActionStatus string - -const ( - ChatMessageContentActionStatusPending ChatMessageContentActionStatus = "pending" - ChatMessageContentActionStatusSuccess ChatMessageContentActionStatus = "success" - ChatMessageContentActionStatusFailed ChatMessageContentActionStatus = "failed" -) - type ChatMessageContent struct { any `collection:"chat_message_contents"` BaseModel `bson:",inline"` - MessageId primitive.ObjectID `json:"message_id" bson:"message_id" description:"Message ID"` - Content string `json:"content" bson:"content" description:"Message content"` - Type ChatMessageContentType `json:"type" bson:"type" description:"Message type (text/action)"` - Action string `json:"action,omitempty" bson:"action,omitempty" description:"Action name"` - ActionStatus ChatMessageContentActionStatus `json:"action_status,omitempty" bson:"action_status,omitempty" description:"Action status"` + MessageId primitive.ObjectID `json:"message_id" bson:"message_id" description:"Message ID"` + Key string `json:"key" bson:"key" description:"Message content key"` + Content string `json:"content" bson:"content" description:"Message content"` + Type string `json:"type" bson:"type" description:"Message type (text/action)"` + Action string `json:"action,omitempty" bson:"action,omitempty" description:"Action name"` + ActionStatus string `json:"action_status,omitempty" bson:"action_status,omitempty" description:"Action status"` + Hidden bool `json:"hidden,omitempty" bson:"hidden,omitempty" description:"Hidden"` }