package org.xyzh.ai.client.dto;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

/**
 * @description Dify检索模型配置（Retrieval Model）
 * @filename RetrievalModel.java
 * @author AI Assistant
 * @copyright xyzh
 * @since 2025-11-06
 */
@Data
public class RetrievalModel {
    
    /**
     * 搜索方法：vector_search（向量搜索）、full_text_search（全文搜索）、hybrid_search（混合搜索）
     */
    @JSONField(name = "search_method")
    private String searchMethod;
    
    /**
     * Rerank是否启用
     */
    @JSONField(name = "reranking_enable")
    private Boolean rerankingEnable;
    
    /**
     * Rerank模式（字符串，值为 "reranking_model"）
     */
    @JSONField(name = "reranking_mode")
    private String rerankingMode;
    
    /**
     * Rerank模型配置（当 reranking_enable=true 时必须设置）
     */
    @JSONField(name = "reranking_model")
    private RerankingModel rerankingModel;
    
    /**
     * Top K（返回前K个结果）
     */
    @JSONField(name = "top_k")
    private Integer topK;
    
    /**
     * 分数阈值（0.00-1.00）
     */
    @JSONField(name = "score_threshold")
    private Double scoreThreshold;
    
    /**
     * 是否启用分数阈值
     */
    @JSONField(name = "score_threshold_enabled")
    private Boolean scoreThresholdEnabled;
    
    /**
     * Rerank模型配置（嵌套对象）
     */
    @Data
    public static class RerankingModel {
        /**
         * Rerank模型提供商
         */
        @JSONField(name = "reranking_provider_name")
        private String rerankingProviderName;
        
        /**
         * Rerank模型名称
         */
        @JSONField(name = "reranking_model_name")
        private String rerankingModelName;
    }
}

