package org.jk.rag.domain.bo;

import org.jk.common.core.validate.AddGroup;
import org.jk.common.core.validate.EditGroup;
import org.jk.common.mybatis.core.domain.BaseEntity;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jk.rag.domain.EvaluationTaskHistory;

/**
 * 评测任务历史业务对象 evaluation_task_history
 *
 * @author Lion Li
 * @date 2026-01-27
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = EvaluationTaskHistory.class, reverseConvertGenerate = false)
public class EvaluationTaskHistoryBo extends BaseEntity {

    /**
     * 主键id
     */
    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 任务id
     */
    @NotNull(message = "任务id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long taskId;

    /**
     * 任务名称
     */
    @NotBlank(message = "任务名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String taskName;

    /**
     * 任务描述
     */
    private String taskDescription;

    /**
     * 评测类型
     */
    private String evaluationType;

    /**
     * 评测RAG
     */
    private String reviewRag;

    /**
     * 模型
     */
    private String model;

    /**
     * 评测数据
     */
    private String evaluationData;

    /**
     * 状态
     */
    private String status;

    /**
     * 结果分数
     */
    private BigDecimal resultStore;

    /**
     * 答案忠诚度
     */
    private BigDecimal answerLoyalty;

    /**
     * 答案正确性
     */
    private BigDecimal correctAnswer;

    /**
     * 答案相关性
     */
    private BigDecimal answerRelevance;

    /**
     * 噪声敏感度
     */
    private BigDecimal noiseSensitivity;

    /**
     * 上下文召回度
     */
    private BigDecimal contextRecall;

    /**
     * 上下文相关性
     */
    private BigDecimal contextRelevance;

    /**
     * 向量化模型
     */
    private String embeddingId;

    /**
     *
     */
    private Date startTime;

    /**
     *
     */
    private Date endTime;

    /**
     * 结果地址
     */
    private String fullUrl;

    private String ossId;

    private String tenantId;

}
