package org.dromara.ai.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.ai.domain.AiProviderConfig;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * AI Provider配置业务对象 ai_provider_config
 *
 * @author pengles
 */
@Data
@EqualsAndHashCode
@AutoMapper(target = AiProviderConfig.class, reverseConvertGenerate = false)
public class AiProviderConfigBo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    private Long id;

    /**
     * Provider名称
     */
    @NotBlank(message = "Provider名称不能为空")
    private String providerName;

    /**
     * Provider类型
     */
    @NotBlank(message = "Provider类型不能为空")
    private String providerType;

    /**
     * 是否启用(0=禁用 1=启用)
     */
    private Integer enabled;

    /**
     * 优先级(数字越小优先级越高)
     */
    private Integer priority;

    /**
     * 权重(用于负载均衡)
     */
    private Integer weight;

    /**
     * 最大并发数
     */
    private Integer maxConcurrency;

    /**
     * 超时时间(秒)
     */
    private Integer timeoutSeconds;

    /**
     * 最大重试次数
     */
    private Integer maxRetries;

    /**
     * 熔断器配置(JSON字符串)
     */
    private String circuitBreakerConfig;

    /**
     * 限流配置(JSON字符串)
     */
    private String rateLimitConfig;

    /**
     * API配置(JSON字符串)
     */
    private String apiConfig;

    /**
     * 模型配置(JSON字符串)
     */
    private String modelConfig;

    /**
     * 扩展配置(JSON字符串)
     */
    private String extensionConfig;

    /**
     * 健康检查URL
     */
    private String healthCheckUrl;

    /**
     * 健康检查间隔(秒)
     */
    private Integer healthCheckInterval;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间开始（用于查询）
     */
    private Date createTimeStart;

    /**
     * 创建时间结束（用于查询）
     */
    private Date createTimeEnd;

}
