This commit is contained in:
2025-11-04 18:49:37 +08:00
parent b95fff224b
commit 8850a06fea
103 changed files with 15337 additions and 771 deletions

View File

@@ -1,10 +1,11 @@
/**
* @description 智能体相关类型定义
* @author yslg
* @since 2025-10-15
* @description AI模块类型定义
* @author AI Assistant
* @since 2025-11-04
*/
import { BaseDTO } from '../base';
import { PageParam } from '../base';
/**
* 智能体配置实体
@@ -14,18 +15,24 @@ export interface AiAgentConfig extends BaseDTO {
name?: string;
/** 智能体头像 */
avatar?: string;
/** 智能体描述 */
description?: string;
/** 系统提示词 */
systemPrompt?: string;
/** 模型名称 */
modelName?: string;
/** 模型提供商 */
modelProvider?: string;
/** 温度值 */
/** 温度值0.0-1.0 */
temperature?: number;
/** 最大tokens */
maxTokens?: number;
/** Top P值 */
topP?: number;
/** Dify应用ID */
difyAppId?: string;
/** Dify API Key */
difyApiKey?: string;
/** 状态0禁用 1启用 */
status?: number;
/** 创建者 */
@@ -34,18 +41,84 @@ export interface AiAgentConfig extends BaseDTO {
updater?: string;
}
/**
* AI知识库实体
*/
export interface AiKnowledge extends BaseDTO {
/** 知识库名称 */
name?: string;
/** 知识库描述 */
description?: string;
/** 索引方式high_quality=高质量, economy=经济) */
indexingTechnique?: string;
/** Embedding模型 */
embeddingModel?: string;
/** Dify数据集ID */
difyDatasetId?: string;
/** 同步状态0未同步 1已同步 2同步失败 */
syncStatus?: number;
/** 文档数量 */
documentCount?: number;
/** 字符数 */
characterCount?: number;
/** 创建者部门 */
creatorDept?: string;
/** 状态0禁用 1启用 */
status?: number;
}
/**
* AI上传文件实体
*/
export interface AiUploadFile extends BaseDTO {
/** 知识库ID */
knowledgeId?: string;
/** 文件名 */
fileName?: string;
/** 文件路径 */
filePath?: string;
/** 文件大小(字节) */
fileSize?: number;
/** 文件类型MIME类型 */
fileType?: string;
/** Dify文档ID */
difyDocumentId?: string;
/** Dify批次ID */
difyBatchId?: string;
/** 上传状态0处理中 1成功 2失败 */
uploadStatus?: number;
/** 向量化状态0待处理 1处理中 2已完成 3失败 */
vectorStatus?: number;
/** 分片数 */
segmentCount?: number;
/** 错误信息 */
errorMessage?: string;
}
/**
* 对话会话实体
*/
export interface AiConversation extends BaseDTO {
/** 用户ID */
userID?: string;
/** 智能体ID */
agentID?: string;
/** 会话标题 */
title?: string;
/** 会话摘要 */
summary?: string;
/** Dify会话ID */
difyConversationId?: string;
/** 状态0已结束 1进行中 */
status?: number;
/** 是否收藏 */
isFavorite?: boolean;
/** 是否置顶 */
isPinned?: boolean;
/** 消息数量 */
messageCount?: number;
/** Token总数 */
totalTokens?: number;
/** 最后消息时间 */
lastMessageTime?: string;
}
@@ -58,6 +131,8 @@ export interface AiMessage extends BaseDTO {
conversationID?: string;
/** 用户ID */
userID?: string;
/** 智能体ID */
agentID?: string;
/** 角色user用户 assistant助手 system系统 */
role?: string;
/** 消息内容 */
@@ -66,54 +141,26 @@ export interface AiMessage extends BaseDTO {
fileIDs?: string;
/** 引用知识IDJSON数组 */
knowledgeIDs?: string;
/** 知识库引用详情JSON数组 */
knowledgeRefs?: string;
/** Token数量 */
tokenCount?: number;
/** Dify消息ID */
difyMessageId?: string;
/** 评分1=好评,-1=差评) */
rating?: number;
/** 反馈内容 */
feedback?: string;
}
/**
* 知识库实体
*/
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;
}
/**
* 使用统计实体
* AI使用统计实体
*/
export interface AiUsageStatistics extends BaseDTO {
/** 用户ID */
userID?: string;
/** 智能体ID */
agentID?: string;
/** 统计日期 */
statisticsDate?: string;
/** 对话次数 */
@@ -122,6 +169,8 @@ export interface AiUsageStatistics extends BaseDTO {
messageCount?: number;
/** Token使用量 */
tokenUsage?: number;
/** 知识库查询次数 */
knowledgeQueryCount?: number;
/** 文件上传次数 */
fileUploadCount?: number;
}
@@ -130,12 +179,14 @@ export interface AiUsageStatistics extends BaseDTO {
* 对话请求参数
*/
export interface ChatRequest {
/** 会话ID */
conversationID?: string;
/** 消息内容 */
message?: string;
/** 文件ID列表 */
fileIDs?: string[];
/** 智能体ID */
agentId: string;
/** 会话ID可选为空则创建新会话 */
conversationId?: string;
/** 用户问题 */
query: string;
/** 指定的知识库ID列表可选 */
knowledgeIds?: string[];
/** 是否流式返回 */
stream?: boolean;
}
@@ -145,7 +196,9 @@ export interface ChatRequest {
*/
export interface ChatResponse {
/** 消息ID */
messageID?: string;
messageId?: string;
/** 会话ID */
conversationId?: string;
/** 消息内容 */
content?: string;
/** Token使用量 */
@@ -159,11 +212,243 @@ export interface ChatResponse {
*/
export interface FileUploadResponse {
/** 文件ID */
fileID?: string;
fileId?: string;
/** 文件名 */
fileName?: string;
/** 文件大小 */
fileSize?: number;
/** 处理状态 */
status?: number;
/** Dify文档ID */
difyDocumentId?: string;
}
/**
* 会话搜索参数
*/
export interface ConversationSearchParams {
/** 智能体ID可选 */
agentId?: string;
/** 关键词 */
keyword?: string;
/** 是否收藏(可选) */
isFavorite?: boolean;
/** 开始日期 */
startDate?: string;
/** 结束日期 */
endDate?: string;
/** 分页参数 */
pageParam?: PageParam;
}
/**
* 消息搜索参数
*/
export interface MessageSearchParams {
/** 关键词 */
keyword: string;
/** 会话ID可选限定范围 */
conversationId?: string;
/** 分页参数 */
pageParam?: PageParam;
}
/**
* 用户对话统计
*/
export interface UserChatStatistics {
/** 会话总数 */
totalConversations?: number;
/** 消息总数 */
totalMessages?: number;
/** Token总数 */
totalTokens?: number;
/** 收藏会话数 */
favoriteConversations?: number;
/** 最近活跃会话数7天 */
recentActiveConversations?: number;
}
/**
* 会话统计详情
*/
export interface ConversationStatistics {
/** 会话ID */
conversationId?: string;
/** 标题 */
title?: string;
/** 消息数量 */
messageCount?: number;
/** Token总数 */
totalTokens?: number;
/** 创建时间 */
createTime?: string;
/** 最后消息时间 */
lastMessageTime?: string;
/** 用户消息数 */
userMessageCount?: number;
/** AI回复数 */
assistantMessageCount?: number;
/** 评分分布 */
ratingDistribution?: Array<{ rating: number; count: number }>;
/** 反馈数量 */
feedbackCount?: number;
}
/**
* 批量导出参数
*/
export interface BatchExportParams {
/** 会话ID列表 */
conversationIds: string[];
/** 格式markdown/json */
format: 'markdown' | 'json';
}
/**
* 知识库权限参数
*/
export interface KnowledgePermissionParams {
/** 知识库ID */
knowledgeId: string;
/** 部门ID列表 */
deptIds: string[];
/** 角色ID列表 */
roleIds: string[];
}
/**
* Streaming 回调接口
*/
export interface StreamCallback {
/** 接收到消息片段 */
onMessage?: (message: string) => void;
/** 消息结束 */
onMessageEnd?: (metadata: string) => void;
/** 完成 */
onComplete?: () => void;
/** 错误 */
onError?: (error: Error) => void;
}
// ==================== Dify 文档分段相关类型 ====================
/**
* Dify 分段(父级)
*/
export interface DifySegment {
/** 分段ID */
id: string;
/** 位置序号 */
position: number;
/** 文档ID */
document_id: string;
/** 分段内容 */
content: string;
/** 字数 */
word_count: number;
/** Token数 */
tokens: number;
/** 关键词列表 */
keywords: string[];
/** 索引节点ID */
index_node_id: string;
/** 索引节点哈希 */
index_node_hash: string;
/** 命中次数 */
hit_count: number;
/** 是否启用 */
enabled: boolean;
/** 禁用时间 */
disabled_at?: number;
/** 禁用者 */
disabled_by?: string;
/** 状态 */
status: string;
/** 创建者ID */
created_by: string;
/** 创建时间(时间戳) */
created_at: number;
/** 索引开始时间 */
indexing_at?: number;
/** 完成时间 */
completed_at?: number;
/** 错误信息 */
error?: string;
/** 停止时间 */
stopped_at?: number;
}
/**
* Dify 子块(分段内容块)
*/
export interface DifyChildChunk {
/** 子块ID */
id: string;
/** 父分段ID */
segment_id: string;
/** 分段内容 */
content: string;
/** 字数 */
word_count: number;
/** Token数 */
tokens: number;
/** 索引节点ID */
index_node_id: string;
/** 索引节点哈希 */
index_node_hash: string;
/** 状态 */
status: string;
/** 创建者ID */
created_by: string;
/** 创建时间(时间戳) */
created_at: number;
/** 索引开始时间 */
indexing_at?: number;
/** 完成时间 */
completed_at?: number;
/** 错误信息 */
error?: string;
/** 停止时间 */
stopped_at?: number;
}
/**
* Dify 分段列表响应
*/
export interface DifySegmentListResponse {
/** 分段数据列表 */
data: DifySegment[];
}
/**
* Dify 子块列表响应
*/
export interface DifyChildChunkListResponse {
/** 子块数据列表 */
data: DifyChildChunk[];
}
/**
* Dify 子块单个响应
*/
export interface DifyChildChunkResponse {
/** 子块数据 */
data: DifyChildChunk;
}
/**
* 分段更新请求
*/
export interface SegmentUpdateRequest {
/** 更新的内容 */
content: string;
}
/**
* 分段创建请求
*/
export interface SegmentCreateRequest {
/** 分段内容 */
content: string;
}