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>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
"""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)
|
||||
Reference in New Issue
Block a user