import type { BaseDTO, BaseVO } from '../base'

/**
 * 知识库配置
 */
export interface TbKnowledge extends BaseDTO {
    /** 知识库ID */
    knowledgeId?: string
    /** 知识库标题 */
    title?: string
    /** 知识库头像 */
    avatar?: string
    /** 知识库描述 */
    description?: string
    /** Dify知识库ID（Dataset ID） */
    difyDatasetId?: string
    /** Dify索引方式（high_quality/economy） */
    difyIndexingTechnique?: 'high_quality' | 'economy'
    /** 向量模型名称 */
    embeddingModel?: string
    /** 向量模型提供商 */
    embeddingModelProvider?: string
    /** Rerank模型名称 */
    rerankModel?: string
    /** Rerank模型提供商 */
    rerankModelProvider?: string
    /** 是否启用Rerank（0否 1是） */
    rerankingEnable?: number
    /** 检索Top K（返回前K个结果） */
    retrievalTopK?: number
    /** 检索分数阈值（0.00-1.00） */
    retrievalScoreThreshold?: number
    /** 文档数量 */
    documentCount?: number
    /** 总分段数 */
    totalChunks?: number
    /** 所属服务 workcase、bidding */
    service?: string
    /** bidding所属项目ID */
    projectId?: string
    /** 所属分类  workcase的内部知识库、外部知识库，其他服务default */
    category?: string
}

/**
 * 知识库文件
 */
export interface TbKnowledgeFile extends BaseDTO {
    /** 知识库ID */
    knowledgeId?: string
    /** 文件ID */
    fileId?: string
    /** 文件根ID */
    fileRootId?: string
    /** Dify文件ID */
    difyFileId?: string
    /** 文件版本 */
    version?: number
}

/**
 * 知识库文件视图对象（关联文件信息）
 */
export interface KnowledgeFileVO extends BaseVO {
    // TbKnowledgeFile 的字段
    /** 知识库ID */
    knowledgeId?: string
    /** 文件ID */
    fileId?: string
    /** 文件根ID */
    fileRootId?: string
    /** Dify文件ID */
    difyFileId?: string
    /** 文件版本 */
    version?: number

    // TbSysFile 的字段
    /** 文件名 */
    fileName?: string
    /** 文件路径 */
    filePath?: string
    /** 文件大小（字节） */
    fileSize?: number
    /** 文件MIME类型 */
    fileMimeType?: string
    /** 文件访问URL */
    fileUrl?: string
    /** 文件扩展名 */
    fileExtension?: string
    /** 文件MD5值 */
    fileMd5Hash?: string
    /** 上传人员名称 */
    uploaderName?: string
}

/**
 * 文档分段请求体
 */
export interface SegmentRequestBody {
    [key: string]: any
}

/**
 * 文档状态请求体
 */
export interface DocumentStatusRequestBody {
    [key: string]: any
}