Files
breakpilot-compliance/backend-compliance/compliance/tests/test_agb_agent.py
T
Benjamin Admin 7258744107 refactor+feat: Snapshot-Router-Split + generischer ChecklistAgent + AGB-Modul
- Item 2: Snapshot-Doc-Checks (cookie/impressum/dse/agb) in snapshot_check_routes.py
  (agent_compliance_check_routes.py 464→365 Z.); gleiche Pfade, in main.py registriert.
- ChecklistAgent-Basis: DSE-Logik generalisiert (L1/L2, kurze Titel, _severity_
  override-Hook). DSEAgent + AGBAgent sind jetzt Thin-Subclasses → künftige
  Doc-Agenten (widerruf/avv/…) trivial.
- Item 4: AGBAgent (§§ 305 ff. BGB, AGB_CHECKLIST) + agb-check + AGB-Tab via
  AgentModuleTab. Kein Library-Firehose.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-11 14:23:29 +02:00

38 lines
1.2 KiB
Python

"""AGBAgent — kuratierte §§-305-ff-BGB-Checkliste (ChecklistAgent-Subclass)."""
from __future__ import annotations
import asyncio
from compliance.services.specialist_agents import REGISTRY, AgentInput
def _run(text: str):
return asyncio.run(
REGISTRY.get("agb").evaluate(AgentInput(doc_type="agb", text=text)))
def test_agb_agent_registered():
assert REGISTRY.get("agb") is not None
def test_agb_detects_core_clauses():
text = (
"Allgemeine Geschaeftsbedingungen. Geltungsbereich: Diese AGB gelten "
"fuer alle Vertraege. Vertragsschluss durch Bestellung. Preise inkl. "
"MwSt. Lieferung. Zahlung. Widerrufsrecht. Gewaehrleistung. Haftung. "
"Gerichtsstand Muenchen. ") * 4
out = _run(text)
assert out.agent == "agb"
assert out.mc_total >= 1
ok = [c.label for c in out.mc_coverage if c.status == "ok"]
assert any("Geltungsbereich" in lbl for lbl in ok)
# Titel/Maßnahme kurz (ChecklistAgent-Vertrag)
assert all(len(f.action) < 110 for f in out.findings)
def test_agb_short_text_skips():
out = _run("zu kurz")
assert out.confidence == 0.0
assert all(c.status == "skipped" for c in out.mc_coverage)