ArchitectureReport.java

package com.taxonomy.dto;

import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Bundles all architecture analysis results into a single exportable report.
 * This DTO aggregates data from existing services:
 * {@link RequirementArchitectureView}, {@link GapAnalysisView},
 * {@link PatternDetectionView}, {@link ArchitectureRecommendation},
 * and provisional {@link RelationProposalDto}s.
 */
public class ArchitectureReport {

    private String businessText;
    private Instant generatedAt;
    private Map<String, Integer> scores;

    private RequirementArchitectureView architectureView;
    private GapAnalysisView gapAnalysis;
    private PatternDetectionView patternDetection;
    private ArchitectureRecommendation recommendation;
    private List<RelationProposalDto> pendingProposals = new ArrayList<>();
    private String mermaidDiagram;

    /** Git commit provenance and projection/index freshness metadata. */
    private ViewContext viewContext;

    public ArchitectureReport() {
        this.generatedAt = Instant.now();
    }

    // ── Getters / Setters ─────────────────────────────────────────────────────

    public String getBusinessText() { return businessText; }
    public void setBusinessText(String businessText) { this.businessText = businessText; }

    public Instant getGeneratedAt() { return generatedAt; }
    public void setGeneratedAt(Instant generatedAt) { this.generatedAt = generatedAt; }

    public Map<String, Integer> getScores() { return scores; }
    public void setScores(Map<String, Integer> scores) { this.scores = scores; }

    public RequirementArchitectureView getArchitectureView() { return architectureView; }
    public void setArchitectureView(RequirementArchitectureView architectureView) { this.architectureView = architectureView; }

    public GapAnalysisView getGapAnalysis() { return gapAnalysis; }
    public void setGapAnalysis(GapAnalysisView gapAnalysis) { this.gapAnalysis = gapAnalysis; }

    public PatternDetectionView getPatternDetection() { return patternDetection; }
    public void setPatternDetection(PatternDetectionView patternDetection) { this.patternDetection = patternDetection; }

    public ArchitectureRecommendation getRecommendation() { return recommendation; }
    public void setRecommendation(ArchitectureRecommendation recommendation) { this.recommendation = recommendation; }

    public List<RelationProposalDto> getPendingProposals() { return pendingProposals; }
    public void setPendingProposals(List<RelationProposalDto> pendingProposals) { this.pendingProposals = pendingProposals; }

    public String getMermaidDiagram() { return mermaidDiagram; }
    public void setMermaidDiagram(String mermaidDiagram) { this.mermaidDiagram = mermaidDiagram; }

    public ViewContext getViewContext() { return viewContext; }
    public void setViewContext(ViewContext viewContext) { this.viewContext = viewContext; }
}