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.annotation.RelationDict;
import com.yice.common.core.base.mapper.BaseModelMapper;
import com.yice.common.core.base.model.BaseModel;
import com.yice.webadmin.app.vo.TuningRunVo;
import com.yice.webadmin.upms.model.SysUser;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.Map;

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

    /**
     * 运行ID。
     */
    @TableId(value = "run_id")
    private Long runId;

    /**
     * 任务ID。
     */
    private Long taskId;

    /**
     * 运行状态。
     */
    private Integer runStatus;

    /**
     * 运行版本号。
     */
    private Integer runVersion;

    /**
     * 运行名称。
     */
    private String runName;

    /**
     * 基础模型ID。
     */
    private Long modelId;

    /**
     * 基础模型版本ID。
     */
    private Long modelVersionId;

    /**
     * 运行时长。
     */
    private Long runTime;

    /**
     * 数据集版本IDs。
     */
    private String datasetVersionIds;

    /**
     * 拆分比例。
     */
    private Integer splitRatio;

    /**
     * 训练模式。
     */
    private String trainMode;

    /**
     * 训练方法。
     */
    private String trainMethod;

    /**
     * 参数配置。
     */
    private String configuration;

    /**
     * 发布状态。
     */
    private Integer publishStatus;

    /**
     * 创建人名称字典。
     */
    @RelationDict(
            masterIdField = "createUserId",
            slaveModelClass = SysUser.class,
            slaveIdField = "userId",
            slaveNameField = "showName")
    @TableField(exist = false)
    private Map<String, Object> createUserIdDictMap;

    @Mapper
    public interface TuningRunModelMapper extends BaseModelMapper<TuningRunVo, TuningRun> {
    }

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