package org.dromara.ai.domain.vo;

import io.github.linpeilie.annotations.AutoMapper;
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)
public class AiProviderConfigVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    private Long id;

    /**
     * Provider名称
     */
    private String providerName;

    /**
     * Provider类型
     */
    private String providerType;

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

    /**
     * 是否启用（字符串显示）
     */
    private String enabledStr;

    /**
     * 优先级(数字越小优先级越高)
     */
    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 createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private Date updateTime;

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

}
