summaryrefslogtreecommitdiff
path: root/DomainDig/BatchResultsView.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-22 11:28:28 -0500
committerChristian Cleberg <[email protected]>2026-04-22 11:28:28 -0500
commitceac99c05f180d9008b75c9329822466ff60255b (patch)
tree073ea7cc959613479391020dc849c0705d98c0f5 /DomainDig/BatchResultsView.swift
parent9384a668bf36f23f71e25d05b490d1040d308845 (diff)
downloaddomain-dig-ceac99c05f180d9008b75c9329822466ff60255b.tar.gz
domain-dig-ceac99c05f180d9008b75c9329822466ff60255b.tar.bz2
domain-dig-ceac99c05f180d9008b75c9329822466ff60255b.zip
feat(v2.9.0): add risk scoring and deterministic insight engine
* introduce domain risk assessment with transparent factors * add insight engine for actionable observations * implement cross-domain insights for workflows * improve DNS, subdomain, email, and TLS interpretation * classify change impact severity * include insights and risk in export
Diffstat (limited to 'DomainDig/BatchResultsView.swift')
-rw-r--r--DomainDig/BatchResultsView.swift15
1 files changed, 12 insertions, 3 deletions
diff --git a/DomainDig/BatchResultsView.swift b/DomainDig/BatchResultsView.swift
index 51f6415..c8dde42 100644
--- a/DomainDig/BatchResultsView.swift
+++ b/DomainDig/BatchResultsView.swift
@@ -73,6 +73,9 @@ struct BatchResultRowView: View {
HStack(spacing: 10) {
AppStatusBadgeView(model: AppStatusFactory.availability(result.availability))
+ if let riskScore = result.riskScore, let riskLevel = result.riskLevel {
+ Text("Risk \(riskScore) \(riskLevel.title)")
+ }
Text(result.primaryIP ?? "No IP")
Text(result.timestamp.formatted(date: .abbreviated, time: .shortened))
}
@@ -85,6 +88,12 @@ struct BatchResultRowView: View {
.foregroundStyle(.secondary)
}
+ if let changeClassification = result.changeClassification {
+ Text("Impact: \(changeClassification.title)")
+ .font(appDensity.font(.caption2))
+ .foregroundStyle(changeClassification == .critical ? .red : (changeClassification == .warning ? .yellow : .secondary))
+ }
+
if let errorMessage = result.errorMessage {
Text(errorMessage)
.font(appDensity.font(.caption2))
@@ -114,10 +123,10 @@ struct BatchResultRowView: View {
case .running:
return .init(title: "Running", systemImage: "arrow.clockwise", foregroundColor: .cyan, backgroundColor: .cyan.opacity(0.16))
case .completed:
- if result.changeSeverity == .high || result.certificateWarningLevel == .critical {
- return .init(title: "High", systemImage: "exclamationmark.octagon.fill", foregroundColor: .red, backgroundColor: .red.opacity(0.16))
+ if result.changeClassification == .critical || result.certificateWarningLevel == .critical || result.riskLevel == .high {
+ return .init(title: "Critical", systemImage: "exclamationmark.octagon.fill", foregroundColor: .red, backgroundColor: .red.opacity(0.16))
}
- if result.changeSeverity == .medium || result.certificateWarningLevel == .warning {
+ if result.changeClassification == .warning || result.changeSeverity == .medium || result.certificateWarningLevel == .warning {
return .init(title: "Warning", systemImage: "exclamationmark.triangle.fill", foregroundColor: .yellow, backgroundColor: .yellow.opacity(0.16))
}
if result.quickStatus == "Changed" {