/** * ChatbotSDK 核心类型定义 */ /** SDK 初始化配置 */ export interface SDKConfig { // === 必传参数 === /** 集成标识 → 后端 chatId 参数 + 数据隔离 key */ integrateId: string; /** 后端 API 域名 */ requestDomain: string; // === 用户标识 === /** 宿主用户标识 → 后端 accountId 参数 */ userId?: string; /** 客服角色 ID */ roleId?: number; // === 知识库 === /** 默认知识库分类 ID */ categoryId?: number; /** 是否显示知识库下拉切换 */ showCategorySwitch?: boolean; // === UI 配置 === /** 弹窗标题文字,默认 "AI 智能助手" */ title?: string; /** 弹窗宽度(px),默认 380 */ width?: number; /** 悬浮按钮位置,默认 "right-bottom" */ position?: 'left-bottom' | 'right-bottom'; /** 主色调,默认 "#4F46E5" */ primaryColor?: string; /** 悬浮按钮图标(可传 URL 或 SVG 字符串) */ launcherIcon?: string; /** 是否显示清空对话按钮,默认 true */ showClear?: boolean; /** 是否显示管理面板,默认 false */ showAdminPanel?: boolean; // === 行为配置 === /** 是否启用流式输出,默认 true */ streaming?: boolean; /** 界面语言,默认 "zh-CN" */ locale?: string; /** 是否输出调试日志,默认 true */ debug?: boolean; } /** 解析后的完整配置(所有可选字段已填充默认值) */ export interface ResolvedConfig { integrateId: string; requestDomain: string; userId?: string; roleId?: number; categoryId?: number; showCategorySwitch: boolean; title: string; width: number; position: 'left-bottom' | 'right-bottom'; primaryColor: string; launcherIcon: string; showClear: boolean; showAdminPanel: boolean; streaming: boolean; locale: string; debug: boolean; } /** 聊天消息 */ export interface ChatMessage { /** 消息唯一 ID */ id: string; /** 角色:user 或 ai */ role: 'user' | 'ai'; /** 消息文本内容 */ content: string; /** 时间戳(毫秒) */ timestamp: number; /** 可选:RAG 引用来源 */ sources?: RagSource[]; } /** RAG 引用来源 */ export interface RagSource { documentId: string; title: string; sourceName: string; chunkIndex: number; score: number; snippet: string; } /** 本地缓存数据结构 */ export interface CacheData { messages: ChatMessage[]; updatedAt: number; } /** SDK 公开 API 接口 */ export interface ChatbotSDKInstance { /** 初始化 SDK */ init(config: SDKConfig): void; /** 销毁 SDK 实例 */ destroy(): void; /** 打开聊天窗口 */ open(): void; /** 关闭聊天窗口 */ close(): void; /** 切换窗口显示/隐藏 */ toggle(): void; /** 清空当前会话历史 */ clearHistory(): void; } /** 后端 API 响应通用结构 */ export interface ApiResponse { success: boolean; message?: string; data?: T; total?: number; page?: number; size?: number; pages?: number; }