package com.dalab.autocompliance.dto; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.AllArgsConstructor; import java.time.LocalDateTime; import java.util.List; import java.util.Map; /** * DTO representing a generated compliance report. */ @Data @Builder @NoArgsConstructor @AllArgsConstructor public class ComplianceReportDTO { private String reportId; // Unique ID of this generated report instance private String reportType; // e.g., "cis-gcp-foundations-v1.3" private String displayName; // User-friendly name of the report type private LocalDateTime generationTimestamp; private String overallStatus; // e.g., COMPLIANT, NON_COMPLIANT, PARTIALLY_COMPLIANT, ERROR private Map generationParameters; // Parameters used to generate this report private SummaryDTO summary; // High-level summary statistics private List findings; // Detailed list of findings // Nested DTOs for structure @Data @Builder @NoArgsConstructor @AllArgsConstructor public static class SummaryDTO { private int totalChecks; private int compliantChecks; private int nonCompliantChecks; private int errorChecks; private double complianceScore; // e.g., percentage } @Data @Builder @NoArgsConstructor @AllArgsConstructor public static class FindingDTO { private String checkId; // Unique identifier for the specific check/control private String description; private String assetId; // ID of the asset evaluated private String assetType; private String assetName; // User-friendly name of the asset private String status; // COMPLIANT, NON_COMPLIANT, ERROR, NOT_APPLICABLE private String severity; // INFO, LOW, MEDIUM, HIGH, CRITICAL private String recommendation; private Map details; // Specific details about the finding private String evidenceLink; // Link to evidence if applicable } }