Record Class EstateReport

java.lang.Object
java.lang.Record
com.eqixiac.equinix.design.estate.EstateReport
Record Components:
scope - the scope analysed
inventoryAsOf - when the inventory was taken
inventorySource - where the inventory came from
generatedAt - when the report was generated
counts - resource type to count
utilization - what utilisation data was available
findings - every finding, in priority order
categoryTotals - per category: count, priced monthly saving per currency, unpriced count
addressableMonthlySaving - currency to the total addressable monthly saving
unpriced - the findings whose financial effect could not be priced, with reasons
actions - the prioritised action list (one per finding)
coverageGaps - what could not be read
notAnalysed - what was not analysed and why
warnings - loud warnings (truncation, rule failures)
rulesRun - the rules that ran
collection - how the inventory was collected
reportingCurrency - the currency every priced figure was restated in (null on reports written before reporting currencies existed)
currencyNotes - what was converted, at which rates, and any rate source that fell back

public record EstateReport(EstateScope scope, Instant inventoryAsOf, String inventorySource, Instant generatedAt, Map<String,Integer> counts, EstateReport.UtilizationSummary utilization, List<EstateFinding> findings, List<EstateReport.CategoryTotal> categoryTotals, Map<String, EstateReport.SavingTotal> addressableMonthlySaving, List<EstateReport.UnpricedItem> unpriced, List<EstateReport.ActionItem> actions, List<EstateInventory.CoverageGap> coverageGaps, List<String> notAnalysed, List<String> warnings, List<String> rulesRun, EstateInventory.CollectionStats collection, String reportingCurrency, List<String> currencyNotes) extends Record
The result of an estate analysis: findings in priority order, totals, the addressable saving per currency, coverage gaps, and what was not analysed.

Money is never added across currencies. The addressable saving counts only priced positive savings; when several findings save money on the same resource (for example a smaller tier and a term), only the largest is counted, because they do not simply add. Unpriced findings are listed separately with their reasons. Priority is severity weight × confidence weight × (1 + log10(1 + monthly saving)), ties broken by severity, category and id, so the order is deterministic.