- Added new endpoints for managing assistants: list, detail, save, and delete. - Implemented filtering capabilities for assistants based on keywords, tags, mentionable status, and automation. - Refactored the assistant structure to include new fields for better management and filtering. - Removed obsolete test data file, streamlining the codebase. - Updated tests to cover new assistant functionalities and filtering options, ensuring robust functionality.
127 lines
5 KiB
Go
127 lines
5 KiB
Go
package conversation
|
|
|
|
import "github.com/yaoapp/xun"
|
|
|
|
// 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
|
|
// Inherits from xun.P, used for returning paginated assistant lists
|
|
type AssistantResponse struct {
|
|
xun.P
|
|
}
|
|
|
|
// 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{}) 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)
|
|
}
|