package com.ruoyi.platform.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import com.ruoyi.platform.domain.dependencydomain.ProjectDepency;
import com.ruoyi.platform.domain.dependencydomain.TrainTaskDepency;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

@Data
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ModelMetaVo implements Serializable {
    private Integer id;

    @ApiModelProperty(name = "模型名称")
    private String name;

    @ApiModelProperty(name = "版本")
    private String version;

    @ApiModelProperty(name = "版本描述")
    private String versionDesc;

    @ApiModelProperty(value = "创建人")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    private String createTime;

    @ApiModelProperty(value = "更新时间")
    private String updateTime;

    @ApiModelProperty(value = "模型大小")
    private String modelSize;

    @ApiModelProperty(value = "训练镜像")
    private String image;

//    @ApiModelProperty(value = "训练代码")
//    private String code;

    @ApiModelProperty(value = "模型来源")
    private String modelSource;

    @ApiModelProperty(value = "训练数据集")
    private List<NewDatasetVo> trainDatasets;

    @ApiModelProperty(value = "测试数据集")
    private List<NewDatasetVo> testDatasets;

    @ApiModelProperty(value = "参数")
    private HashMap<String, Object> params;

    @ApiModelProperty(value = "指标")
    private HashMap<String, Object> metrics;

    @ApiModelProperty(value = "指标查询参数")
    private HashMap<String, Object> metricsParams;

    @ApiModelProperty(value = "实验实例id")
    private Integer insId;

    @ApiModelProperty(value = "训练任务")
    private TrainTaskDepency trainTask;

    @ApiModelProperty(value = "模型标签（模型能力）")
    private String modelTag;

    @ApiModelProperty(value = "模型类型(模型框架)")
    private String modelType;

    @ApiModelProperty(value = "模型描述")
    private String description;

    @ApiModelProperty(value = "示例用法")
    private String usage;

    @ApiModelProperty(name = "time_ago", value = "创建时间")
    private String timeAgo;

    @ApiModelProperty(name = "full_last_update_time",value = "更新时间")
    private String fullLastUpdateTime;

    @ApiModelProperty(name = "owner", value = "项目所有者")
    private String owner;

    @ApiModelProperty(name = "identifier", value = "模型仓库名称")
    private String identifier;

    @ApiModelProperty(name = "is_public", value = "是否公开1公开，0私有")
    private Boolean isPublic;

    @ApiModelProperty(name = "relative_paths",value = "文件相对路径")
    private String relativePaths;

    @ApiModelProperty(name = "project_depency",value = "项目依赖")
    private ProjectDepency projectDepency;

}

