package com.nanri.aiimage.modules.dedupe.model.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.util.List;

@Data
@Schema(description = "数据去重执行请求")
public class DedupeRunRequest {

    @Valid
    @NotEmpty(message = "请先上传待处理文件")
    @Schema(description = "已上传源文件列表")
    private List<DedupeSourceFileDto> files;

    @NotEmpty(message = "请至少选择一列")
    @Schema(description = "保留列")
    private List<String> selectedColumns;

    @Schema(description = "是否保留纯数字 ID")
    private boolean keepIntegerIds = false;

    @Schema(description = "是否保留带下划线 ID")
    private boolean keepUnderscoreIds = true;

    @Schema(description = "当文件中不存在下划线子 ID 时，是否自动保留纯数字主 ID")
    private boolean keepIntegerMainIdsWhenNoSubIds = true;

    @Schema(description = "文件夹上传场景下的总压缩包名称（不含扩展名）")
    private String archiveName;

    @NotNull(message = "user_id 不能为空")
    @JsonProperty("user_id")
    @Schema(description = "当前登录用户 ID")
    private Long userId;
}
