"""
Social Media DSE checks — Art. 26 DSGVO Joint Controller.

Level 1: Pflichtangabe erwaehnt?
Level 2: Pflichtangabe korrekt/vollstaendig?
"""

JOINT_CONTROLLER_CHECKLIST = [
    # ── L1: Gemeinsam Verantwortliche ─────────────────────────────────
    {
        "id": "joint_parties",
        "label": "Gemeinsam Verantwortliche benannt (Art. 26(1))",
        "level": 1, "parent": None,
        "patterns": [
            r"gemeinsam.*verantwortlich", r"joint.*controller",
            r"gemeinsame\s+verantwortlichkeit",
            r"art\.\s*26", r"mitverantwortlich",
            r"wir.*(?:und|gemeinsam).*(?:betreiber|facebook|meta|google)",
            r"(?:betreiber|netzwerk).*verantwortlich",
        ],
        "severity": "HIGH",
        "hint": "Seit dem EuGH-Urteil 'Fanpage' (C-210/16, Juni 2018) sind Fanpage-Betreiber gemeinsam Verantwortliche nach Art. 26 DSGVO. Ohne ausdrueckliche Benennung der gemeinsamen Verantwortlichkeit fehlt die Rechtsgrundlage fuer Ihre gesamte Social-Media-Datenverarbeitung.",
    },
    {
        "id": "facebook_meta_named",
        "label": "Facebook/Meta konkret als Verantwortlicher benannt",
        "level": 2, "parent": "joint_parties",
        "patterns": [
            r"(?:facebook|meta)\s+(?:ireland|platforms|inc)",
            r"meta\s+platforms.*(?:verantwortlich|controller|betreiber)",
        ],
        "severity": "MEDIUM",
        "hint": "Korrekte Bezeichnung: 'Meta Platforms Ireland Limited, 4 Grand Canal Square, Dublin 2, Irland'. Achtung: Seit 2022 ist Meta Platforms Ireland Ltd. (nicht Facebook Ireland Ltd.) der europaeische Verantwortliche — veraltete Firmennamen aktualisieren.",
    },

    # ── L1: Vereinbarung Art. 26 ──────────────────────────────────────
    {
        "id": "arrangement",
        "label": "Vereinbarung nach Art. 26 DSGVO",
        "level": 1, "parent": None,
        "patterns": [
            r"vereinbarung.*art\.\s*26", r"art\.\s*26.*vereinbarung",
            r"page\s*controller", r"fanpage", r"insights",
            r"gemeinsame.*verantwortung.*(?:vertrag|vereinbarung)",
            r"addendum|nachtrag|seiten.*insights",
        ],
        "severity": "HIGH",
        "hint": "Art. 26 DSGVO verlangt eine transparente Vereinbarung ueber die Aufgabenverteilung. Bei Facebook ist das 'Page Controller Addendum' abzuschliessen und in der DSE zu verlinken. Ohne diese Vereinbarung besteht ein Bussgeldrisiko nach Art. 83(4)(a) DSGVO.",
    },
    {
        "id": "insights_referenced",
        "label": "Seiteninsights / Page Insights erwaehnt",
        "level": 2, "parent": "arrangement",
        "patterns": [
            r"(?:seiten[\-\s]?)?insights",
            r"page\s+insights",
            r"(?:statistik|nutzungsstatistik).*(?:facebook|meta|fanpage|seite)",
        ],
        "severity": "MEDIUM",
        "hint": "Page Insights umfassen demografische Daten, Reichweite und Interaktionen. Der EuGH (C-210/16) hat klargestellt, dass der Fanpage-Betreiber fuer die Insights-Verarbeitung mitverantwortlich ist — auch wenn er keinen Zugriff auf Rohdaten hat.",
    },
    {
        "id": "page_controller_addendum",
        "label": "Page Controller Addendum / Seiten-Insights-Ergaenzung",
        "level": 2, "parent": "arrangement",
        "patterns": [
            r"page\s+controller\s+addendum",
            r"seiten[\-\s]?insights[\-\s]?erg(?:ae|ä)nzung",
            r"(?:addendum|nachtrag|erg(?:ae|ä)nzung).*(?:controller|verantwortlich)",
        ],
        "severity": "LOW",
        "hint": "Verlinken Sie das Page Controller Addendum direkt: https://www.facebook.com/legal/controller_addendum. Art. 26(2) S. 2 DSGVO verlangt, dass das Wesentliche der Vereinbarung dem Betroffenen zur Verfuegung gestellt wird.",
    },

    # ── L1: Anlaufstelle ──────────────────────────────────────────────
    {
        "id": "contact_point",
        "label": "Anlaufstelle fuer Betroffene (Art. 26(1) S.3)",
        "level": 1, "parent": None,
        "patterns": [
            r"anlaufstelle", r"kontaktstelle",
            r"ansprechpartner.*betroffene",
            r"rechte.*(?:gegen(?:ue|ü)ber)\s+(?:uns|beiden)",
            r"rechte.*geltend\s+machen",
            r"wenden\s+sie\s+sich",
        ],
        "severity": "MEDIUM",
        "hint": "Art. 26(1) S. 3 DSGVO: Betroffene koennen ihre Rechte bei jedem der Verantwortlichen geltend machen. Benennen Sie sich als primaere Anlaufstelle mit konkreten Kontaktdaten (E-Mail, Anschrift) — die Plattform ist oft schwer erreichbar.",
    },
    {
        "id": "contact_both_parties",
        "label": "Kontaktdaten beider Verantwortlicher",
        "level": 2, "parent": "contact_point",
        "patterns": [
            r"(?:sowohl|beide).*(?:kontakt|wenden|geltend)",
            r"(?:uns|bei\s+uns).*(?:als\s+auch|oder|und).*(?:facebook|meta|google|plattform)",
            r"(?:facebook|meta|google|plattform).*(?:als\s+auch|oder|und).*(?:uns|bei\s+uns)",
        ],
        "severity": "LOW",
        "hint": "EuGH C-210/16 Rn. 43: Beide Verantwortliche muessen erreichbar sein. Nennen Sie Ihre eigenen Kontaktdaten UND verlinken Sie den Datenschutzkontakt der Plattform (z.B. Meta: https://www.facebook.com/help/contact/540977946302970).",
    },

    # ── L1: Verarbeitungsaufteilung ───────────────────────────────────
    {
        "id": "processing_split",
        "label": "Verarbeitungsaufteilung (wer macht was)",
        "level": 1, "parent": None,
        "patterns": [
            r"(?:wir|betreiber).*(?:verarbeiten|erheben|nutzen).*(?:daten|informationen)",
            r"(?:facebook|meta|google|youtube|instagram|linkedin|twitter|x\.com).*(?:verarbeit|erhebt|nutzt|speichert)",
            r"bei\s+besuch\s+(?:unserer|der)\s+(?:seite|fanpage|profil)",
            r"(?:nutzungsstatistik|statistik|insight).*(?:betreiber|netzwerk)",
        ],
        "severity": "HIGH",
        "hint": "Art. 26(1) DSGVO verlangt eine transparente Aufgabenteilung. Typisch: Die Plattform erhebt und aggregiert Nutzerdaten; Sie als Betreiber nutzen die Insights-Statistiken. Stellen Sie klar, dass Sie keinen Zugriff auf Einzelnutzer-Rohdaten haben (falls zutreffend).",
    },

    # ── L1: Datenkategorien ───────────────────────────────────────────
    {
        "id": "social_data_types",
        "label": "Kategorien verarbeiteter Daten",
        "level": 1, "parent": None,
        "patterns": [
            r"(?:nutzungsstatistik|insight|reichweite|interaktion|klick|aufruf)",
            r"(?:ip.?adresse|standort|browser|ger(?:ae|ä)t|alter|geschlecht)",
            r"(?:personenbezogen|daten).*(?:social|netzwerk|plattform)",
            r"(?:nutzername|beitr(?:ae|ä)g|profil|like|kommentar)",
        ],
        "severity": "HIGH",
        "hint": "Art. 13(1)(d) DSGVO: Datenkategorien muessen benannt werden. Bei Social Media typisch: Profildaten, IP-Adresse, Geraete-/Browserdaten, Interaktionsdaten (Likes, Kommentare), demografische Daten (Alter, Geschlecht, Standort) aus Insights.",
    },

    # ── L1: Plattformen ───────────────────────────────────────────────
    {
        "id": "platforms",
        "label": "Auflistung der genutzten Plattformen",
        "level": 1, "parent": None,
        "patterns": [
            r"(?:facebook|instagram|youtube|twitter|x\.com|linkedin|xing|tiktok)",
            r"(?:kan(?:ae|ä)le|plattform|netzwerk|profil|account|auftritte).*(?:social|medien)",
            r"social\s*media.*(?:angebot|pr(?:ae|ä)senz|auftritte)",
        ],
        "severity": "MEDIUM",
        "hint": "Jede Plattform hat eigene Datenschutz-Konditionen und Joint-Controller-Vereinbarungen. Listen Sie alle Plattformen einzeln auf — eine gemeinsame Pauschalerklaerung fuer 'Social Media' genuegt nicht den Transparenzanforderungen nach Art. 13 DSGVO.",
    },
    {
        "id": "platform_dse_links",
        "label": "Links zu Datenschutzerklaerungen der Plattformen",
        "level": 2, "parent": "platforms",
        "patterns": [
            r"(?:datenschutz|privacy).*(?:facebook|meta|google|youtube|instagram|linkedin|twitter)",
            r"(?:facebook|meta|google|youtube|instagram|linkedin|twitter).*(?:datenschutz|privacy)",
            r"(?:privacy\s+policy|datenschutzerkl(?:ae|ä)rung).*(?:finden\s+sie|abrufbar|unter)",
        ],
        "severity": "LOW",
        "hint": "Verlinken Sie pro Plattform direkt die Privacy Policy: Meta (https://www.facebook.com/privacy/policy), Google/YouTube (https://policies.google.com/privacy), LinkedIn (https://www.linkedin.com/legal/privacy-policy). Pruefen Sie Links regelmaessig auf Aktualitaet.",
    },

    # ── L1: Drittlandtransfer ─────────────────────────────────────────
    {
        "id": "third_country",
        "label": "Drittlandtransfer (USA bei Social Media)",
        "level": 1, "parent": None,
        "patterns": [
            r"(?:usa|vereinigte\s+staaten|drittland|drittstaaten)",
            r"privacy\s+shield|data\s+privacy\s+framework|angemessenheitsbeschluss",
            r"standardvertragsklausel|standard.*contractual",
            r"(?:(?:ue|ü)bermittlung|(?:ueber|über)mittlung).*(?:usa|drittland|au(?:ss|ß)erhalb)",
        ],
        "severity": "MEDIUM",
        "hint": "Bei Social Media werden Daten regelhaft in die USA uebermittelt. Hinweis: Das Privacy Shield ist seit 'Schrems II' (EuGH C-311/18, Juli 2020) ungueltig. Aktuell: EU-US Data Privacy Framework/DPF (Angemessenheitsbeschluss seit Juli 2023) oder SCC (Art. 46(2)(c) DSGVO).",
    },
    {
        "id": "usa_transfer_scc",
        "label": "Standardvertragsklauseln (SCC) fuer US-Transfer",
        "level": 2, "parent": "third_country",
        "patterns": [
            r"standard\s*vertragsklausel|scc",
            r"standard\s+contractual\s+clause",
        ],
        "severity": "MEDIUM",
        "hint": "SCC allein genuegen nach 'Schrems II' (C-311/18) nicht — es muss zusaetzlich ein Transfer Impact Assessment (TIA) durchgefuehrt werden. Pruefen Sie, ob die Plattform ergaenzende Schutzmassnahmen (z.B. Verschluesselung, Pseudonymisierung) dokumentiert.",
    },
    {
        "id": "usa_transfer_dpf",
        "label": "Data Privacy Framework (DPF) fuer US-Transfer",
        "level": 2, "parent": "third_country",
        "patterns": [
            r"data\s+privacy\s+framework|dpf",
            r"angemessenheitsbeschluss.*(?:usa|us|amerika)",
            r"adequacy\s+decision",
        ],
        "severity": "LOW",
        "hint": "Meta, Google und LinkedIn sind unter dem DPF zertifiziert (pruefbar unter https://www.dataprivacyframework.gov). Erwaehnen Sie den Angemessenheitsbeschluss der EU-Kommission vom 10.07.2023 und pruefen Sie die Zertifizierung der jeweiligen Plattform.",
    },

    # ── L1: Rechtsgrundlage ───────────────────────────────────────────
    {
        "id": "legal_basis",
        "label": "Rechtsgrundlage (Art. 6 DSGVO)",
        "level": 1, "parent": None,
        "patterns": [
            r"rechtsgrundlage", r"art\.\s*6",
            r"berechtigtes\s+interesse",
            r"einwilligung.*art\.\s*6", r"lit\.\s*[a-f]",
        ],
        "severity": "MEDIUM",
        "hint": "Fuer Fanpage-Insights stuetzen sich die meisten Betreiber auf Art. 6(1) lit. f DSGVO (berechtigtes Interesse an Reichweitenanalyse). Achtung: Die DSK hat 2018 die Rechtsgrundlage fuer Fanpages in Frage gestellt — dokumentieren Sie Ihre Interessenabwaegung sorgfaeltig.",
    },
    {
        "id": "legal_basis_specific_lit",
        "label": "Konkretes Art. 6(1) lit. angegeben",
        "level": 2, "parent": "legal_basis",
        "patterns": [
            r"art\.\s*6\s*(?:abs\.\s*)?1\s*(?:s\.\s*1\s*)?(?:lit\.\s*)?[a-f]",
            r"artikel\s*6\s*(?:absatz\s*)?1\s*(?:buchstabe\s*)?[a-f]",
        ],
        "severity": "LOW",
        "hint": "Praxistipp: Nennen Sie pro Verarbeitungszweck den passenden Buchstaben. Typisch bei Social Media: Art. 6(1) lit. a (Einwilligung bei Direktnachrichten), lit. b (Vertrag bei Gewinnspielen), lit. f (berechtigtes Interesse bei Insights/PR).",
    },

    # ── L1: Betroffenenrechte ─────────────────────────────────────────
    {
        "id": "rights",
        "label": "Betroffenenrechte (Art. 15-21)",
        "level": 1, "parent": None,
        "patterns": [
            r"recht\s+auf\s+auskunft", r"recht\s+auf\s+l(?:oe|ö)schung",
            r"art\.\s*1[5-9]", r"betroffenenrecht",
            r"ihre\s+rechte", r"rechte.*betroffene",
            r"widerspruchsrecht",
        ],
        "severity": "MEDIUM",
        "hint": "Besonders relevant bei Social Media: Widerspruchsrecht (Art. 21 DSGVO) gegen Insights-Tracking und Recht auf Loeschung (Art. 17 DSGVO). Weisen Sie darauf hin, dass Rechte gegenueber beiden Verantwortlichen geltend gemacht werden koennen (Art. 26(3) DSGVO).",
    },
    {
        "id": "opt_out_social",
        "label": "Opt-Out-Moeglichkeit fuer Social-Media-Tracking",
        "level": 2, "parent": "rights",
        "patterns": [
            r"(?:opt[\-\s]?out|widerspruch|deaktivieren).*(?:social|facebook|tracking|insight)",
            r"(?:social|facebook|tracking|insight).*(?:opt[\-\s]?out|widerspruch|deaktivieren)",
            r"(?:abmelden|abschalten).*(?:tracking|statistik|insight)",
        ],
        "severity": "LOW",
        "hint": "Verlinken Sie konkrete Opt-Out-Seiten: Facebook Ad-Settings (https://www.facebook.com/ads/preferences), Google Ads-Einstellungen (https://adssettings.google.com). Weisen Sie auch auf die allgemeine Widerspruchsmoeglichkeit via YourOnlineChoices.eu hin.",
    },

    # ── L1: Social Bookmarks vs Plugins ───────────────────────────────
    {
        "id": "social_bookmarks",
        "label": "Hinweis auf Social Bookmarks vs. Plugins",
        "level": 1, "parent": None,
        "patterns": [
            r"social\s*(?:bookmark|plugin|button|widget)",
            r"(?:kein|keine).*(?:plugin|widget|button).*(?:gesetzt|eingebunden|geladen)",
            r"(?:link|verweis|weiterleitung).*(?:dienst|anbieter|netzwerk)",
        ],
        "severity": "MEDIUM",
        "hint": "Social-Media-Plugins (Like-Button, Share-Widget) uebertragen beim Seitenaufruf Nutzerdaten an die Plattform — ohne Einwilligung ein DSGVO-Verstoss (EuGH C-40/17, 'Fashion ID'). Empfehlung: Shariff-Buttons oder reine Bild-Links (Social Bookmarks) verwenden.",
    },
    {
        "id": "two_click_solution",
        "label": "2-Klick-Loesung oder vergleichbare Technik",
        "level": 2, "parent": "social_bookmarks",
        "patterns": [
            r"(?:zwei|2)[\-\s]?klick",
            r"(?:shariff|share[\-\s]?buttons?\s+ohne\s+tracking)",
            r"(?:erst|nur)\s+(?:bei|nach|durch)\s+(?:klick|aktivierung).*(?:daten|verbindung)",
            r"social\s*bookmark",
            r"(?:kein|keine)\s+(?:social[\-\s]?media[\-\s]?)?plugin",
            r"(?:link|verweis|grafik).*(?:weitergeleitet|weiterleitung)",
        ],
        "severity": "LOW",
        "hint": "Datenschutzfreundliche Alternativen: Shariff (Heise, Open Source), 2-Klick-Loesung oder reine Bild-Links/Social Bookmarks. Dokumentieren Sie die eingesetzte Technik — nach EuGH 'Fashion ID' (C-40/17) muss der Website-Betreiber eine Einwilligung einholen, wenn Plugins direkt laden.",
    },
]
