package com.seer.teach.teacher.module.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.seer.teach.common.entity.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.math.BigDecimal;

/**
 * <p>
 * AI场景配置表
 * </p>
 *
 * @author System
 * @since 2025-10-27
 */
@Getter
@Setter
@ToString
@TableName("ai_scenario_config")
public class AiScenarioConfigEntity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 场景ID
     */
    @TableField("scenario_id")
    private Long scenarioId;

    /**
     * API密钥ID
     */
    @TableField("api_key_id")
    private Long apiKeyId;

    /**
     * 模型ID
     */
    @TableField("module_id")
    private Long moduleId;

    /**
     * 平台
     */
    private String platform;

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

    /**
     * 是否启用
     */
    @TableField("enabled")
    private Integer enabled;

    /**
     * 最大token数(为空使用场景默认值)
     */
    @TableField("max_tokens")
    private Integer maxTokens;

    /**
     * 温度参数(为空使用场景默认值)
     */
    @TableField("temperature")
    private BigDecimal temperature;

    /**
     * Top P参数
     */
    @TableField("top_p")
    private BigDecimal topP;

    /**
     * 频率惩罚
     */
    @TableField("frequency_penalty")
    private BigDecimal frequencyPenalty;

    /**
     * 存在惩罚
     */
    @TableField("presence_penalty")
    private BigDecimal presencePenalty;

    /**
     * 自定义配置JSON
     */
    @TableField("custom_config")
    private String customConfig;

    /**
     * 使用次数
     */
    @TableField("used_count")
    private Integer usedCount;

    /**
     * 最后使用时间
     */
    @TableField("last_used")
    private java.util.Date lastUsed;

    /**
     * 成功次数
     */
    @TableField("success_count")
    private Integer successCount;

    /**
     * 失败次数
     */
    @TableField("fail_count")
    private Integer failCount;

    /**
     * 平均响应时间(ms)
     */
    @TableField("avg_response_time")
    private Integer avgResponseTime;
}