7258744107
- 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>
38 lines
1.2 KiB
Python
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)
|