Spaces:
Sleeping
Sleeping
File size: 913 Bytes
5f77ac0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import logging
from scanner.domain.models import ScanReport
logger = logging.getLogger(__name__)
class DiffDetector:
"""Detects meaningful changes between consecutive scans.
Outputs human-readable diff summaries:
- Score changes (including direction)
- New findings by category
- Resolved findings
- Severity escalations
"""
def detect(self, previous: dict | None, current: ScanReport) -> str | None:
if previous is None:
return None
prev_score = previous.get("last_risk_score", 0)
curr_score = current.risk_score
delta = curr_score - prev_score
if delta == 0:
return None
direction = "increased" if delta > 0 else "decreased"
return (
f"Risk score {direction} from {prev_score} to {curr_score} "
f"({'+' if delta > 0 else ''}{delta}) — {current.summary}"
)
|