package com.ai.trackwalker.api.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;

import java.util.List;
import java.util.Map;

public final class Requests {
    private Requests() {
    }

    public record CreateTaskRequest(
            String externalTaskId,
            @NotBlank String lineId,
            String mileageStart,
            String mileageEnd,
            String routeId,
            @NotEmpty List<String> sceneSet,
            String priority,
            String plannedStartTime
    ) {
    }

    public record ResourceItem(
            String resourceId,
            @NotBlank String resourceType,
            @NotBlank String storageUrl,
            String captureTime,
            Map<String, Object> metadata
    ) {
    }

    public record ResourceCompleteRequest(@NotBlank String taskId, List<ResourceItem> resources) {
    }

    public record CreateAnalysisJobRequest(String taskId, List<String> resourceIds, List<String> sceneSet, String analysisMode, String priority) {
    }

    public record WorkOrderCallbackRequest(String alarmId, String workorderId, String status, String result, String comment, String operator, String closedTime) {
    }

    public record ExemptionRequest(String scene, String lineId, Map<String, Object> geometry, String validFrom, String validTo, String reason) {
    }

    public record MissionStatusCallback(String taskId, String vendor, String vendorMissionId, String status, String uavId, String timestamp, Map<String, Object> position) {
    }

    public record RetryStepRequest(String reason, String operator, Integer expectedAttempt, String idempotencyKey) {
    }

    public record WorkOrderReviewRequest(String action, String result, String comment, String operator) {
    }

    public record SampleDecisionRequest(String decision, String priority, String reason, String operator) {
    }

    public record AlarmDecisionRequest(String action, String reason, String operator) {
    }
}
