summaryrefslogtreecommitdiff
path: root/DomainDig/DomainDiffService.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/DomainDiffService.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/DomainDiffService.swift')
-rw-r--r--DomainDig/DomainDiffService.swift20
1 files changed, 18 insertions, 2 deletions
diff --git a/DomainDig/DomainDiffService.swift b/DomainDig/DomainDiffService.swift
index 528841d..0d8795a 100644
--- a/DomainDig/DomainDiffService.swift
+++ b/DomainDig/DomainDiffService.swift
@@ -57,7 +57,9 @@ enum DomainDiffService {
static func summary(
from oldSnapshot: LookupSnapshot,
to newSnapshot: LookupSnapshot,
- generatedAt: Date = Date()
+ generatedAt: Date = Date(),
+ riskAssessment: DomainRiskAssessment? = nil,
+ insights: [String]? = nil
) -> DomainChangeSummary {
let sections = diff(from: oldSnapshot, to: newSnapshot)
let allChangedItems = sections
@@ -70,16 +72,30 @@ enum DomainDiffService {
let observedFacts = observedFacts(from: allChangedItems)
let inferredConclusions = highlights.isEmpty ? [] : [message]
let contextNote = comparisonContextNote(from: oldSnapshot, to: newSnapshot)
+ let newAnalysis = DomainInsightEngine.analyze(snapshot: newSnapshot, previousSnapshot: oldSnapshot)
+ let currentRiskAssessment = riskAssessment ?? newAnalysis.riskAssessment
+ let currentInsights = insights ?? newAnalysis.insights
+ let oldRiskAssessment = DomainInsightEngine.analyze(snapshot: oldSnapshot).riskAssessment
+ let riskScoreDelta = currentRiskAssessment.score - oldRiskAssessment.score
+ let impactClassification = DomainInsightEngine.impactClassification(
+ severity: severity,
+ riskDelta: riskScoreDelta,
+ changedSections: highlights
+ )
return DomainChangeSummary(
hasChanges: !allChangedItems.isEmpty,
changedSections: highlights,
message: message,
severity: severity,
+ impactClassification: impactClassification,
generatedAt: generatedAt,
observedFacts: observedFacts,
inferredConclusions: inferredConclusions,
- contextNote: contextNote
+ contextNote: contextNote,
+ riskAssessment: currentRiskAssessment,
+ insights: currentInsights,
+ riskScoreDelta: riskScoreDelta
)
}