/**
 * 用于提交 prompt 的列定义格式
 * 从 TableColumnDefinition 转换而来，格式为 { code, title, type }
 */
export interface PromptColumnDefinition {
    /**
     * 列ID，对应表格列定义的 dataIndex
     */
    code: string;
    /**
     * 列名称，对应表格列定义的 title
     */
    title: string;
    /**
     * 列类型，对应表格列定义的 format，如 'date', 'number', 'string' 等
     */
    type: string;
}
/**
 * 提交 prompt 的请求参数
 */
export interface SubmitPromptParams {
    /**
     * 用户选中的数据（单元格/行/列）
     * 根据选择类型不同，rowData 的结构也不同：
     * - 单元格选择：{ [columnId]: value }，即列名作为键，值作为值
     * - 行选择：完整的行数据，所有列名作为键
     * - 列选择：{ [columnId]: value }，即列名作为键，值作为值
     */
    selectedData: Array<{
        /**
         * 行ID
         */
        rowId: string;
        /**
         * 行数据，根据选择类型结构不同
         */
        rowData: Record<string, any>;
    }>;
    /**
     * 完整的表格数据，作为上下文信息提供给 AI
     * 格式为 { rowId, rowData }，rowData 为完整的行数据
     */
    relatedData?: Array<{
        /**
         * 行ID
         */
        rowId: string;
        /**
         * 完整的行数据
         */
        rowData: Record<string, any>;
    }>;
    /**
     * 用户的提示词，即用户输入的问题或指令
     */
    userPrompt: string;
    /**
     * 用户ID（workId）
     */
    userId: string;
    /**
     * 表格唯一标识，与视图/数据接口一致（如 aiConfig.id 或 getId 解析结果）
     */
    tableId: string;
    /**
     * 会话ID，用于关联多轮对话
     * 首次会话时为 null，后续会话使用返回的 conversationId
     */
    conversationId?: string | null;
    /**
     * 表格列定义，用于告诉 AI 表格的结构和字段类型
     */
    columnDefinitions?: PromptColumnDefinition[];
}
/**
 * 提交 prompt 的响应结果
 */
export interface SubmitPromptResult {
    /**
     * 响应消息ID，用于后续查询 AI 回复
     */
    respMessageId: string;
    /**
     * 会话ID，用于关联多轮对话
     * 首次会话时返回新生成的 ID，后续会话返回相同的 ID
     */
    conversationId: string;
}
/**
 * 查询 prompt 返回的请求参数
 */
export interface QueryResponseParams {
    /**
     * 会话ID，从 SubmitPromptResult 中获取
     */
    conversationId: string;
    /**
     * 消息ID，从 SubmitPromptResult 中获取
     */
    messageId: string;
}
/**
 * queryResponse 等接口返回的 metaData 中常见业务字段
 * 其余键值仍可能存在，调用方可用 Record 方式读取
 */
export interface AgentAssistantResponseMetaData {
    standardModified?: boolean;
    /**
     * 快捷回复选项文案列表
     * 前端可转为 ChatQuickReply，点击后以用户消息发送对应文本
     */
    suggestedChoices?: string[];
}
/**
 * 查询 prompt 返回的响应结果
 */
export interface QueryResponseResult {
    /**
     * 消息ID
     * 如果数据还在生成中，返回 -1
     */
    id: number;
    /**
     * 消息文本内容
     * 如果数据还在生成中，返回 '正在生成回复...'
     */
    text: string;
    /**
     * 消息类型，通常为 'ASSISTANT'
     */
    messageType: string;
    /**
     * 是否正在处理中
     * true 表示数据还在生成，需要继续轮询
     * false 表示数据已生成完成，停止轮询
     */
    onGoing: boolean;
    /**
     * 业务扩展元数据
     * 常见字段见 {@link AgentAssistantResponseMetaData}
     */
    metaData?: AgentAssistantResponseMetaData & Record<string, unknown>;
}
