- Updated SaveAssistant and processAssistantAdd methods to return assistant IDs, improving response consistency. - Implemented logic to handle JSON fields as both strings and native types, ensuring proper storage and retrieval of assistant attributes. - Refactored tests to cover various JSON field formats, including string, native types, and nil values, enhancing test coverage and reliability. - Improved the assistant management structure to support mixed JSON formats, ensuring robust functionality across different storage backends.
131 lines
5.5 KiB
Go
131 lines
5.5 KiB
Go
package conversation
|
|
|
|
// Setting represents the conversation configuration structure
|
|
// Used to configure basic conversation parameters including connector, user field, table name, etc.
|
|
type Setting struct {
|
|
Connector string `json:"connector,omitempty"` // Name of the connector used to specify data storage method
|
|
UserField string `json:"user_field,omitempty"` // User ID field name, defaults to "user_id"
|
|
Table string `json:"table,omitempty"` // Database table name
|
|
MaxSize int `json:"max_size,omitempty" yaml:"max_size,omitempty"` // Maximum storage size limit
|
|
TTL int `json:"ttl,omitempty" yaml:"ttl,omitempty"` // Time To Live in seconds
|
|
}
|
|
|
|
// ChatInfo represents the chat information structure
|
|
// Contains basic information and history for a single chat
|
|
type ChatInfo struct {
|
|
Chat map[string]interface{} `json:"chat"` // Basic chat information
|
|
History []map[string]interface{} `json:"history"` // Chat history records
|
|
}
|
|
|
|
// ChatFilter represents the chat filter structure
|
|
// Used for filtering and pagination when retrieving chat lists
|
|
type ChatFilter struct {
|
|
Keywords string `json:"keywords,omitempty"` // Keyword search
|
|
Page int `json:"page,omitempty"` // Page number, starting from 1
|
|
PageSize int `json:"pagesize,omitempty"` // Number of items per page
|
|
Order string `json:"order,omitempty"` // Sort order: desc/asc
|
|
}
|
|
|
|
// ChatGroup represents the chat group structure
|
|
// Groups chats by date
|
|
type ChatGroup struct {
|
|
Label string `json:"label"` // Group label (typically a date)
|
|
Chats []map[string]interface{} `json:"chats"` // List of chats in this group
|
|
}
|
|
|
|
// ChatGroupResponse represents the paginated chat group response
|
|
// Contains paginated chat group information
|
|
type ChatGroupResponse struct {
|
|
Groups []ChatGroup `json:"groups"` // List of chat groups
|
|
Page int `json:"page"` // Current page number
|
|
PageSize int `json:"pagesize"` // Items per page
|
|
Total int64 `json:"total"` // Total number of records
|
|
LastPage int `json:"last_page"` // Last page number
|
|
}
|
|
|
|
// AssistantFilter represents the assistant filter structure
|
|
// Used for filtering and pagination when retrieving assistant lists
|
|
type AssistantFilter struct {
|
|
Tags []string `json:"tags,omitempty"` // Filter by tags
|
|
Keywords string `json:"keywords,omitempty"` // Search in name and description
|
|
Connector string `json:"connector,omitempty"` // Filter by connector
|
|
Mentionable *bool `json:"mentionable,omitempty"` // Filter by mentionable status
|
|
Automated *bool `json:"automated,omitempty"` // Filter by automation status
|
|
Page int `json:"page,omitempty"` // Page number, starting from 1
|
|
PageSize int `json:"pagesize,omitempty"` // Items per page
|
|
}
|
|
|
|
// AssistantResponse represents the assistant response structure
|
|
// Used for returning paginated assistant lists
|
|
type AssistantResponse struct {
|
|
Data []map[string]interface{} `json:"data"` // The paginated data
|
|
Page int `json:"page"` // Current page number
|
|
PageSize int `json:"pagesize"` // Number of items per page
|
|
PageCnt int `json:"pagecnt"` // Total number of pages
|
|
Next int `json:"next"` // Next page number
|
|
Prev int `json:"prev"` // Previous page number
|
|
Total int64 `json:"total"` // Total number of items
|
|
}
|
|
|
|
// Conversation defines the conversation storage interface
|
|
// Provides basic operations required for conversation management
|
|
type Conversation interface {
|
|
// GetChats retrieves a list of chats
|
|
// sid: Session ID
|
|
// filter: Filter conditions
|
|
// Returns: Grouped chat list and potential error
|
|
GetChats(sid string, filter ChatFilter) (*ChatGroupResponse, error)
|
|
|
|
// GetChat retrieves a single chat's information
|
|
// sid: Session ID
|
|
// cid: Chat ID
|
|
// Returns: Chat information and potential error
|
|
GetChat(sid string, cid string) (*ChatInfo, error)
|
|
|
|
// GetHistory retrieves chat history
|
|
// sid: Session ID
|
|
// cid: Chat ID
|
|
// Returns: History record list and potential error
|
|
GetHistory(sid string, cid string) ([]map[string]interface{}, error)
|
|
|
|
// SaveHistory saves chat history
|
|
// sid: Session ID
|
|
// messages: Message list
|
|
// cid: Chat ID
|
|
// context: Context information
|
|
// Returns: Potential error
|
|
SaveHistory(sid string, messages []map[string]interface{}, cid string, context map[string]interface{}) error
|
|
|
|
// DeleteChat deletes a single chat
|
|
// sid: Session ID
|
|
// cid: Chat ID
|
|
// Returns: Potential error
|
|
DeleteChat(sid string, cid string) error
|
|
|
|
// DeleteAllChats deletes all chats
|
|
// sid: Session ID
|
|
// Returns: Potential error
|
|
DeleteAllChats(sid string) error
|
|
|
|
// UpdateChatTitle updates chat title
|
|
// sid: Session ID
|
|
// cid: Chat ID
|
|
// title: New title
|
|
// Returns: Potential error
|
|
UpdateChatTitle(sid string, cid string, title string) error
|
|
|
|
// SaveAssistant saves assistant information
|
|
// assistant: Assistant information
|
|
// Returns: Potential error
|
|
SaveAssistant(assistant map[string]interface{}) (interface{}, error)
|
|
|
|
// DeleteAssistant deletes an assistant
|
|
// assistantID: Assistant ID
|
|
// Returns: Potential error
|
|
DeleteAssistant(assistantID string) error
|
|
|
|
// GetAssistants retrieves a list of assistants
|
|
// filter: Filter conditions
|
|
// Returns: Paginated assistant list and potential error
|
|
GetAssistants(filter AssistantFilter) (*AssistantResponse, error)
|
|
}
|