/**
 * 工作流请求体
 */
export interface WorkFlowRunner {
  workflowId?: string;
  inputs?: {
    name: string;
    type: string;
    content: {
      value: string;
      type: string;
    };
  }[];
}

/**
 * 人机交互信息体
 */
export interface ReSumeRunner {
  runtimeUuid?: string;
  feedbackContent?: string;
}

/**
 * SSE 事件类型
 */
export type SseEventType = 'content' | 'reasoning' | 'done' | 'error' | 'message';

/**
 * SSE 事件数据
 */
export interface SseEventData {
  /**
   * 事件类型
   */
  event: SseEventType;
  /**
   * 消息内容
   */
  content?: string;
  /**
   * 推理内容（深度思考模式）
   */
  reasoningContent?: string;
  /**
   * 错误信息
   */
  error?: string;
  /**
   * 是否完成
   */
  done?: boolean;
}

/**
 * ChatRequest，描述：对话请求对象
 */
export interface SendDTO {
  /**
   * 传入的模型（必填）
   */
  model: string;
  /**
   * 对话消息（必填）
   */
  content: string;
  /**
   * 工作流请求体
   */
  workFlowRunner?: WorkFlowRunner;
  /**
   * 人机交互信息体
   */
  reSumeRunner?: ReSumeRunner;
  /**
   * 是否为人机交互用户继续输入
   */
  isResume?: boolean;
  /**
   * 是否启用工作流
   */
  enableWorkFlow?: boolean;
  /**
   * 会话id
   */
  sessionId?: string;
  /**
   * 知识库id
   */
  knowledgeId?: string;
  /**
   * 应用ID
   */
  appId?: string;
  /**
   * 对话id(每个聊天窗口都不一样)
   */
  uuid?: number;
  /**
   * 是否启用深度思考
   */
  enableThinking?: boolean;
  /**
   * 是否支持联网
   */
  enableInternet?: boolean;
}

/**
 * Message，描述：
 */
export interface Message {
  content?: string;
  name?: string;
  reasoning_content?: string;
  /**
   * 目前支持四个中角色参考官网，进行情景输入：
   * https://platform.openai.com/docs/guides/chat/introduction
   */
  role?: 'system' | 'user' | 'assistant' | 'function' | 'tool';
  tool_call_id?: string;
  /**
   * The tool calls generated by the model, such as function calls.
   */
  tool_calls?: ToolCalls[];
}

/**
 * ToolCalls，The tool calls generated by the model, such as function calls.
 */
export interface ToolCalls {
  function?: ToolCallFunction;
  /**
   * The ID of the tool call.
   */
  id?: string;
  /**
   * The type of the tool. Currently, only function is supported.
   */
  type?: string;
}

/**
 * ToolCallFunction，ToolCall 的 Function参数
 * The function that the model called.
 */
export interface ToolCallFunction {
  /**
   * 方法参数
   */
  arguments?: string;
  /**
   * 方法名
   */
  name?: string;
}

export interface GetChatListParams {
  /**
   * 消息内容
   */
  content?: string;
  /**
   * 创建者
   */
  createBy?: number;
  /**
   * 创建部门
   */
  createDept?: number;
  /**
   * 创建时间
   */
  createTime?: Date;
  /**
   * 扣除金额
   */
  deductCost?: number;
  /**
   * 主键
   */
  id?: number;
  /**
   * 排序的方向desc或者asc
   */
  isAsc?: string;
  /**
   * 模型名称
   */
  modelName?: string;
  /**
   * 排序列
   */
  orderByColumn?: string;
  /**
   * 当前页数
   */
  pageNum?: number;
  /**
   * 分页大小
   */
  pageSize?: number;
  /**
   * 请求参数
   */
  params?: { [key: string]: { [key: string]: any } };
  /**
   * 备注
   */
  remark?: string;
  /**
   * 对话角色
   */
  role?: string;
  /**
   * 会话id
   */
  sessionId?: string;
  /**
   * 累计 Tokens
   */
  totalTokens?: number;
  /**
   * 更新者
   */
  updateBy?: number;
  /**
   * 更新时间
   */
  updateTime?: Date;
  /**
   * 用户id
   */
  userId?: number;
}

/**
 * ChatMessageVo，聊天消息视图对象 chat_message
 */
export interface ChatMessageVo {
  /**
   * 消息内容
   */
  content?: string;
  /**
   * 扣除金额
   */
  deductCost?: number;
  /**
   * 主键
   */
  id?: number;
  /**
   * 模型名称
   */
  modelName?: string;
  /**
   * 备注
   */
  remark?: string;
  /**
   * 对话角色
   */
  role?: string;
  /**
   * 会话id
   */
  sessionId?: string;
  /**
   * 累计 Tokens
   */
  totalTokens?: number;
  /**
   * 用户id
   */
  userId?: number;
}

export interface workflowVo {
  currentPage?: number;

  pageSize?: number;
}
