summaryrefslogtreecommitdiff
path: root/DomainReportExporter.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-22 11:46:52 -0500
committerChristian Cleberg <[email protected]>2026-04-22 11:46:52 -0500
commit37b02e5ee360d61751951b77b7b556165a3af1fc (patch)
treec2e30f32c4e8d2fcdf7035f97e9e353f09859114 /DomainReportExporter.swift
parentceac99c05f180d9008b75c9329822466ff60255b (diff)
downloaddomain-dig-37b02e5ee360d61751951b77b7b556165a3af1fc.tar.gz
domain-dig-37b02e5ee360d61751951b77b7b556165a3af1fc.tar.bz2
domain-dig-37b02e5ee360d61751951b77b7b556165a3af1fc.zip
feat(v3.0.0): unify platform architecture and introduce feature tiers
* consolidate DomainReport as canonical data model * add feature tier system (free/pro/data+ scaffolding) * apply clean feature gating across workflows and tracking * refactor app structure for maintainability * standardize navigation and settings * add data lifecycle controls * ensure consistency across UI, export, and CLI * stabilize internal inspection API
Diffstat (limited to 'DomainReportExporter.swift')
-rw-r--r--DomainReportExporter.swift35
1 files changed, 22 insertions, 13 deletions
diff --git a/DomainReportExporter.swift b/DomainReportExporter.swift
index 9b20066..b7d4606 100644
--- a/DomainReportExporter.swift
+++ b/DomainReportExporter.swift
@@ -36,25 +36,28 @@ enum DomainReportExporter {
"DomainDig Report",
"Domain: \(report.domain)",
"Timestamp: \(textDateFormatter.string(from: report.timestamp))",
- "App Version: \(report.appVersion)",
- "Resolver: \(report.resolverDisplayName)",
- "Resolver URL: \(report.resolverURLString)",
- "Source: \(report.resultSource.label)",
+ "App Version: \(report.metadata.appVersion)",
+ "Resolver: \(report.metadata.resolverDisplayName)",
+ "Resolver URL: \(report.metadata.resolverURLString)",
+ "Source: \(report.provenance.source.label)",
"Availability: \(availabilityLabel(report.availability))",
"Availability Confidence: \(report.availabilityConfidence?.title ?? "N/A")"
]
- if report.isPartialSnapshot {
+ if report.metadata.isPartialSnapshot {
lines.append("Snapshot Integrity: Partial snapshot")
}
- if let auditNote = report.auditNote, !auditNote.isEmpty {
+ if let auditNote = report.metadata.auditNote, !auditNote.isEmpty {
lines.append("Audit Note: \(auditNote)")
}
- if !report.dataSources.isEmpty {
- lines.append("Data Sources: \(report.dataSources.joined(separator: ", "))")
+ if !report.provenance.dataSources.isEmpty {
+ lines.append("Data Sources: \(report.provenance.dataSources.joined(separator: ", "))")
}
- if !report.validationIssues.isEmpty {
- lines.append("Validation: \(report.validationIssues.joined(separator: " | "))")
+ if !report.metadata.validationIssues.isEmpty {
+ lines.append("Validation: \(report.metadata.validationIssues.joined(separator: " | "))")
+ }
+ if let workflowContext = report.workflowContext {
+ lines.append("Workflow Context: \(workflowContext.workflowName ?? workflowContext.source)")
}
appendSection("Summary", to: &lines) {
@@ -349,6 +352,9 @@ enum DomainReportExporter {
"data_sources",
"audit_note",
"partial_snapshot",
+ "workflow_name",
+ "workflow_source",
+ "cached_sections",
"change_summary",
"change_impact",
"workflow_insights"
@@ -408,9 +414,12 @@ enum DomainReportExporter {
report.network.reachabilitySummary,
report.network.geolocationSummary,
report.geolocationConfidence?.rawValue ?? "",
- report.dataSources.joined(separator: " | "),
- report.auditNote ?? "",
- report.isPartialSnapshot ? "true" : "false",
+ report.provenance.dataSources.joined(separator: " | "),
+ report.metadata.auditNote ?? "",
+ report.metadata.isPartialSnapshot ? "true" : "false",
+ report.workflowContext?.workflowName ?? "",
+ report.workflowContext?.source ?? "",
+ report.metadata.cachedSections.map(\.rawValue).joined(separator: " | "),
report.changeSummary?.message ?? "",
report.changeSummary?.impactClassification.rawValue ?? "",
workflowInsightSummary