/**
 * 知识库列表请求参数
 */
export interface ListKnowledgeRequest {
    /**
     * 知识库所属项目
     */
    project?: string;
    
    /**
     * 是否查询和返回索引状态
     * @default false
     */
    brief?: boolean;
}

/**
 * 知识库列表响应数据
 */
export interface ListKnowledgeResponse {
    /**
     * 知识库总数
     */
    total_num: number;
    
    /**
     * 知识库列表
     */
    collection_list: Array<KnowledgeInfo>;
    
    /**
     * 资源ID
     */
    resource_id?: string;
    
    /**
     * 项目名称
     */
    project?: string;
}

/**
 * 知识库基本信息
 */
export interface KnowledgeInfo {
    /**
     * 知识库名称
     */
    collection_name: string;
    
    /**
     * 描述
     */
    description: string;
    
    /**
     * 创建时间
     */
    create_time: number;
    
    /**
     * 更新时间
     */
    update_time: number;
    
    /**
     * 创建者
     */
    creator: string;
    
    /**
     * 数据处理管道列表
     */
    pipeline_list: Array<PipelineInfo>;
    
    /**
     * 数据类型
     */
    data_type: string;
}

/**
 * 数据处理管道信息
 */
export interface PipelineInfo {
    /**
     * 管道类型
     */
    pipeline_type: string;
    
    /**
     * 管道状态
     */
    pipeline_stat: {
        doc_num: number;
        finish_doc_num: number;
        point_num: number;
        success_doc_num: number;
    };
    
    /**
     * 索引列表
     */
    index_list: Array<IndexInfo>;
    
    /**
     * 预处理列表
     */
    preprocessing_list: Array<PreprocessingInfo>;
    
    /**
     * 表配置列表
     */
    table_config_list: Array<TableConfig>;
}

/**
 * 索引信息
 */
export interface IndexInfo {
    /**
     * 索引类型
     */
    index_type: string;
    
    /**
     * 索引配置
     */
    index_config: {
        vector_field: {
            field_name: string;
            field_type: string;
            dim: number;
        };
        sparse_vector_field: {
            field_name: string;
            field_type: string;
        };
        cpu_quota: number;
        distance: string;
        quant: string;
        embedding_model: string;
        embedding_dimension: number;
        need_instruction: boolean;
        fields: Array<{
            field_name: string;
            field_type: string;
        }>;
    };
    
    /**
     * 主键
     */
    primary_key: string;
    
    /**
     * 状态
     */
    status: number;
}

/**
 * 预处理信息
 */
export interface PreprocessingInfo {
    /**
     * 分块策略
     */
    chunking_strategy: string;
    
    /**
     * 分块标识符
     */
    chunking_identifier: string | null;
    
    /**
     * 分块长度
     */
    chunk_length: number;
}

/**
 * 表配置信息
 */
export interface TableConfig {
    /**
     * 表类型
     */
    table_type: string;
    
    /**
     * 表位置
     */
    table_pos: number;
    
    /**
     * 起始位置
     */
    start_pos: number;




    
    /**
     * 表字段
     */
    table_fields: Array<{
        field_name: string;
        field_type: string;
        if_embedding: boolean;
        if_filter: boolean;
    }>;
}

export type CreateKnowledgeRequestDataType = 'unstructured_data' | 'structured_data'; // 默认值为 'unstructured_data'
export type CreateKnowledgeRequestPreprocessing = {
    chunking_strategy: 'custom_balance' | 'custom';
    chunking_identifier?: string[]
    chunk_length?: number; // 默认500
    merge_small_chunks?: boolean; // 是否合并短文本片, 默认true
    multi_modal?: string; // 图片召回策略
}
// 当 data_type为“structured_data”时生效
export type CreateKnowledgeRequestTableConfig = {
    table_type?: string;
    table_pos?: number;
    start_pos?: number;
    table_fields?: Array<{
        field_name: string;
        field_type: string;
        if_embedding?: boolean;
        if_filter?: boolean;
    }>;
}
export type CreateKnowledgeRequestIndex = {
    index_type?: "hnsw_hybrid" | 'hnsw' | 'flat'; // 推荐选择 “hnsw_hybrid”，能够兼具对关键词和语义的理解，综合提高检索精度
    index_config?: {
        fields?: Array<{
            field_name: string;
            field_type: string;
            default_val?: string;
        }>;
        cpu_quota?: number; // 默认1
        embedding_model?: string | 'doubao-embedding-and-m3';
        embedding_dimension?: number;
        quant?: string | 'float' | 'int8' | 'fix16';
    };
}
/**
 * 知识库创建请求参数
 */
export interface CreateKnowledgeRequest {
    /**
     * 知识库名称
     */
    name: string;
    
    /**
     * 知识库所属项目
     */
    project?: string;
    
    /**
     * 知识库描述
     */
    description?: string;
    
    /**
     * 数据类型
     */
    data_type?: CreateKnowledgeRequestDataType;
    
    /**
     * 预处理配置
     */
    preprocessing?: CreateKnowledgeRequestPreprocessing;
    
    /**
     * 表配置
     */
    table_config?: CreateKnowledgeRequestTableConfig;
    
    /**
     * 索引配置
     */
    index?: CreateKnowledgeRequestIndex
}

/**
 * 知识库创建响应数据
 */
export interface CreateKnowledgeResponse {
    /**
     * 资源ID
     */
    resource_id: string;
}

/**
 * 知识库详情响应数据
 */
export interface InfoKnowledgeResponse {
    /**
     * 知识库名称
     */
    collection_name: string;
    
    /**
     * 描述
     */
    description: string;
    
    /**
     * 文档数
     */
    doc_num: number;
    
    /**
     * 创建时间
     */
    create_time: number;
    
    /**
     * 更新时间
     */
    update_time: number;
    
    /**
     * 创建者
     */
    creator: string;
    
    /**
     * 数据处理管道列表
     */
    pipeline_list: PipelineInfo[];
    
    /**
     * 数据类型
     */
    data_type: string;
    
    /**
     * 资源ID
     */
    resource_id: string;
    
    /**
     * 项目名称
     */
    project: string;
}

/**
 * 知识库详情请求参数
 */
export interface InfoKnowledgeRequest {

    /**
     * 知识库名称
     */
    name: string;
    
    /**
     * 知识库所属项目
     */
    project?: string;
    
    /**
     * 资源ID
     */
    resource_id?: string;
}

/**
 * 知识库更新请求参数
 */
/**
 * 知识库删除请求参数
 */
export interface DeleteKnowledgeRequest {
    /**
     * 知识库名称
     */
    name?: string;
    
    /**
     * 知识库所属项目
     * @default "default"
     */
    project?: string;
    
    /**
     * 知识库资源ID
     */
    resource_id?: string;
}

export interface UpdateKnowledgeRequest {
    /**
     * 知识库名称
     */
    name?: string;
    
    /**
     * 知识库所属项目
     */
    project?: string;
    
    /**
     * 资源ID
     */
    resource_id?: string;
    
    /**
     * 知识库描述
     */
    description?: string;
    
    /**
     * CPU配额
     */
    cpu_quota?: number;
    
    /**
     * 标签列表
     */
    fields?: Array<{
        field_name: string;
        field_type: string;
        default_val?: string;
    }>;
}