File size: 2,061 Bytes
688925d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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<String, Object> generationParameters; // Parameters used to generate this report

    private SummaryDTO summary; // High-level summary statistics
    private List<FindingDTO> 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<String, Object> details; // Specific details about the finding
        private String evidenceLink; // Link to evidence if applicable
    }
}