package org.xyzh.ai.client.dto;

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

import java.util.List;
import java.util.Map;

/**
 * @description Dify嵌入模型响应
 * @filename EmbeddingModelResponse.java
 * @author AI Assistant
 * @since 2025-11-06
 */
@Data
public class EmbeddingModelResponse {
    
    /**
     * 模型提供商列表
     */
    @JSONField(name = "data")
    private List<ModelProvider> data;
    
    /**
     * 模型提供商
     */
    @Data
    public static class ModelProvider {
        /**
         * 提供商标识
         */
        @JSONField(name = "provider")
        private String provider;
        
        /**
         * 提供商标签
         */
        @JSONField(name = "label")
        private Map<String, String> label;
        
        /**
         * 小图标
         */
        @JSONField(name = "icon_small")
        private Map<String, String> iconSmall;
        
        /**
         * 大图标
         */
        @JSONField(name = "icon_large")
        private Map<String, String> iconLarge;
        
        /**
         * 状态
         */
        @JSONField(name = "status")
        private String status;
        
        /**
         * 模型列表
         */
        @JSONField(name = "models")
        private List<Model> models;
    }
    
    /**
     * 模型详情
     */
    @Data
    public static class Model {
        /**
         * 模型名称
         */
        @JSONField(name = "model")
        private String model;
        
        /**
         * 模型标签
         */
        @JSONField(name = "label")
        private Map<String, String> label;
        
        /**
         * 模型类型
         */
        @JSONField(name = "model_type")
        private String modelType;
        
        /**
         * 特性列表
         */
        @JSONField(name = "features")
        private List<Object> features;
        
        /**
         * 获取来源
         */
        @JSONField(name = "fetch_from")
        private String fetchFrom;
        
        /**
         * 模型属性
         */
        @JSONField(name = "model_properties")
        private ModelProperties modelProperties;
        
        /**
         * 是否已弃用
         */
        @JSONField(name = "deprecated")
        private Boolean deprecated;
        
        /**
         * 状态
         */
        @JSONField(name = "status")
        private String status;
        
        /**
         * 是否启用负载均衡
         */
        @JSONField(name = "load_balancing_enabled")
        private Boolean loadBalancingEnabled;
    }
    
    /**
     * 模型属性
     */
    @Data
    public static class ModelProperties {
        /**
         * 上下文大小
         */
        @JSONField(name = "context_size")
        private Integer contextSize;
        
        /**
         * 最大分块数
         */
        @JSONField(name = "max_chunks")
        private Integer maxChunks;
    }
}

