package com.yice.webadmin.app.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yice.common.core.base.mapper.BaseModelMapper;
import com.yice.common.core.base.model.BaseModel;
import com.yice.webadmin.app.vo.PluginConfigVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.math.BigDecimal;
import java.util.List;

/**
 * 实体对象。
 *
 * @author linking
 * @date 2023-04-13
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "lmp_plugin_config")
public class PluginConfig extends BaseModel {

    /**
     * 编排配置表ID。
     */
    @TableId(value = "config_id")
    private Long configId;

    /**
     * 模型服务ID，外键。
     */
    private Long serviceId;

    /**
     * 应用ID，外键。
     */
    private Long apiId;

    /**
     * 温度，保留两位小数。
     */
    private Double temperature;

    /**
     * 多样性，保留两位小数。
     */
    private BigDecimal diversity;

    /**
     * 重复惩罚。
     */
    private BigDecimal duplicatePenalty;

    /**
     * 提示词。
     */
    private String prompt;

    /**
     * 插件编排知识库ID，外键。
     */
    private Long pluginKnowledgeId;

    /**
     * 最长上下文。
     */
    private Integer maxLengthContext;

    /**
     * 开场白。
     */
    private String openWords;

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

    /**
     * 多个知识库ids。
     */
    @TableField(exist = false)
    private List<Long> knowledgeIds;

    @Mapper
    public interface PluginConfigMapper extends BaseModelMapper<PluginConfigVo, PluginConfig> {
    }

    public static final PluginConfigMapper INSTANCE = Mappers.getMapper(PluginConfigMapper.class);
}
