package com.dalab.autocompliance.service; import com.dalab.autocompliance.dto.ComplianceReportDefinitionDTO; import com.dalab.autocompliance.dto.ReportGenerationRequestDTO; import com.dalab.autocompliance.dto.ReportGenerationResponseDTO; import com.dalab.autocompliance.dto.ReportJobStatusDTO; import com.dalab.autocompliance.dto.ComplianceReportDTO; import com.dalab.autocompliance.dto.AssetComplianceStatusDTO; import com.dalab.autocompliance.dto.ComplianceControlDTO; import com.dalab.autocompliance.dto.ControlEvaluationRequestDTO; import com.dalab.autocompliance.dto.ControlEvaluationResponseDTO; // Future DTOs: // import com.dalab.autocompliance.dto.ReportGenerationRequestDTO; // import com.dalab.autocompliance.dto.ReportGenerationResponseDTO; // import com.dalab.autocompliance.dto.ReportJobStatusDTO; import java.util.List; public interface IComplianceService { /** * Lists all available compliance report definitions. * @return A list of ComplianceReportDefinitionDTOs. */ List listAvailableReportDefinitions(); /** * Initiates the generation of a specific compliance report. * @param reportType The type of report to generate. * @param request DTO containing parameters for report generation. * @return A response DTO with the job ID and status. */ ReportGenerationResponseDTO generateComplianceReport(String reportType, ReportGenerationRequestDTO request); /** * Retrieves the status of a specific compliance report generation job. * @param jobId The ID of the job. * @return A DTO with the job status details. */ ReportJobStatusDTO getReportGenerationJobStatus(String jobId); /** * Retrieves a generated compliance report by its ID. * @param reportId The ID of the generated report. * @return The ComplianceReportDTO or null if not found. */ ComplianceReportDTO getGeneratedReport(String reportId); /** * Retrieves the overall compliance status for a specific asset. * @param assetId The ID of the asset. * @return AssetComplianceStatusDTO or null if asset not found or no status available. */ AssetComplianceStatusDTO getAssetComplianceStatus(String assetId); /** * Lists all available (and typically enabled) compliance controls. * @return A list of ComplianceControlDTOs. */ List listAvailableControls(); /** * Initiates the evaluation of a specific compliance control. * @param controlId The ID of the control to evaluate. * @param request DTO containing parameters for the evaluation. * @return A response DTO with the job ID and status. */ ControlEvaluationResponseDTO evaluateControl(String controlId, ControlEvaluationRequestDTO request); // TODO: Add method to get status of a control evaluation job // ControlEvaluationJobStatusDTO getControlEvaluationJobStatus(String jobId); // Methods to be added later: // ReportGenerationResponseDTO generateComplianceReport(String reportType, ReportGenerationRequestDTO request); // ReportJobStatusDTO getReportGenerationJobStatus(String jobId); // ... and others for controls and asset status }