package cn.iocoder.yudao.module.llm.service.http.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AigcFineTuningDetailRespVO {

    private int id;
    private String jobId;
    private String baseModel;
    private int trainEpoch;
    private String trainStatus;
    private String trainDuration;
    private int process;
    private String fineTunedModel;
    private String remark;
    private String finishedAt;
    private ZonedDateTime createdAt;
    private String trainPublisher;
    private String trainLog;
    private String errorMessage;
    private boolean lora;
    private TrainAnalysis trainAnalysis;
    private String suffix;
    private int modelMaxLength;
    private int trainBatchSize;
    private String learningRate;
    private String fileUrl;
    private String fileId;
    private String startTrainTime;
    private int procPerNode;
    private int evalBatchSize;
    private int accumulationSteps;
    private String scenario;
    private Diagnosis diagnosis;


    // Nested classes for TrainAnalysis and Diagnosis
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class TrainAnalysis {
        private Epoch epoch;
        private Loss loss;
        private LearningRate learningRate;

    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Epoch {
        private List<chartData> list;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Loss {
        private List<chartData> list;
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class LearningRate {
        private List<chartData> list;
    }

    public static class Diagnosis {
        // Add fields, getters, and setters as needed
    }
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class chartData{
        private String timestamp;
        private String value;

    }
}
