fix(impressum): Pattern fasst Geschäftsführung/Vorstand/Inhaber
CI / build-sha-integrity (push) Failing after 4s
CI / validate-canonical-controls (push) Successful in 11s
CI / loc-budget (push) Successful in 13s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Successful in 2m21s
CI / test-go (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 29s
CI / detect-changes (push) Successful in 8s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped

Safetykon-Bug: 'Geschäftsführung:' (Sammelbegriff für GF einer GmbH)
matched das alte Pattern 'Geschäftsführer' nicht — False-Positive
IMPRESSUM-AGENT-VERTRETUNGSBERECHTIGTE_LABEL_KORREKT.
Pattern erweitert: Geschäftsführer|Geschäftsführung|Geschäftsführerin
+ Vorstand|Vorstandsvorsitzender + Inhaber|persönlich haftend.
Test test_safetykon_geschaeftsfuehrung_passes ergänzt (11/11 grün).

frontend: SlotCard zeigt jetzt Badge bei 0/0/0-Slots
('Dokument konnte nicht geladen werden') statt silent-fail, +
bei 0 Findings ein 'alle MCs OK'-Badge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-06-08 18:24:01 +02:00
parent 860469d4b1
commit 702e7a6333
3 changed files with 46 additions and 5 deletions
@@ -78,6 +78,28 @@ def test_tesla_missing_german_label(monkeypatch):
assert "ust_id" in field_ids
def test_safetykon_geschaeftsfuehrung_passes(monkeypatch):
"""Geschäftsführung (statt -führer) muss als deutsches Label akzeptiert
werden — sonst False-Positive bei SafetyKon GmbH und ähnlichen."""
async def _no_cascade(*a, **kw): return None, []
monkeypatch.setattr(
"compliance.services.specialist_agents.impressum.agent.cascade",
_no_cascade,
)
txt = (
"SafetyKon GmbH\nMerzhauser Str. 144\n79100 Freiburg\n"
"Telefon: 0761/48 98 09 01\nE-Mail: info@safetykon.de\n"
"Geschäftsführung: Dr. Oliver Kirchwehm\n"
"Handelsregister AG Freiburg HRB 709859\n"
"USt-Id: DE288952921\n"
)
agent = ImpressumAgent()
out = _run(agent.evaluate(AgentInput(doc_type="impressum", text=txt)))
field_ids = {f.field_id for f in out.findings}
assert "vertretungsberechtigte" not in field_ids
assert "vertretungsberechtigte_label_korrekt" not in field_ids
def test_full_impressum_has_no_basic_findings(monkeypatch):
async def _no_cascade(*a, **kw):
return None, []