package cn.yunzhixue.ability.center.examsprint.contracts.report;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

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

@JsonIgnoreProperties(ignoreUnknown = true)
public record AchievementExamSprintReportPayload(
        @JsonProperty("StudentName") @NotBlank String studentName,
        @JsonProperty("StudentStage") @NotNull BigDecimal studentStage,
        @JsonProperty("StageName") @NotBlank String stageName,
        @JsonProperty("StageVocabulary") @NotNull BigDecimal stageVocabulary,
        @JsonProperty("StudentVocabulary") @NotNull BigDecimal studentVocabulary,
        @JsonProperty("StudentVocabularyBefore") @NotNull BigDecimal studentVocabularyBefore,
        @JsonProperty("StudentUnMastedWordCount") @NotNull BigDecimal studentUnMastedWordCount,
        @JsonProperty("StudentImproveWordCount") @NotNull BigDecimal studentImproveWordCount,
        @JsonProperty("TestPaperTitle") @NotBlank String testPaperTitle,
        @JsonProperty("TestPaperWordCount") @NotNull BigDecimal testPaperWordCount,
        @JsonProperty("TestPaperBeforUnMastery") @NotNull BigDecimal testPaperBeforUnMastery,
        @JsonProperty("TestPaperBeforMastery") @NotNull BigDecimal testPaperBeforMastery,
        @JsonProperty("TestPaperLatestMastery") @NotNull BigDecimal testPaperLatestMastery,
        @JsonProperty("TestPaperAfterUnMastery") @NotNull BigDecimal testPaperAfterUnMastery,
        @JsonProperty("TestPaperImprovedWords") @NotNull List<@NotNull JsonNode> testPaperImprovedWords,
        @JsonProperty("TestPaperImprovedWordCount") @NotNull BigDecimal testPaperImprovedWordCount,
        @JsonProperty("TestPaperImproveRate") @NotNull BigDecimal testPaperImproveRate,
        @JsonProperty("PaperMasteryHitRate") @NotNull BigDecimal paperMasteryHitRate,
        @JsonProperty("ImproveStudyEfficiency") @NotNull BigDecimal improveStudyEfficiency,
        @JsonProperty("StudentInitialVocabMastery") @NotNull BigDecimal studentInitialVocabMastery,
        @JsonProperty("StudentCurrentVocabMastery") @NotNull BigDecimal studentCurrentVocabMastery,
        @JsonProperty("StudentVocabMasteryImprovement") @NotNull BigDecimal studentVocabMasteryImprovement,
        @JsonProperty("TestPaperBeforMasteryRate") @NotNull BigDecimal testPaperBeforMasteryRate,
        @JsonProperty("TestPaperLatestMasteryRate") @NotNull BigDecimal testPaperLatestMasteryRate,
        @JsonProperty("ShouldDisplaySigningGuarantee") Boolean shouldDisplaySigningGuarantee,
        @JsonProperty("SigningGuarantee") String signingGuarantee) {
}
