diff options
| author | Christian Cleberg <[email protected]> | 2026-04-22 11:28:28 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-04-22 11:28:28 -0500 |
| commit | ceac99c05f180d9008b75c9329822466ff60255b (patch) | |
| tree | 073ea7cc959613479391020dc849c0705d98c0f5 /DomainDig/WorkflowsView.swift | |
| parent | 9384a668bf36f23f71e25d05b490d1040d308845 (diff) | |
| download | domain-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.swift | 20 |
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") |
