package com.ruoyi.course.domain.dto;

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

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.Map;

@Data
@Schema(description = "排课请求参数")
public class PaikeRequestDTO {

    @NotBlank(message = "任务名称不能为空")
    @Schema(description = "任务名称", example = "2024年春季学期排课")
    private String taskName;

    @Schema(description = "学年", example = "2024-2025")
    private String academicYear;

    @Schema(description = "学期", example = "下学期", allowableValues = {"上学期", "下学期", "暑假", "寒假"})
    private String semester;

    @NotNull(message = "开始日期不能为空")
    @Schema(description = "开始日期", example = "2024-02-19")
    private LocalDate startDate;

    @NotNull(message = "结束日期不能为空")
    @Schema(description = "结束日期", example = "2024-07-15")
    private LocalDate endDate;

    @Schema(description = "排课算法", example = "遗传算法", allowableValues = {"遗传算法", "回溯算法", "贪心算法", "随机算法"})
    private String algorithm = "遗传算法";

    @Schema(description = "规则参数", example = "{\"maxIterations\":1000,\"populationSize\":50}")
    private Map<String, Object> ruleParams;

    @Schema(description = "包含的班级ID列表", example = "[1,2,3]")
    private Long[] classIds;

    @Schema(description = "排除的日期列表", example = "[\"2024-05-01\",\"2024-10-01\"]")
    private String[] excludeDates;


}