diff --git a/backend-compliance/compliance/services/specialist_agents/impressum/v3_engine.py b/backend-compliance/compliance/services/specialist_agents/impressum/v3_engine.py index 85118799..5472404d 100644 --- a/backend-compliance/compliance/services/specialist_agents/impressum/v3_engine.py +++ b/backend-compliance/compliance/services/specialist_agents/impressum/v3_engine.py @@ -182,12 +182,18 @@ def _filter_controls( for c in controls: cid = c.get("control_id") or "" prefix = cid.split("-")[0].upper() if "-" in cid else "" + on_topic = criteria_on_topic(c.get("pass_criteria"), + c.get("fail_criteria")) required = SECTOR_PREFIXES.get(prefix) - if required and not (scope_lc & required): + # Sektor-Gate nur fuer NICHT-on-topic Controls: ein klar + # impressum-thematischer Control (z.B. MStV ยง18(1) mit GOV-Prefix + # aus der Domain-Erkennung der Control-Generierung) darf nicht am + # Branchen-Prefix scheitern. Der Themen-Ueberlapp ist der staerkere + # Relevanz-Beweis als ein vererbter ID-Prefix. + if required and not (scope_lc & required) and not on_topic: sector_dropped += 1 continue - if not criteria_on_topic(c.get("pass_criteria"), - c.get("fail_criteria")): + if not on_topic: offtopic_dropped += 1 continue kept.append(c)