summaryrefslogtreecommitdiff
path: root/DomainDig/WorkflowsView.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/WorkflowsView.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/WorkflowsView.swift')
-rw-r--r--DomainDig/WorkflowsView.swift20
1 files changed, 20 insertions, 0 deletions
diff --git a/DomainDig/WorkflowsView.swift b/DomainDig/WorkflowsView.swift
index ba88487..b870409 100644
--- a/DomainDig/WorkflowsView.swift
+++ b/DomainDig/WorkflowsView.swift
@@ -215,6 +215,11 @@ struct WorkflowDetailView: View {
statRow(label: "Changed", value: "\(latestSummary.changedDomains)")
statRow(label: "Warnings", value: "\(latestSummary.warningDomains)")
statRow(label: "Unchanged", value: "\(latestSummary.unchangedDomains)")
+ if !latestSummary.workflowInsights.isEmpty {
+ Text(latestSummary.workflowInsights[0].description)
+ .font(appDensity.font(.caption))
+ .foregroundStyle(.secondary)
+ }
Button {
viewModel.latestWorkflowRunSummary = latestSummary
@@ -431,6 +436,21 @@ struct WorkflowRunSummaryView: View {
Toggle("Show unchanged domains", isOn: $showAllResults)
}
+ if !summary.workflowInsights.isEmpty {
+ Section("Workflow Insights") {
+ ForEach(summary.workflowInsights) { insight in
+ VStack(alignment: .leading, spacing: 4) {
+ Text(insight.description)
+ .font(.system(.callout, design: .monospaced))
+ .foregroundStyle(.primary)
+ Text(insight.domainsInvolved.joined(separator: ", "))
+ .font(.system(.caption, design: .monospaced))
+ .foregroundStyle(.secondary)
+ }
+ }
+ }
+ }
+
Section(visibleResults.isEmpty ? "Meaningful Changes" : "Results") {
if visibleResults.isEmpty {
Text("No domains with meaningful changes or warnings")