from datetime import datetime class ThresholdMonitor: def __init__(self, fp_rate_alert_threshold: float = 0.001): self.decisions = [] self.confirmed_fp = 0 self.auto_merge_count = 0 self.fp_rate_alert_threshold = fp_rate_alert_threshold def record_decision(self, decision: ERDecision, probability: float): self.decisions.append({ "decision": decision, "probability": probability, "timestamp": datetime.utcnow() }) if decision == ERDecision.AUTO_MERGE: self.auto_merge_count += 1 def record_confirmed_false_positive(self): self.confirmed_fp += 1 @property def false_positive_rate(self) -> float: if self.auto_merge_count == 0: return 0.0 return self.confirmed_fp / self.auto_merge_count def is_alert(self) -> bool: return self.false_positive_rate > self.fp_rate_alert_threshold