Files
Benjamin Admin 57c0f940a2
CI / detect-changes (push) Successful in 11s
CI / branch-name (push) Has been skipped
CI / nodejs-build (push) Successful in 2m19s
CI / test-go (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / validate-canonical-controls (push) Successful in 16s
CI / loc-budget (push) Failing after 15s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / iace-gt-coverage (push) Has been skipped
CI / test-python-backend (push) Successful in 37s
feat(consent+report): P56-P67 Mercedes-Audit-Cycle (Anti-Audit, Phase G Vendors, Cookie-Behavior-Validator + 5 Mail-Polish-Items) [migration-approved]
P56  Anti-Auditing-Detection als constructive Compliance-Finding (Audit-API-
     Empfehlung statt Anklage, weil Mercedes berechtigt Bots blockiert)
P57  Phase G vendor_details Union mit cmp_vendors -> 42 Anbieter sichtbar
P58  Anti-Audit-Detection robuster (Script-Domain-Check + Settings-spezifisch)
P59  Cookie-Behavior-Validator (4 Layer, 3-Tier-Severity: MEDIUM=Kategorie-
     Mismatch / HIGH=Zweck-Mismatch / CRITICAL=beide=Vorsatz-Indiz)
     + Open Cookie Database (CC0) als Library-Seed (2264 Cookies)
P59b Cookie-Behavior in Banner-Check verdrahtet + Mail-Block (BUGFIX:
     SessionLocal selbst oeffnen, db war im Background-Task nicht im Scope)

Mail-Polish nach Mercedes-Review:
P63  Banner-Footer-Links auch im wb7-link/role=link erkennen (Shadow-DOM-
     Walker label-based statt nur <a href>)
P64  Re-Access-Severity: MEDIUM statt HIGH, wenn Footer "Einstellungen" oder
     Mercedes-typisch existiert; OEM-Footer-Detection (wb7-footer)
P65  Text-Truncation: Word-Boundary statt Zeichen-Cut (kein "einfa"-Bruch
     mehr in Sofortmassnahmen)
P66  GF-Aktionen: Service-Zweck vs Cookie-Zweck explizit erklaert
     (haeufige Verwechslung Marketing/GF: "Akamai-Beschreibung" != Cookie-
     Zweck pro DSK-OH 2024)
P67  Stirring-Finding mit "Verlust-Framing"-Erklaerung + Alt-vs-Neutral-
     Beispiel, statt nur EDPB-Fachbegriff

Compliance-Advisor FAQ (admin agent-core/soul):
  + CNIL/EDPB Top-Bussgelder (Google 100M, Meta 60M, Amazon 35M)
  + Deutsche Praezedenz (LG Muenchen Google Fonts, EuGH Planet49, BGH I ZR 7/16)
  + 4 Risiko-Pfade (Bussgeld/Abmahnung/Sammelklage/NOYB) + Berechnungs-Methodik

Document-Generator Templates: AGB-DE (142), Impressum (140), Widerrufs-
formular-Anlage (143), DSR-Process-Dedup (139), Cookie-Library (144).

Architektur: doc_action_mappings.py + banner_dom_walkers.py +
cookie_behavior_validator.py + vendor_detail_extractor.py rausgezogen,
um die 500-LOC-Caps in agent_doc_check_report.py und
banner_text_checker.py einzuhalten.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 06:28:25 +02:00

132 lines
5.2 KiB
PL/PgSQL

-- Migration 140: Impressum-Template DE (P43)
--
-- Impressum doc_type fehlte komplett in compliance_legal_templates.
-- Im Frontend gelistet aber 0 Templates -> 404 bei Auswahl.
-- Enthaelt alle §5 TMG + §18 MStV Pflichtangaben.
BEGIN;
INSERT INTO compliance.compliance_legal_templates (
id, tenant_id, document_type, title, description, content,
placeholders, language, jurisdiction, license_name,
attribution_required, is_complete_document, version, status,
source_name
)
SELECT
gen_random_uuid(),
'9282a473-5c95-4b3a-bf78-0ecc0ec71d3e'::uuid,
'impressum',
'Impressum (§5 TMG, §18 MStV, §27a UStG, DL-InfoV)',
'Pflichtangaben-Vorlage fuer Websites + Telemedien. Modular mit IF-Bloecken fuer juristische Person, Berufsgruppen, journalistisch-redaktionelle Angebote, kuenstliche Intelligenz-Kennzeichnung.',
'# Impressum
## Angaben gemaess §5 Telemediengesetz (TMG)
**{{company_legal_name}}**
{{company_address}}
{{company_postal}} {{company_city}}
{{company_country}}
## Vertretungsberechtigte/r (§5(1) Nr.1 TMG)
{{representative_role}}: {{representative_name}}
## Kontakt (§5(1) Nr.2 TMG)
Telefon: {{company_phone}}
E-Mail: {{company_email}}
{{#IF HAS_FAX}}Fax: {{company_fax}}{{/IF}}
## Handelsregister (§5(1) Nr.4 TMG)
Registergericht: {{register_court}}
Registernummer: {{register_number}}
{{#IF HAS_VAT_ID}}
## Umsatzsteuer-Identifikationsnummer (§5(1) Nr.6 TMG)
USt-IdNr. gemaess §27a Umsatzsteuergesetz: {{vat_id}}
{{/IF}}
{{#IF HAS_WIRTSCHAFTS_ID}}
## Wirtschafts-Identifikationsnummer
Wirtschafts-ID gemaess §139c Abgabenordnung: {{wirtschafts_id}}
{{/IF}}
{{#IF IS_REGULATED_PROFESSION}}
## Berufsrechtliche Angaben (§5(1) Nr.5 TMG)
- Berufsbezeichnung: {{profession_title}}
- Zustaendige Kammer: {{chamber_name}}, {{chamber_address}}
- Verliehen in: {{profession_country}}
- Berufsrechtliche Regelungen: {{profession_regulations}}
- Regelungen einsehbar unter: {{profession_regulations_url}}
{{/IF}}
{{#IF HAS_LIABILITY_INSURANCE}}
## Berufshaftpflichtversicherung (DL-InfoV §2(1) Nr.11)
- Versicherer: {{insurance_name}}
- Anschrift: {{insurance_address}}
- Geltungsraum: {{insurance_scope}}
{{/IF}}
{{#IF IS_JOURNALISTIC}}
## Verantwortlich fuer den Inhalt nach §18(2) MStV
{{editor_name}}
{{editor_address}}
{{editor_postal}} {{editor_city}}
{{/IF}}
{{#IF HAS_SUPERVISION}}
## Aufsichtsbehoerde
{{supervision_authority}}
{{supervision_address}}
{{/IF}}
## Streitschlichtung
Die Europaeische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: https://ec.europa.eu/consumers/odr/
Unsere E-Mail-Adresse finden Sie oben im Impressum.
{{#IF VSBG_PARTICIPATION}}
Wir sind {{vsbg_willing}} bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen.
{{#IF VSBG_WILLING}}
Zustaendige Verbraucherschlichtungsstelle:
{{vsbg_name}}
{{vsbg_address}}
{{vsbg_url}}
{{/IF}}
{{/IF}}
## Haftungsausschluss
### Haftung fuer Inhalte
Als Diensteanbieter sind wir gemaess §7 Abs.1 TMG fuer eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, uebermittelte oder gespeicherte fremde Informationen zu ueberwachen oder nach Umstaenden zu forschen, die auf eine rechtswidrige Taetigkeit hinweisen.
Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberuehrt. Eine diesbezuegliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung moeglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.
### Haftung fuer Links
Unser Angebot enthaelt Links zu externen Websites Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb koennen wir fuer diese fremden Inhalte auch keine Gewaehr uebernehmen. Fuer die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich.
### Urheberrecht
Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfaeltigung, Bearbeitung, Verbreitung und jede Art der Verwertung ausserhalb der Grenzen des Urheberrechtes beduerfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers.
---
*Stand: {{date}} - Version: {{version}}*',
'[{"name": "company_legal_name", "label": "Firma (mit Rechtsform)", "required": true}, {"name": "company_address", "label": "Anschrift", "required": true}, {"name": "company_postal", "label": "PLZ", "required": true}, {"name": "company_city", "label": "Ort", "required": true}, {"name": "company_country", "label": "Land", "required": true}, {"name": "representative_role", "label": "Funktion (z.B. Geschaeftsfuehrerin)", "required": true}, {"name": "representative_name", "label": "Name", "required": true}, {"name": "company_phone", "label": "Telefon", "required": true}, {"name": "company_email", "label": "E-Mail", "required": true}, {"name": "register_court", "label": "Registergericht", "required": true}, {"name": "register_number", "label": "Registernummer", "required": true}, {"name": "vat_id", "label": "USt-IdNr.", "required": false}]'::jsonb,
'de', 'DE', 'MIT', false, true, '1.0.0', 'published',
'BreakPilot Compliance'
;
COMMIT;