package com.gxwebsoft.ai.service;

import com.alibaba.fastjson.JSONObject;
import com.gxwebsoft.ai.dto.AuditReportSaveRequest;
import com.gxwebsoft.ai.entity.AuditEvidence;
import com.gxwebsoft.ai.entity.AuditReport;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.pwl.entity.PwlProject;

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

public interface AuditReportService {
    
    /**
     * 生成完整审计报告
     */
    JSONObject generateCompleteAuditReport(String auditContent, String fileName, 
                                         String kbId, String libraryIds, 
                                         String analysisLibrary, String projectLibrary,
                                         String userName);
    
    /**
     * 保存审计报告到数据库（新增或更新）
     */
    ApiResult<AuditReport> saveAuditReport(AuditReportSaveRequest request);
    
    /**
     * 根据 projectId 和 formCommit 查询审计报告
     */
    ApiResult<AuditReport> queryAuditReport(Integer projectId, Integer formCommit);
    
    /**
     * 根据项目 ID 查询所有审计报告和取证单数据
     * @param project 项目
     * @return Map，包含 reports (AuditReport 列表) 和 evidences (AuditEvidence 列表)
     */
    Map<String, Object> queryAuditDataByProjectId(PwlProject project, List<Long> selectedEvidenceIds);
    
    /**
     * 根据项目 ID 查询审计报告和取证单数据，并对勾选的取证单进行 AI 分析
     * @param project 项目
     * @param selectedEvidenceIds 勾选的取证单 ID 列表（可为 null）
     * @return 包含 reports、evidences、evaluate、suggestion 的 Map
     */
    Map<String, Object> queryAuditDataByProjectIdWithAnalysis(PwlProject project, List<Long> selectedEvidenceIds);
}