package jnpf.model.attendance.dto.scheduling;

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

/**
 * 固定排班核心参数，与 {@code ftb_attendance_group_fixed_param} 列扁平一致（无组 ID、无审计列）。
 *
 * @author xiaofeng
 * @create 2026-05-13
 */
@Data
@Schema(description = "固定排班规则参数")
public class FixedSchedulingRuleDto {

    @Schema(description = "行主键；无记录时可为 null")
    private String id;

    @Schema(description = "单日工作小时数规则是否启用")
    private Boolean dailyWorkHoursEnabled;

    @Schema(description = "单日工作小时数上限（小时），语义 ≤")
    private Integer dailyWorkHoursValue;

    @Schema(description = "约束级别：0 尽量，1 必须")
    private Byte dailyWorkHoursPriority;

    @Schema(description = "连续工作天数规则是否启用")
    private Boolean consecutiveWorkDaysEnabled;

    @Schema(description = "连续工作天数上限（天），语义 ≤")
    private Integer consecutiveWorkDaysValue;

    @Schema(description = "约束级别：0 尽量，1 必须")
    private Byte consecutiveWorkDaysPriority;

    @Schema(description = "每周工作天数规则是否启用")
    private Boolean weeklyWorkDaysEnabled;

    @Schema(description = "每周工作天数上限（天），语义 ≤")
    private Integer weeklyWorkDaysValue;

    @Schema(description = "约束级别：0 尽量，1 必须")
    private Byte weeklyWorkDaysPriority;

    @Schema(description = "每周工作小时数规则是否启用")
    private Boolean weeklyWorkHoursEnabled;

    @Schema(description = "每周工作小时数上限（小时），语义 ≤")
    private Integer weeklyWorkHoursValue;

    @Schema(description = "约束级别：0 尽量，1 必须")
    private Byte weeklyWorkHoursPriority;

    @Schema(description = "班次间最小休息间隔规则是否启用")
    private Boolean minRestBetweenShiftsEnabled;

    @Schema(description = "最小休息间隔（小时），语义 ≥")
    private Integer minRestBetweenShiftsValue;

    @Schema(description = "约束级别：0 尽量，1 必须")
    private Byte minRestBetweenShiftsPriority;
}
