import type { BaseDTO } from '../base'

/**
 * Dify文件信息（用于对话文件上传和请求）
 */
export interface DifyFileInfo {
    /** 文件ID（Dify返回） */
    id?: string
    /** 文件名 */
    name?: string
    /** 文件大小（字节） */
    size?: number
    /** 文件扩展名 */
    extension?: string
    /** 文件MIME类型 */
    mimeType?: string
    /** 上传人ID */
    createdBy?: string
    /** 上传时间（时间戳） */
    createdAt?: number
    /** 预览URL */
    previewUrl?: string
    /** 源文件URL */
    sourceUrl?: string
    /** 文件类型：image、document、audio、video、file */
    type?: string
    /** 传输方式：remote_url、local_file */
    transferMethod?: string
    /** 文件URL或ID */
    url?: string
    /** 本地文件上传ID */
    uploadFileId?: string
    /** 系统文件ID */
    sysFileId?: string
    /** 文件路径（从系统文件表获取） */
    filePath?: string
}

/**
 * AI智能体对话
 */
export interface TbChat extends BaseDTO {
    /** 对话ID */
    chatId?: string
    /** 智能体ID */
    agentId?: string
    /** 用户ID */
    userId?: string
    /** 用户类型 true-系统内部人员 false-系统外部人员 */
    userType?: boolean
    /** 对话标题 */
    title?: string
}

/**
 * AI智能体对话消息
 */
export interface TbChatMessage extends BaseDTO {
    /** 消息ID */
    messageId?: string
    /** Dify消息ID */
    difyMessageId?: string
    /** 对话ID */
    chatId?: string
    /** 角色 */
    role?: string
    /** 内容 */
    content?: string
    /** 文件ID数组 */
    files?: string[]
    /** 评价 */
    comment?: string
}

/**
 * 对话消息数据预处理对象
 */
export interface ChatPrepareData {
    /** 智能体Id */
    agentId?: string
    /** 对话Id */
    chatId?: string
    /** 用户问题 */
    query?: string
    /** 本次对话携带的dify文件对象 */
    files?: DifyFileInfo[]
    /** 用户ID（来客传wechatId，员工传userId） */
    userId?: string
    /** 用户类型（false=来客，true=员工） */
    userType?: boolean
}

/**
 * 停止对话参数
 */
export interface StopChatParams {
    taskId: string
    agentId: string
    userId: string
}

/**
 * 评价消息参数
 */
export interface CommentMessageParams {
    agentId: string
    chatId: string
    messageId: string
    comment: string
    userId: string
}