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.
This commit is contained in:
Marvin Zhang
2025-04-09 22:25:01 +08:00
parent 37307d7c01
commit 3372c9a69b
2 changed files with 10 additions and 23 deletions

View File

@@ -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 != "" {

View File

@@ -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"`
}