import request from "@/utils/request"; /** * AI 命令请求参数 */ export interface AiCommandRequest { /** 用户输入的自然语言命令 */ command: string; /** 当前页面路由(用于上下文) */ currentRoute?: string; /** 当前激活的组件名称 */ currentComponent?: string; /** 额外上下文信息 */ context?: Record; } /** * 函数调用参数 */ export interface FunctionCall { /** 函数名称 */ name: string; /** 函数描述 */ description?: string; /** 参数对象 */ arguments: Record; } /** * AI 命令解析响应 */ export interface AiCommandResponse { /** 解析日志ID(用于关联执行记录) */ parseLogId?: string; /** 是否成功解析 */ success: boolean; /** 解析后的函数调用列表 */ functionCalls: FunctionCall[]; /** AI 的理解和说明 */ explanation?: string; /** 置信度 (0-1) */ confidence?: number; /** 错误信息 */ error?: string; /** 原始 LLM 响应(用于调试) */ rawResponse?: string; } /** * AI 命令执行请求 */ export interface AiExecuteRequest { /** 关联的解析日志ID */ parseLogId?: string; /** 原始命令(用于审计) */ originalCommand?: string; /** 要执行的函数调用 */ functionCall: FunctionCall; /** 确认模式:auto=自动执行, manual=需要用户确认 */ confirmMode?: "auto" | "manual"; /** 用户确认标志 */ userConfirmed?: boolean; /** 幂等性令牌(防止重复执行) */ idempotencyKey?: string; /** 当前页面路由 */ currentRoute?: string; } /** * AI 命令执行响应 */ export interface AiExecuteResponse { /** 是否执行成功 */ success: boolean; /** 执行结果数据 */ data?: any; /** 执行结果说明 */ message?: string; /** 影响的记录数 */ affectedRows?: number; /** 错误信息 */ error?: string; /** 记录ID(用于追踪) */ recordId?: string; /** 需要用户确认 */ requiresConfirmation?: boolean; /** 确认提示信息 */ confirmationPrompt?: string; } export interface AiCommandRecordPageQuery extends PageQuery { keywords?: string; executeStatus?: number; parseStatus?: number; userId?: number; aiProvider?: string; aiModel?: string; functionName?: string; createTime?: [string, string]; } export interface AiCommandRecordVO { id: string; userId: number; username: string; originalCommand: string; aiProvider?: string; aiModel?: string; parseStatus?: number; functionCalls?: string; explanation?: string; confidence?: number; parseErrorMessage?: string; inputTokens?: number; outputTokens?: number; parseDurationMs?: number; functionName?: string; functionArguments?: string; executeStatus?: number; executeErrorMessage?: string; ipAddress?: string; createTime?: string; updateTime?: string; } /** * AI 命令 API */ class AiCommandApi { /** * 解析自然语言命令 * * @param data 命令请求参数 * @returns 解析结果 */ static parseCommand(data: AiCommandRequest): Promise { return request({ url: "/api/v1/ai/command/parse", method: "post", data, }); } /** * 执行已解析的命令 * * @param data 执行请求参数 * @returns 执行结果数据(成功时返回,失败时抛出异常) */ static executeCommand(data: AiExecuteRequest): Promise { return request({ url: "/api/v1/ai/command/execute", method: "post", data, }); } /** * 获取命令记录分页列表 */ static getCommandRecordPage(queryParams: AiCommandRecordPageQuery) { return request>({ url: "/api/v1/ai/command/records", method: "get", params: queryParams, }); } /** * 撤销命令执行(如果支持) */ static rollbackCommand(logId: string) { return request({ url: `/api/v1/ai/command/rollback/${logId}`, method: "post", }); } } export default AiCommandApi;