/**
 * @description 智能体相关类型定义
 * @author yslg
 * @since 2025-10-15
 */

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

/**
 * 智能体配置实体
 */
export interface AiAgentConfig extends BaseDTO {
  /** 智能体名称 */
  name?: string;
  /** 智能体头像 */
  avatar?: string;
  /** 系统提示词 */
  systemPrompt?: string;
  /** 模型名称 */
  modelName?: string;
  /** 模型提供商 */
  modelProvider?: string;
  /** 温度值 */
  temperature?: number;
  /** 最大tokens */
  maxTokens?: number;
  /** Top P值 */
  topP?: number;
  /** 状态（0禁用 1启用） */
  status?: number;
  /** 创建者 */
  creator?: string;
  /** 更新者 */
  updater?: string;
}

/**
 * 对话会话实体
 */
export interface AiConversation extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 会话标题 */
  title?: string;
  /** 状态（0已结束 1进行中） */
  status?: number;
  /** 消息数量 */
  messageCount?: number;
  /** 最后消息时间 */
  lastMessageTime?: string;
}

/**
 * 对话消息实体
 */
export interface AiMessage extends BaseDTO {
  /** 会话ID */
  conversationID?: string;
  /** 用户ID */
  userID?: string;
  /** 角色（user用户 assistant助手 system系统） */
  role?: string;
  /** 消息内容 */
  content?: string;
  /** 关联文件ID（JSON数组） */
  fileIDs?: string;
  /** 引用知识ID（JSON数组） */
  knowledgeIDs?: string;
  /** Token数量 */
  tokenCount?: number;
}

/**
 * 知识库实体
 */
export interface AiKnowledge extends BaseDTO {
  /** 知识标题 */
  title?: string;
  /** 知识内容 */
  content?: string;
  /** 知识类型（1文本 2文件） */
  type?: number;
  /** 文件ID */
  fileID?: string;
  /** 状态（0禁用 1启用） */
  status?: number;
  /** 创建者 */
  creator?: string;
}

/**
 * 上传文件实体
 */
export interface AiUploadFile extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 文件名 */
  fileName?: string;
  /** 文件路径 */
  filePath?: string;
  /** 文件大小 */
  fileSize?: number;
  /** 文件类型 */
  fileType?: string;
  /** 状态（0处理中 1成功 2失败） */
  status?: number;
  /** 错误信息 */
  errorMessage?: string;
}

/**
 * 使用统计实体
 */
export interface AiUsageStatistics extends BaseDTO {
  /** 用户ID */
  userID?: string;
  /** 统计日期 */
  statisticsDate?: string;
  /** 对话次数 */
  conversationCount?: number;
  /** 消息数量 */
  messageCount?: number;
  /** Token使用量 */
  tokenUsage?: number;
  /** 文件上传次数 */
  fileUploadCount?: number;
}

/**
 * 对话请求参数
 */
export interface ChatRequest {
  /** 会话ID */
  conversationID?: string;
  /** 消息内容 */
  message?: string;
  /** 文件ID列表 */
  fileIDs?: string[];
  /** 是否流式返回 */
  stream?: boolean;
}

/**
 * 对话响应参数
 */
export interface ChatResponse {
  /** 消息ID */
  messageID?: string;
  /** 消息内容 */
  content?: string;
  /** Token使用量 */
  tokenUsage?: number;
  /** 是否完成 */
  isComplete?: boolean;
}

/**
 * 文件上传响应
 */
export interface FileUploadResponse {
  /** 文件ID */
  fileID?: string;
  /** 文件名 */
  fileName?: string;
  /** 文件大小 */
  fileSize?: number;
  /** 处理状态 */
  status?: number;
}
