package cloud.nstart.terravault.ordinis.restapi.dto;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Size;

import java.time.OffsetDateTime;
import java.util.List;

/**
 * Bulk close: закрыть N записей одним запросом. Партиционирование per-record:
 * если 3 из 10 уже закрыты или не существуют — другие 7 закроются.
 *
 * <p>Лимит 500 — защита от случайного UI-bug или копи-паст огромного списка.
 *
 * @param businessKeys список business_key для закрытия (1..500)
 * @param at момент close (default now)
 * @param reason бизнес-причина (опционально, идёт в audit log + outbox event)
 */
public record BulkCloseRequest(
    @NotEmpty
    @Size(max = 500, message = "bulk close принимает максимум 500 записей за запрос")
    List<String> businessKeys,
    OffsetDateTime at,
    String reason) {}
