From 7fae4783a20833b200be98cacb524cff5e51bc31 Mon Sep 17 00:00:00 2001 From: kitos Date: Wed, 20 May 2026 15:59:26 +0200 Subject: [PATCH] fix(risk): Technique uses status_global and mitre_id (not status/technique_id) --- backend/app/services/risk_intelligence_service.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/app/services/risk_intelligence_service.py b/backend/app/services/risk_intelligence_service.py index 53eb1d0..cae7bda 100644 --- a/backend/app/services/risk_intelligence_service.py +++ b/backend/app/services/risk_intelligence_service.py @@ -67,8 +67,8 @@ def _compute_for_technique(db: Session, tech: Technique) -> TechniqueRiskProfile ).first() confidence_level: float = float(dlc_conf.confidence_score or 0.0) if dlc_conf else 0.0 - # Map technique status to coverage factor - status = tech.status + # Map technique status_global to coverage factor + status = tech.status_global if status == TechniqueStatus.validated: status_coverage = 1.0 elif status == TechniqueStatus.partial: @@ -86,7 +86,7 @@ def _compute_for_technique(db: Session, tech: Technique) -> TechniqueRiskProfile detection_gap = 1.0 - raw_coverage breakdown["detection_gap"] = { "mapping_count": mapping_count, - "status": str(status) if status else None, + "status": str(status.value) if status else None, "status_coverage": status_coverage, "confidence_level": round(confidence_level, 3), "detection_gap": round(detection_gap, 3), @@ -306,7 +306,7 @@ def get_risk_matrix(db: Session) -> list: { "technique_id": str(p.technique_id), "technique_name": t.name, - "technique_tid": t.technique_id, + "technique_tid": t.mitre_id, "risk_score": p.risk_score, "likelihood": p.likelihood, "impact": p.impact, @@ -341,7 +341,7 @@ def get_risk_summary(db: Session) -> dict: { "technique_id": str(p.technique_id), "technique_name": t.name, - "technique_tid": t.technique_id, + "technique_tid": t.mitre_id, "risk_score": p.risk_score, "risk_level": p.risk_level, "likelihood": p.likelihood,