""" AGB checks — §305ff BGB. Level 1: Pflichtangabe erwaehnt? Level 2: Pflichtangabe korrekt/vollstaendig? """ AGB_CHECKLIST = [ # ── L1: Geltungsbereich ─────────────────────────────────────────── { "id": "scope", "label": "Geltungsbereich", "level": 1, "parent": None, "patterns": [ r"geltungsbereich", r"geltung", r"scope", r"diese\s+(?:agb|bedingungen)\s+gelten", ], "severity": "HIGH", "hint": "Ihre AGB enthalten keinen Geltungsbereich. Ergaenzen Sie einen Abschnitt, der festlegt, fuer welche Vertraege und Parteien die AGB gelten.", }, { "id": "incorporation_clause", "label": "Einbeziehungsklausel (§305 BGB)", "level": 2, "parent": "scope", "patterns": [ r"einbezieh", r"bestandteil\s+des\s+vertrag", r"(?:mit|durch)\s+(?:der\s+)?bestellung.*(?:anerkennen|akzeptieren|zustimm)", r"§\s*305", ], "severity": "MEDIUM", "hint": "Es fehlt eine Einbeziehungsklausel gemaess §305 BGB. Stellen Sie klar, dass der Kunde vor Vertragsschluss auf die AGB hingewiesen wird und ihnen zustimmt.", }, # ── L1: Vertragsschluss ─────────────────────────────────────────── { "id": "contract", "label": "Vertragsschluss", "level": 1, "parent": None, "patterns": [ r"vertragsschluss", r"zustandekommen", r"contract\s+formation", r"angebot\s+und\s+annahme", ], "severity": "HIGH", "hint": "Die AGB beschreiben nicht, wie ein Vertrag zustande kommt. Ergaenzen Sie eine Regelung zu Angebot und Annahme (z.B. Bestellung als Angebot, Bestaetigung als Annahme).", }, # ── L1: Haftung ─────────────────────────────────────────────────── { "id": "liability", "label": "Haftung / Haftungsbeschraenkung", "level": 1, "parent": None, "patterns": [ r"haftung", r"liability", r"schadensersatz", r"haftungsbeschr(?:ae|ä)nkung", ], "severity": "HIGH", "hint": "Es fehlt eine Haftungsregelung. Nehmen Sie einen Abschnitt auf, der die Haftung regelt und dabei die gesetzlichen Mindestrechte (Vorsatz, grobe Fahrlaessigkeit, Personenschaeden) unberuehrt laesst.", }, # ── L1: Gerichtsstand / Anwendbares Recht ───────────────────────── { "id": "jurisdiction", "label": "Gerichtsstand / Anwendbares Recht", "level": 1, "parent": None, "patterns": [ r"gerichtsstand", r"anwendbares\s+recht", r"jurisdiction", r"governing\s+law", ], "severity": "MEDIUM", "hint": "Die AGB enthalten keine Angabe zum anwendbaren Recht oder Gerichtsstand. Benennen Sie das geltende Recht (z.B. deutsches Recht) und ggf. den Gerichtsstand.", }, { "id": "dispute_odr_link", "label": "ODR-Plattform-Link (EU-Verordnung 524/2013)", "level": 2, "parent": "jurisdiction", "patterns": [ r"ec\.europa\.eu.*odr", r"(?:os|odr)[\-\s]plattform", r"(?:online[\-\s]?streitbeilegung|online\s+dispute\s+resolution)", ], "severity": "MEDIUM", "hint": "Der Link zur EU-Online-Streitbeilegungsplattform (https://ec.europa.eu/consumers/odr) fehlt. Dieser ist fuer Online-Haendler nach EU-Verordnung 524/2013 Pflicht.", }, { "id": "choice_of_law_specific", "label": "Konkretes Recht benannt (z.B. deutsches Recht)", "level": 2, "parent": "jurisdiction", "patterns": [ r"(?:deutsches|(?:oe|ö)sterreichisches|schweizerisches)\s+recht", r"recht\s+der\s+bundesrepublik", r"german\s+law|law\s+of\s+germany", r"un[\-\s]kaufrecht.*(?:ausgeschlossen|findet\s+keine\s+anwendung)", ], "severity": "LOW", "hint": "Es wird kein konkretes anwendbares Recht benannt. Geben Sie explizit an, welches Recht gilt (z.B. 'Es gilt das Recht der Bundesrepublik Deutschland') und ob das UN-Kaufrecht ausgeschlossen ist.", }, # ── L1: Zahlungsbedingungen ─────────────────────────────────────── { "id": "payment", "label": "Zahlungsbedingungen", "level": 1, "parent": None, "patterns": [ r"zahlungsbedingung", r"payment\s+terms", r"(?:preis|kosten|entgelt|verg(?:ue|ü)tung)", r"zahlungsweise", r"rechnungsstellung", ], "severity": "MEDIUM", "hint": "Die AGB enthalten keine Zahlungsbedingungen. Ergaenzen Sie Angaben zu Preisen, Zahlungsarten und Faelligkeit.", }, { "id": "payment_methods", "label": "Konkrete Zahlungsarten benannt", "level": 2, "parent": "payment", "patterns": [ r"(?:vorkasse|nachnahme|lastschrift|sepa|(?:ue|ü)berweisung|kreditkarte|paypal|sofort(?:ue|ü)berweisung|klarna|rechnung|giropay|apple\s*pay|google\s*pay)", ], "severity": "LOW", "hint": "Es werden keine konkreten Zahlungsarten aufgefuehrt. Listen Sie die akzeptierten Zahlungsmethoden auf (z.B. Kreditkarte, PayPal, SEPA-Lastschrift, Ueberweisung).", }, { "id": "payment_due_date", "label": "Faelligkeit/Zahlungsziel angegeben", "level": 2, "parent": "payment", "patterns": [ r"(?:f(?:ae|ä)llig|zahlbar|zahlungsziel)\s+(?:sofort|innerhalb|nach|bei|mit)", r"(?:netto|brutto)\s*\d+\s+tage", r"zahlungsfrist", ], "severity": "LOW", "hint": "Es fehlt eine Angabe zur Faelligkeit der Zahlung. Geben Sie an, wann die Zahlung faellig ist (z.B. 'sofort nach Rechnungsstellung' oder 'innerhalb von 14 Tagen').", }, # ── L1: Lieferung ───────────────────────────────────────────────── { "id": "delivery", "label": "Lieferung / Leistungserbringung", "level": 1, "parent": None, "patterns": [ r"lieferung", r"leistungserbringung", r"delivery", r"lieferfrist", r"bereitstellung", r"(?:zugang|zugriff).*(?:dienst|leistung)", ], "severity": "MEDIUM", "hint": "Die AGB regeln nicht die Lieferung oder Leistungserbringung. Ergaenzen Sie Angaben zu Liefergebiet, Versandart und Lieferfristen.", }, { "id": "delivery_timeframe", "label": "Konkrete Lieferzeit/Frist angegeben", "level": 2, "parent": "delivery", "patterns": [ r"(?:lieferzeit|lieferfrist|versanddauer)\s*(?:betr(?:ae|ä)gt|von|ca\.?|circa)", r"\d+[\-\s]+(?:\d+\s+)?(?:werk)?tage.*(?:liefer|versand)", r"(?:liefer|versand).*\d+[\-\s]+(?:\d+\s+)?(?:werk)?tage", ], "severity": "LOW", "hint": "Es wird keine konkrete Lieferzeit angegeben. Nennen Sie die voraussichtliche Lieferfrist (z.B. '3-5 Werktage nach Zahlungseingang').", }, # ── L1: Gewaehrleistung ─────────────────────────────────────────── { "id": "warranty", "label": "Gewaehrleistung / Maengelrechte", "level": 1, "parent": None, "patterns": [ r"gew(?:ae|ä)hrleistung", r"m(?:ae|ä)ngelrecht", r"warranty", r"sachm(?:ae|ä)ngel", r"gew(?:ae|ä)hrleistungsfrist", ], "severity": "MEDIUM", "hint": "Die AGB enthalten keine Gewaehrleistungsregelung. Nehmen Sie einen Abschnitt zu Maengelrechten auf, der die gesetzlichen Gewaehrleistungsansprueche beschreibt.", }, { "id": "warranty_period", "label": "Gewaehrleistungsfrist angegeben", "level": 2, "parent": "warranty", "patterns": [ r"(?:gew(?:ae|ä)hrleistungsfrist|verj(?:ae|ä)hrungsfrist)\s*(?:betr(?:ae|ä)gt|von|:)", r"(?:2|zwei)\s+jahre.*(?:gew(?:ae|ä)hrleistung|m(?:ae|ä)ngel|verj(?:ae|ä)hrung)", r"(?:gew(?:ae|ä)hrleistung|m(?:ae|ä)ngel|verj(?:ae|ä)hrung).*(?:2|zwei)\s+jahre", ], "severity": "LOW", "hint": "Die Gewaehrleistungsfrist wird nicht genannt. Geben Sie die Frist an (gesetzlich: 2 Jahre bei Neuware, 1 Jahr bei Gebrauchtwaren gegenueber Verbrauchern moeglich).", }, # ── L1: Kuendigung ──────────────────────────────────────────────── { "id": "termination", "label": "Kuendigung / Vertragsbeendigung", "level": 1, "parent": None, "patterns": [ r"k(?:ue|ü)ndigung", r"vertragsbeendigung", r"termination", r"laufzeit.*(?:vertrag|abo)", r"k(?:ue|ü)ndigungsfrist", ], "severity": "MEDIUM", "hint": "Es fehlt eine Kuendigungsregelung. Beschreiben Sie, wie und unter welchen Bedingungen der Vertrag gekuendigt werden kann.", }, { "id": "termination_period", "label": "Kuendigungsfrist angegeben", "level": 2, "parent": "termination", "patterns": [ r"k(?:ue|ü)ndigungsfrist\s+(?:von|betr(?:ae|ä)gt)", r"\d+\s+(?:tage?|wochen?|monate?).*(?:k(?:ue|ü)ndig|frist)", r"(?:k(?:ue|ü)ndig|frist).*\d+\s+(?:tage?|wochen?|monate?)", ], "severity": "LOW", "hint": "Es wird keine konkrete Kuendigungsfrist angegeben. Nennen Sie die Frist (z.B. '4 Wochen zum Monatsende') und den Zeitpunkt, ab dem sie gilt.", }, { "id": "termination_form", "label": "Formvorschrift fuer Kuendigung", "level": 2, "parent": "termination", "patterns": [ r"k(?:ue|ü)ndigung.*(?:schriftlich|textform|per\s+(?:brief|e-?mail|fax))", r"(?:schriftlich|textform).*k(?:ue|ü)ndigung", ], "severity": "LOW", "hint": "Die Formvorschrift fuer Kuendigungen fehlt. Geben Sie an, in welcher Form eine Kuendigung erfolgen muss (z.B. Textform per E-Mail oder schriftlich per Post).", }, # ── L1: Datenschutzhinweis in AGB ───────────────────────────────── { "id": "data_protection", "label": "Datenschutzhinweis in AGB", "level": 1, "parent": None, "patterns": [ r"datenschutz.*(?:agb|bedingung)", r"(?:agb|bedingung).*datenschutz", r"personenbezogen.*daten.*(?:agb|vertrag)", r"dsgvo.*(?:agb|vertrag)", ], "severity": "LOW", "hint": "Die AGB enthalten keinen Verweis auf den Datenschutz. Ergaenzen Sie einen Hinweis, dass personenbezogene Daten gemaess Ihrer Datenschutzerklaerung verarbeitet werden, und verlinken Sie diese.", }, # ── Neue L1: Salvatorische Klausel ──────────────────────────────── { "id": "salvatory_clause", "label": "Salvatorische Klausel", "level": 1, "parent": None, "patterns": [ r"salvatorische", r"(?:unwirksamkeit|nichtigkeit)\s+(?:einer|einzelner)\s+(?:bestimmung|klausel|regelung)", r"(?:sollte|sofern).*(?:bestimmung|klausel).*(?:unwirksam|nichtig)", r"(?:uebrigen|übrigen)\s+bestimmungen.*(?:unberuehrt|unberührt|wirksam|bestehen)", ], "severity": "LOW", "hint": "Es fehlt eine salvatorische Klausel. Ergaenzen Sie eine Regelung, dass die uebrigen Bestimmungen wirksam bleiben, falls einzelne Klauseln unwirksam sein sollten.", }, # ── Neue L1: Aenderungsklausel ──────────────────────────────────── { "id": "amendment_clause", "label": "Aenderungsklausel fuer AGB", "level": 1, "parent": None, "patterns": [ r"(?:ae|ä)nderung.*(?:agb|bedingung)", r"(?:agb|bedingung).*(?:ae|ä)nder", r"(?:anpassung|aktualisierung).*(?:agb|bedingung|geschaeftsbedingung|geschäftsbedingung)", r"(?:neue\s+fassung|neufassung).*(?:agb|bedingung)", ], "severity": "LOW", "hint": "Die AGB enthalten keine Aenderungsklausel. Beschreiben Sie, wie und wann die AGB geaendert werden koennen und wie Kunden ueber Aenderungen informiert werden.", }, # ── Neue L1: Verbraucherrechte §309 ─────────────────────────────── { "id": "consumer_rights", "label": "Verbraucherrechte nicht eingeschraenkt (§309 BGB)", "level": 1, "parent": None, "patterns": [ r"§\s*309", r"verbraucherrecht", r"(?:gesetzlich|zwingende)\w*\s+recht\w*.*(?:unberuehrt|unberührt|bestehen\s+bleiben)", r"(?:verbrauch|konsument).*(?:recht|anspruch|schutz)", ], "severity": "LOW", "hint": "Es fehlt ein Hinweis, dass zwingende Verbraucherrechte (§309 BGB) unberuehrt bleiben. Stellen Sie klar, dass gesetzliche Verbraucherrechte durch die AGB nicht eingeschraenkt werden.", }, ]