package com.seer.teach.admin.response;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

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

/**
 * 知识点检查响应参数
 */
@Data
@Schema(description = "知识点检查响应参数")
public class KnowledgePointCheckResp implements Serializable {

    private static final long serialVersionUID = 1L;

    @Schema(description = "知识点ID")
    private Integer knowledgePointId;

    @Schema(description = "知识点名称")
    private String knowledgePointName;

    @Schema(description = "是否正确")
    private Boolean isCorrect;

    @Schema(description = "是否超纲")
    private Boolean isOutOfScope;

    @Schema(description = "超纲原因")
    private String outOfScopeReason;

    @Schema(description = "建议的知识点名称")
    private String suggestedKnowledgePointName;

    @Schema(description = "建议的知识点总结")
    private String suggestedSummary;

    @Schema(description = "示例题目列表")
    private List<ExampleQuestion> exampleQuestions;

    /**
     * 示例题目内部类
     */
    @Data
    @Schema(description = "示例题目")
    public static class ExampleQuestion implements Serializable {
        private static final long serialVersionUID = 1L;

        @Schema(description = "题目类型")
        private Integer type;

        @Schema(description = "题目内容")
        private String question;

        @Schema(description = "选项列表（选择题需要）")
        private List<QuestionOption> options;

        @Schema(description = "答案")
        private String answer;

        @Schema(description = "解析")
        private String explanation;
    }

    /**
     * 题目选项内部类
     */
    @Data
    @Schema(description = "题目选项")
    public static class QuestionOption implements Serializable {
        private static final long serialVersionUID = 1L;

        @Schema(description = "选项内容")
        private String content;

        @Schema(description = "排序")
        private Integer sort;
    }
}