Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6f0afa98be | |||
| 629cb377d5 | |||
| 9cf53090eb | |||
| e2bc6d02d5 | |||
| abe7e59625 | |||
| 28798a3ef6 |
+13
@@ -48,3 +48,16 @@ backups/*.backup
|
|||||||
*.wav
|
*.wav
|
||||||
ai-compliance-sdk/server
|
ai-compliance-sdk/server
|
||||||
*.bak
|
*.bak
|
||||||
|
|
||||||
|
# Build/test artifacts (2026-06-21 cleanup)
|
||||||
|
docs-site/
|
||||||
|
ux-screenshots/
|
||||||
|
**/test-results/
|
||||||
|
**/audit-reports/
|
||||||
|
admin-compliance/e2e/reports/
|
||||||
|
admin-compliance/e2e/e2e/
|
||||||
|
design/redesign/*-preview.png
|
||||||
|
admin-compliance/BreakPilot-Pitch-Submission.html
|
||||||
|
admin-compliance/shot-ds.mjs
|
||||||
|
admin-compliance/ux-shots.mjs
|
||||||
|
Neuer Ordner mit Objekten/
|
||||||
|
|||||||
@@ -231,6 +231,17 @@ _USE_CASES: tuple[UseCase, ...] = (
|
|||||||
UseCase("bafin_it", "BaFin IT-Aufsicht (VAIT/BAIT)", "security",
|
UseCase("bafin_it", "BaFin IT-Aufsicht (VAIT/BAIT)", "security",
|
||||||
regulations=("VAIT", "BAIT"),
|
regulations=("VAIT", "BAIT"),
|
||||||
verification_methods=("it_process", "document", "network")),
|
verification_methods=("it_process", "document", "network")),
|
||||||
|
UseCase("eidas", "eIDAS / Vertrauensdienste (VO 910/2014)", "product",
|
||||||
|
regulations=("eIDAS",), verification_methods=("document", "it_process"),
|
||||||
|
categories=("compliance", "security"),
|
||||||
|
keyword_tokens=("eidas", "vertrauensdienst", "signatur", "siegel",
|
||||||
|
"zeitstempel", "zertifikat")),
|
||||||
|
UseCase("geschaeftsgeheimnis", "Geschäftsgeheimnisse (GeschGehG)", "cross_cutting",
|
||||||
|
regulations=("GeschGehG",),
|
||||||
|
verification_methods=("document", "it_process", "manual"),
|
||||||
|
categories=("compliance", "security"),
|
||||||
|
keyword_tokens=("geschäftsgeheimnis", "vertraulichkeit", "geheimhaltung",
|
||||||
|
"betriebsgeheimnis")),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -341,6 +352,11 @@ _REGULATION_RULES: tuple[tuple[str, str], ...] = (
|
|||||||
("bait", "bafin_it"),
|
("bait", "bafin_it"),
|
||||||
("gobd", "steuerrecht"),
|
("gobd", "steuerrecht"),
|
||||||
("dienstleistungs-informationspflichten", "impressum"),
|
("dienstleistungs-informationspflichten", "impressum"),
|
||||||
|
# eIDAS / Geschäftsgeheimnis (neue Use Cases 2026-06-17)
|
||||||
|
("eidas", "eidas"),
|
||||||
|
("910/2014", "eidas"),
|
||||||
|
("geschäftsgeheim", "geschaeftsgeheimnis"),
|
||||||
|
("geschgehg", "geschaeftsgeheimnis"),
|
||||||
# Datenschutz-Catch-alls (zuletzt)
|
# Datenschutz-Catch-alls (zuletzt)
|
||||||
("nist privacy framework", "dse"),
|
("nist privacy framework", "dse"),
|
||||||
("dsgvo", "dse"),
|
("dsgvo", "dse"),
|
||||||
|
|||||||
@@ -182,12 +182,18 @@ def _filter_controls(
|
|||||||
for c in controls:
|
for c in controls:
|
||||||
cid = c.get("control_id") or ""
|
cid = c.get("control_id") or ""
|
||||||
prefix = cid.split("-")[0].upper() if "-" in cid else ""
|
prefix = cid.split("-")[0].upper() if "-" in cid else ""
|
||||||
|
on_topic = criteria_on_topic(c.get("pass_criteria"),
|
||||||
|
c.get("fail_criteria"))
|
||||||
required = SECTOR_PREFIXES.get(prefix)
|
required = SECTOR_PREFIXES.get(prefix)
|
||||||
if required and not (scope_lc & required):
|
# Sektor-Gate nur fuer NICHT-on-topic Controls: ein klar
|
||||||
|
# impressum-thematischer Control (z.B. MStV §18(1) mit GOV-Prefix
|
||||||
|
# aus der Domain-Erkennung der Control-Generierung) darf nicht am
|
||||||
|
# Branchen-Prefix scheitern. Der Themen-Ueberlapp ist der staerkere
|
||||||
|
# Relevanz-Beweis als ein vererbter ID-Prefix.
|
||||||
|
if required and not (scope_lc & required) and not on_topic:
|
||||||
sector_dropped += 1
|
sector_dropped += 1
|
||||||
continue
|
continue
|
||||||
if not criteria_on_topic(c.get("pass_criteria"),
|
if not on_topic:
|
||||||
c.get("fail_criteria")):
|
|
||||||
offtopic_dropped += 1
|
offtopic_dropped += 1
|
||||||
continue
|
continue
|
||||||
kept.append(c)
|
kept.append(c)
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
-- Migration 154: control_pendants — self-written (license_rule=3) -> sourced
|
||||||
|
-- (license_rule 1/2) Pendant-Mapping aus dem Phase-2-Reconcile (Embedding-kNN +
|
||||||
|
-- Haiku-Adjudikation, 2026-06-15). Ein hier gelistetes self-written Atom hat ein
|
||||||
|
-- kommerziell nutzbares Quell-Control, das DIESELBE Pflicht ausdrueckt -> das
|
||||||
|
-- Retrieval soll das lizenzierte Quell-Control bevorzugen. Additiv, idempotent.
|
||||||
|
-- [migration-approved]
|
||||||
|
SET search_path TO compliance, public;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS control_pendants (
|
||||||
|
control_uuid uuid PRIMARY KEY,
|
||||||
|
pendant_control_uuid uuid NOT NULL,
|
||||||
|
cosine numeric,
|
||||||
|
method varchar(40) NOT NULL DEFAULT 'embed_haiku',
|
||||||
|
created_at timestamptz NOT NULL DEFAULT now()
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX IF NOT EXISTS idx_control_pendants_pendant
|
||||||
|
ON control_pendants (pendant_control_uuid);
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
"""Tests for the audit-walk ZIP-builder."""
|
||||||
|
|
||||||
|
import io
|
||||||
|
import json
|
||||||
|
import zipfile
|
||||||
|
from unittest.mock import patch, MagicMock
|
||||||
|
|
||||||
|
from compliance.services.audit_walk_zip_builder import (
|
||||||
|
_readme,
|
||||||
|
build_audit_walk_zip,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
_FAKE_WALK = {
|
||||||
|
"walk_id": "abc123def456",
|
||||||
|
"url": "https://example.com/",
|
||||||
|
"started_at": "2026-06-07T10:00:00+00:00",
|
||||||
|
"completed_at": "2026-06-07T10:00:30+00:00",
|
||||||
|
"video": {
|
||||||
|
"filename": "video.webm",
|
||||||
|
"size_bytes": 12345,
|
||||||
|
"sha256": "a" * 64,
|
||||||
|
"dsms": {"cid": "QmFakeCidVideo"},
|
||||||
|
},
|
||||||
|
"walk_json_dsms": {"cid": "QmFakeCidMeta"},
|
||||||
|
"actions": [
|
||||||
|
{"action": "navigate", "url": "https://example.com/dse"},
|
||||||
|
{"action": "navigate", "url": "https://example.com/imprint"},
|
||||||
|
{"action": "expand_accordions", "expanded": 3},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class TestReadme:
|
||||||
|
def test_contains_walk_id_and_url(self):
|
||||||
|
r = _readme(_FAKE_WALK)
|
||||||
|
assert "abc123def456" in r
|
||||||
|
assert "https://example.com/" in r
|
||||||
|
|
||||||
|
def test_contains_dsms_cids(self):
|
||||||
|
r = _readme(_FAKE_WALK)
|
||||||
|
assert "QmFakeCidVideo" in r
|
||||||
|
assert "QmFakeCidMeta" in r
|
||||||
|
|
||||||
|
def test_counts_navigates_and_accordions(self):
|
||||||
|
r = _readme(_FAKE_WALK)
|
||||||
|
assert "2 Compliance-Seiten" in r
|
||||||
|
assert "3 Akkordeon" in r
|
||||||
|
|
||||||
|
|
||||||
|
class TestBuildZip:
|
||||||
|
def test_empty_walk_returns_empty(self):
|
||||||
|
assert build_audit_walk_zip({}) == b""
|
||||||
|
|
||||||
|
def test_zip_contains_three_entries(self):
|
||||||
|
# Mock the video fetch to return tiny content
|
||||||
|
with patch(
|
||||||
|
"compliance.services.audit_walk_zip_builder.httpx.Client"
|
||||||
|
) as mock_client:
|
||||||
|
instance = mock_client.return_value.__enter__.return_value
|
||||||
|
instance.get.return_value = MagicMock(
|
||||||
|
status_code=200, content=b"fakevideo",
|
||||||
|
)
|
||||||
|
zip_bytes = build_audit_walk_zip(_FAKE_WALK)
|
||||||
|
assert zip_bytes
|
||||||
|
with zipfile.ZipFile(io.BytesIO(zip_bytes)) as z:
|
||||||
|
names = set(z.namelist())
|
||||||
|
assert {"video.webm", "walk.json", "README.txt"}.issubset(names)
|
||||||
|
walk_content = json.loads(z.read("walk.json"))
|
||||||
|
assert walk_content["walk_id"] == "abc123def456"
|
||||||
|
assert z.read("video.webm") == b"fakevideo"
|
||||||
|
|
||||||
|
def test_video_fetch_failure_still_produces_zip(self):
|
||||||
|
# consent-tester down → no video, but ZIP still contains
|
||||||
|
# walk.json + README so the recipient has the metadata.
|
||||||
|
with patch(
|
||||||
|
"compliance.services.audit_walk_zip_builder.httpx.Client"
|
||||||
|
) as mock_client:
|
||||||
|
instance = mock_client.return_value.__enter__.return_value
|
||||||
|
instance.get.side_effect = Exception("network down")
|
||||||
|
zip_bytes = build_audit_walk_zip(_FAKE_WALK)
|
||||||
|
assert zip_bytes
|
||||||
|
with zipfile.ZipFile(io.BytesIO(zip_bytes)) as z:
|
||||||
|
names = z.namelist()
|
||||||
|
assert "video.webm" not in names
|
||||||
|
assert "walk.json" in names
|
||||||
|
assert "README.txt" in names
|
||||||
@@ -159,3 +159,13 @@ def test_all_regulation_rules_point_to_valid_use_cases():
|
|||||||
for _needle, uc in reg._REGULATION_RULES:
|
for _needle, uc in reg._REGULATION_RULES:
|
||||||
assert uc in reg.REGISTRY, uc
|
assert uc in reg.REGISTRY, uc
|
||||||
assert reg.REGISTRY[uc].enabled
|
assert reg.REGISTRY[uc].enabled
|
||||||
|
|
||||||
|
|
||||||
|
def test_new_use_cases_eidas_geschaeftsgeheimnis():
|
||||||
|
# Korpus-Luecken 2026-06-17: eIDAS (VO 910/2014) + GeschGehG als eigene
|
||||||
|
# Use Cases ingestiert + klassifiziert.
|
||||||
|
assert reg.is_valid_use_case("eidas")
|
||||||
|
assert reg.is_valid_use_case("geschaeftsgeheimnis")
|
||||||
|
assert reg.use_case_for_regulation("eIDAS-Verordnung (EU) Nr. 910/2014") == "eidas"
|
||||||
|
assert reg.use_case_for_regulation(
|
||||||
|
"Gesetz zum Schutz von Geschäftsgeheimnissen") == "geschaeftsgeheimnis"
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
# Benchmark-Archiv & RC-Freeze — `v1` (2026-06-19)
|
||||||
|
|
||||||
|
> **Zweck:** Reproduzierbarkeits-Record der Doc-Check-Kalibrierung (DSE / Cookie / Impressum).
|
||||||
|
> Diese Datei enthält **nur Metadaten + Hashes** — **kein** Drittanbieter-Dokumenttext (Urheber-/Datenbankrecht).
|
||||||
|
> Die vollständigen Artefakte (Korpora, GTs, Ergebnisse, Skripte) liegen im **internen Audit-Archiv**, getrennt von Repo / RAG / Produkt.
|
||||||
|
|
||||||
|
## 1. Daten-Klassen (Retention-Entscheidung 2026-06-19)
|
||||||
|
|
||||||
|
Drei Risikoklassen, drei Regeln:
|
||||||
|
|
||||||
|
| Klasse | Regel |
|
||||||
|
|---|---|
|
||||||
|
| **RAG-Korpus** | Control ableiten → Dokument **verwerfen**. Keine Volltexte als Wissensbasis. |
|
||||||
|
| **Kundendaten (Prod)** | Speichern: Finding · Evidence · Hash · Version · URL · Zeitpunkt. **Keine** Dauer-Volltextkopie. Datensparsamkeit. |
|
||||||
|
| **Benchmark/Validierung** | **Versioniert behalten** — sonst sind Messungen nicht reproduzierbar. Intern, off-RAG, off-Produkt. Wie ein Test-/Audit-Archiv, nicht wie eine Wissensbasis. |
|
||||||
|
|
||||||
|
Begründung: Das Risiko eines kleinen internen Benchmark-Archivs (öffentlich zugängliche Dokumente) ist geringer als das Risiko, die gesamte Validierung später nicht mehr belegen zu können.
|
||||||
|
|
||||||
|
## 2. Release-Candidates (eingefroren)
|
||||||
|
|
||||||
|
| RC | doc_type | Opus-GT (Archiv) | Testfirmen | FP / FN | Status |
|
||||||
|
|---|---|---|---|---|---|
|
||||||
|
| **DSE_RC_v1** | dse | `gt_opus_dse.json` (5 orig) + `gt_opus_dse_fresh.json` (3 frisch) | 8 (db, otto, ikea, ob, teamviewer + GT-Roster) | FP 11 %→**6 %**, FN ~7 %; frisch FP 7 % / FN 5 % | Release-Candidate |
|
||||||
|
| **COOKIE_RC_v1** | cookie | `gt_opus_cookie_v2.json` (Mehrfach-Sampling offen) | 7 (db, ikea, lieferando, mediamarkt, ob, tchibo, teamviewer) | Prec 0,81→**0,95**, Rec 0,26→**0,44**, verpasste Lücken→**0 %** | Wave-1 (GT-Rauschen-Vorbehalt) |
|
||||||
|
| **IMPRESSUM_RC_v1** | impressum | `gt_opus_impressum.json` | 9 (db, ikea, lieferando, mediamarkt, ob, otto, tchibo, teamviewer, zalando) | Text-Check FP **0 %** / FN **2 %** (81 anwendbar, 9 Faktenfeld-Controls) | Release-Candidate |
|
||||||
|
|
||||||
|
Detail-Methodik + Fehlerkarte: [`platform_validation_v1.md`](platform_validation_v1.md). Per-Modul-Zahlen: Gedächtnis `project_engine_quality.md`.
|
||||||
|
|
||||||
|
## 3. Archiv-Ort + Index
|
||||||
|
|
||||||
|
```
|
||||||
|
macmini:~/bp-benchmark-archive/v1_2026-06-19/
|
||||||
|
├── MANIFEST.json # 54 Dateien, je SHA256 + Bytes (autoritativ)
|
||||||
|
├── gt_<firma>_<doctype>.txt # Korpora (Drittanbieter-Volltext — NUR hier)
|
||||||
|
├── gt_opus_*.json # Opus-Oracle-GTs
|
||||||
|
├── *_candidates*.json, *_resid.json, *_falsefindings*.json
|
||||||
|
├── *_criteria_changelog.json / *_criteria_backup.json
|
||||||
|
└── scripts/ # 46 Mess-Skripte (cc_*.py) = "wie gemessen"
|
||||||
|
```
|
||||||
|
|
||||||
|
**Versionsdefinierende Hashes** (12-stellig gekürzt; voll in `MANIFEST.json`):
|
||||||
|
|
||||||
|
| Artefakt | sha256… | Rolle |
|
||||||
|
|---|---|---|
|
||||||
|
| `gt_opus_dse.json` | `c5c8975afa42` | DSE-GT (orig) |
|
||||||
|
| `gt_opus_dse_fresh.json` | `f3940da2e420` | DSE-GT (Anti-Overfit) |
|
||||||
|
| `gt_opus_cookie_v2.json` | `fcb61dc9b332` | Cookie-GT |
|
||||||
|
| `gt_opus_impressum.json` | `3e0f2f8d5f5f` | Impressum-GT |
|
||||||
|
| `dse_criteria_changelog.json` | `d8d461527f5b` | DSE-Kriterien-Diff |
|
||||||
|
| `cookie_criteria_changelog.json` | `9d29d7b515a5` | Cookie-Kriterien-Diff |
|
||||||
|
| `impressum_fp_by_cause.json` | `9477f98c0577` | Impressum SCOPE/JUDGE-Split |
|
||||||
|
|
||||||
|
## 4. Reproduktion
|
||||||
|
|
||||||
|
1. Archiv = Grundwahrheit (Korpus-Hash belegt die damalige Dokumentversion; ändert die Firma ihr Dokument → neuer Hash, alte Messung bleibt über das Archiv belegbar).
|
||||||
|
2. Mess-Skripte unter `scripts/` gegen die GTs laufen lassen (Pattern: `docker exec -i bp-compliance-backend python3 - < scripts/cc_engine_*.py`).
|
||||||
|
3. OVH ist stochastisch → Zahlen ±Rauschen; RC-Werte sind Mittel über den dokumentierten Lauf.
|
||||||
|
|
||||||
|
## 5. Was NICHT passiert
|
||||||
|
|
||||||
|
- Korpus-Volltexte gehen **nicht** ins Repo, **nicht** in Qdrant/RAG, **nicht** ins Produkt.
|
||||||
|
- Das Archiv ist read-only Referenz; Kalibrierungs-Änderungen sind über die Changelog-Artefakte reversibel.
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
# Ground Truth: Conrady Gruppe
|
||||||
|
|
||||||
|
**URL:** https://conradygruppe.com
|
||||||
|
**Typ:** Mittelstand / B2B Industrie (CookieYes-CMP)
|
||||||
|
**Datum:** 2026-05-20
|
||||||
|
**Tester:** Benjamin (manuell verifiziert)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Business Profile (erwartet)
|
||||||
|
|
||||||
|
| Feld | Erwarteter Wert |
|
||||||
|
|------|----------------|
|
||||||
|
| business_type | b2b |
|
||||||
|
| industry | manufacturing / services |
|
||||||
|
| has_online_shop | false |
|
||||||
|
| no_direct_sales | true |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Dokumente
|
||||||
|
|
||||||
|
| Dokumenttyp | Vorhanden | URL / Hinweis |
|
||||||
|
|-------------|-----------|---------------|
|
||||||
|
| DSE | Ja | https://conradygruppe.com/datenschutz |
|
||||||
|
| Impressum | Ja | https://conradygruppe.com/impressum |
|
||||||
|
| **Cookie-Richtlinie** | **NEIN** | nicht erreichbar — separate Seite fehlt |
|
||||||
|
| AGB | (offen) | B2B, vermutlich individuell |
|
||||||
|
| Widerruf | In DSE | — |
|
||||||
|
| DSB-Kontakt | In DSE | E-Mail-Adresse benannt |
|
||||||
|
| Social Media DSE | (zu pruefen) | siehe SoMe-Findings |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Erwartete Findings — Impressum (Art. 5 TMG)
|
||||||
|
|
||||||
|
| Check | Erwartet | Begruendung |
|
||||||
|
|-------|----------|-------------|
|
||||||
|
| Handelsregister/Registernummer | **FEHLT** | §5(1) Nr.4 TMG — Pflichtangabe |
|
||||||
|
| **USt-IdNr.** | **FEHLT** | §5(1) Nr.6 TMG — wenn vorhanden Pflicht. Steuernummer ist KEIN Ersatz |
|
||||||
|
| Verantwortlicher | OK | Name + Anschrift vorhanden |
|
||||||
|
| Vertretungsberechtigter | (zu pruefen) | bei juristischer Person Pflicht |
|
||||||
|
| Kontakt (E-Mail/Tel) | (zu pruefen) | §5(1) Nr.2 TMG |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cookie-Banner (CookieYes)
|
||||||
|
|
||||||
|
**3 Buttons im Banner:**
|
||||||
|
1. **"Speichern"** — funktional ein Reject mit aktuellen Einstellungen
|
||||||
|
2. **"Alle akzeptieren"**
|
||||||
|
3. **"Nur essenzielle Cookies akzeptieren"** — funktional der Ablehnen-Button
|
||||||
|
|
||||||
|
| Check | Erwartet | Anmerkung |
|
||||||
|
|-------|----------|-----------|
|
||||||
|
| Banner detected (CookieYes) | OK | Bot erkennt es als CookieYes |
|
||||||
|
| Ablehnen-Mechanismus vorhanden | OK (implicit via "Nur essenzielle") | aber: |
|
||||||
|
| Explizites "Ablehnen"-Label | **FEHLT** | "Nur essenzielle" + "Speichern" — kein "Ablehnen" |
|
||||||
|
| **"Speichern" als Button-Text fragwürdig** | **MEDIUM-Finding** | Speichert was? Mehrdeutig fuer Nutzer |
|
||||||
|
| Cookie-Richtlinie aus Banner verlinkt | **NEIN** | separate Seite fehlt |
|
||||||
|
| Re-Access (Floating-Icon o.ae.) | (zu pruefen) | CookieYes default hat Floating-Icon |
|
||||||
|
|
||||||
|
**Sprachlich-Fragwürdig:** Der primäre Action-Button heißt "Speichern" — semantisch unklar (speichert "essenziell"? speichert "alle"?). DSK-OH 2024 fordert eindeutige Beschriftung der Consent-Optionen.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Cookie-Richtlinie (Sonderfall)
|
||||||
|
|
||||||
|
**Status:** **NICHT VORHANDEN** als separates Dokument.
|
||||||
|
|
||||||
|
→ HIGH-Finding: "Cookie-Richtlinie nicht auffindbar".
|
||||||
|
|
||||||
|
→ Cookie-Auflistung muss laut DSK-OH Telemedien 2024 pro Cookie enthalten: Name, Anbieter, Zweck, Speicherdauer, Drittlandtransfer.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Datenschutzerklärung
|
||||||
|
|
||||||
|
**Widerruf:** In DSE benannt (Standard-Text "Widerruf jederzeit per E-Mail an…").
|
||||||
|
**DSB:** In DSE als E-Mail-Adresse benannt (kein separater Name/Bestellung).
|
||||||
|
|
||||||
|
| Check | Erwartet | Anmerkung |
|
||||||
|
|-------|----------|-----------|
|
||||||
|
| Verantwortlicher | OK | — |
|
||||||
|
| DSB | OK (E-Mail) | Name optional, E-Mail ausreichend nach Art. 13(1)(b) |
|
||||||
|
| Zwecke | (zu pruefen) | — |
|
||||||
|
| Rechtsgrundlage | (zu pruefen) | — |
|
||||||
|
| Empfaengerkategorien | **zu pruefen** | wer ist als Empfaenger genannt? Vergleich mit Cookie-Banner-Vendor-Liste |
|
||||||
|
| Speicherdauer | (zu pruefen) | — |
|
||||||
|
| Betroffenenrechte | (zu pruefen) | Art. 15-21 vollstaendig? |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Social Media Verlinkung (zu pruefen)
|
||||||
|
|
||||||
|
| Plattform | Verlinkt? | DSGVO-konform (Shariff/2-Klick)? |
|
||||||
|
|-----------|-----------|-----------------------------------|
|
||||||
|
| LinkedIn | (zu pruefen) | — |
|
||||||
|
| Facebook | (zu pruefen) | — |
|
||||||
|
| Instagram | (zu pruefen) | — |
|
||||||
|
| X (Twitter) | (zu pruefen) | — |
|
||||||
|
| YouTube | (zu pruefen) | — |
|
||||||
|
|
||||||
|
**Pruefungspflicht:** SoMe-Buttons müssen DSGVO-konform eingebunden sein. Direkte iframes/Pixel zu Facebook etc. setzen vor Consent Tracking → Verstoss §25 TDDDG.
|
||||||
|
|
||||||
|
Lösungen: Shariff/2-Klick/Self-hosted-Icons.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Konsistenz-Check (NEUE Pruefung — P33)
|
||||||
|
|
||||||
|
**3-Spalten-Vergleich:**
|
||||||
|
|
||||||
|
| Verarbeiter | in DSE | in Cookie-Richtlinie | im Cookie-Banner |
|
||||||
|
|-------------|--------|---------------------|------------------|
|
||||||
|
| TeleData GmbH | (zu pruefen) | n/a (Cookie-Richtlinie fehlt) | (zu pruefen) |
|
||||||
|
| CookieYes | (zu pruefen) | n/a | Ja (CMP-Anbieter) |
|
||||||
|
| ... | ... | ... | ... |
|
||||||
|
|
||||||
|
**Erwartung:** Inkonsistenzen wahrscheinlich, da Cookie-Richtlinie fehlt und DSE+Banner getrennt gepflegt werden.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Score-Erwartung
|
||||||
|
|
||||||
|
| Bereich | Erwartet | Kommentar |
|
||||||
|
|---------|----------|-----------|
|
||||||
|
| DSE | ~80% | Standardpflichten OK, Drittland-Empfänger ggf. ungenau |
|
||||||
|
| Impressum | ~60% | Handelsregister + USt-IdNr. fehlen |
|
||||||
|
| Cookie-Richtlinie | 0% | nicht vorhanden |
|
||||||
|
| Banner-Quality | ~80% | implicit Reject OK, aber "Speichern"-Label problematisch + Cookie-Richtlinie nicht verlinkt |
|
||||||
|
| **Gesamt** | **~70-75%** | mittelmäßig, Mittelstand-Standard |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Anlässe für neue Checks
|
||||||
|
|
||||||
|
1. **P33: 3-Spalten-Konsistenz-Check** (DSE vs Cookie-Richtlinie vs Banner-Vendors)
|
||||||
|
2. **P28b-Erweiterung: "Speichern" als problematisches Reject-Label** flaggen (mehrdeutig)
|
||||||
|
3. **P36: Social-Media-Einbindungs-Check** (Shariff/2-Klick/direkt?)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Offene Fragen an User
|
||||||
|
|
||||||
|
- USt-IdNr. — hat Conrady Gruppe als juristische Person eine? (vermutlich ja als Gruppe mit Auslandsumsatz)
|
||||||
|
- Cookie-Richtlinie tatsächlich gar nicht vorhanden, oder nur schwer zu finden (z.B. tief im Datenschutz-Dokument)?
|
||||||
@@ -0,0 +1,489 @@
|
|||||||
|
{
|
||||||
|
"site": "BMW AG",
|
||||||
|
"doc_type": "impressum",
|
||||||
|
"note": "GT=Haiku-Verdikt; v3=unsere deterministische Engine (Layer-0 Regex-Boost)",
|
||||||
|
"created": "2026-06-17T18:55:16.265861+00:00",
|
||||||
|
"haiku_pass": 24,
|
||||||
|
"v3_pass": 14,
|
||||||
|
"gate_dropped": 39,
|
||||||
|
"agreement_evaluated_pct": 92,
|
||||||
|
"controls": [
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A08",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Aktualisierte Informationen zu Online-Schnittstellen unverzüglich zugänglich machen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "TRD-658-A01",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz 3",
|
||||||
|
"title": "Unternehmeridentität auf Plattform erkennbar machen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Gesetzliche Berufsbezeichnung offenlegen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A02",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Anschrift des Anbieters leicht erkennbar verfügbarmachen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9175-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 6 Absatz 1 Nr. 1-2",
|
||||||
|
"title": "Kommerzielle Kommunikationen deutlich kennzeichnen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "AUTH-4120-A02",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Digitale-Dienste-Gesetz Bezug zu Artikel 11 Absatz 4",
|
||||||
|
"title": "Nutzerinformationen regelmäßig überprüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9158-A09",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Zuständigkeitsbereiche mehrerer Verantwortlicher dokumentieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9158-A10",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Identität und Aufenthalt der Verantwortlichen überprüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A02",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Informationen zu kommerziellen Angeboten leicht zugänglich bereitstellen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Staat oder Region der Berufsbezeichnungs-Verleihung angeben",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A05",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Bezeichnung geltender berufsrechtlicher Regelungen bereitstellen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9170-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz 1",
|
||||||
|
"title": "Kommerzieller Charakter in Nachrichten erkennbar machen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9175-A01",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 6 Absatz 1 Nr. 1-2",
|
||||||
|
"title": "Auftraggeber kommerzieller Kommunikation eindeutig identifizierbar machen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A01",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Aktualität und Korrektheit von Anbieter-Kontaktdaten verifizieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A01",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Verantwortlichen für journalistisch-redaktionelle Angebote benennen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A02",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Vollständigen Namen des Verantwortlichen aufführen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9173-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Digitale-Dienste-Gesetz Bezug zu Artikel 12 Absatz 6, Artikel 13 Absatz 4, Artikel 14 Absatz 3",
|
||||||
|
"title": "Angaben gemäß Artikel 13 Abs. 4 aktuell halten",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A07",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Impressum oder Kontaktseite auf Webseite oder App lokalisieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A04",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Verantwortliche zusätzlich zu DGA-Angaben benennen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A06",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Kommerzielle Angebote eindeutig als solche kennzeichnen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3887-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 20 Absatz 1",
|
||||||
|
"title": "Fortbestand der Ansprechpartnerfunktion bei Fremdbearbeitung mitteilen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9170-A01",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz 1",
|
||||||
|
"title": "Absender kommerzieller Nachrichten eindeutig und unverschleiert offenlegen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "LOG-2095-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 9 Abs. 1",
|
||||||
|
"title": "Identifikationskriterien nach § 2 DDG in Anbieterlisten dokumentieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9170-A05",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz 1",
|
||||||
|
"title": "Versteckte Kommunikation von Absender oder kommerziellem Zweck verhindern",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9170-A08",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz 1",
|
||||||
|
"title": "Erkennbarkeit des kommerziellen Charakters auf den ersten Blick prüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A03",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Anschrift des Verantwortlichen angeben",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9175-A02",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 6 Absatz 1 Nr. 1-2",
|
||||||
|
"title": "Kennzeichnung kommerzieller Kommunikation gut erkennbar anbringen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9175-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 6 Absatz 1 Nr. 1-2",
|
||||||
|
"title": "Kennzeichnungsanforderungen auf alle kommerziellen Kommunikationen anwenden",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A03",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Name und Anschrift des Vertretungsberechtigten verfügbarmachen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A04",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Anbieter-Kontaktdaten an prominenter Stelle positionieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A05",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Anbieter-Kontaktdaten auf allen relevanten Plattformen und Kanälen verfügbar machen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A06",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Name des Anbieters leicht erkennbar und ständig verfügbar machen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A08",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Deutliche Erkennbarkeit von Name und Anschrift des Anbieters verifizieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A09",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Name und Anschrift des Vertretungsberechtigten bei juristischen Personen überprüfen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "GOV-3881-A10",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 1",
|
||||||
|
"title": "Auffindbarkeit der Kontaktdaten in maximal 2 Klicks testen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A02",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Vorhandensein aller vorgeschriebenen Informationselemente kontrollieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Aktualität der Schnittstelleninformationen durch Vergleich mit technischen Dokumentationen überprüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Zugangsbarkeit und Verständlichkeit der Schnittstelleninformationen prüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A05",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Zeitliche Verzögerung zwischen Änderungen und Informationsaktualisierung kontrollieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A05",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Verantwortlicher im Impressum oder auf Kontaktseite benennen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A06",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Name und Anschrift des benannten Verantwortlichen verifizieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A07",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Zusätzliche Angaben neben DGG-Informationen des Verantwortlichen überprüfen",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4123-A08",
|
||||||
|
"regulation": "MStV",
|
||||||
|
"article": "§ 18 Absatz 2",
|
||||||
|
"title": "Auffindbarkeit und Aktualität der Verantwortlichen-Informationen verifizieren",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A07",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Zugangsweg zu berufsrechtlichen Regelungen angeben",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A08",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Informationen leicht erkennbar gestalten",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A09",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Informationen unmittelbar erreichbar bereitstellen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9174-A10",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 5 Absatz 1, Nr. 2 (b, c)",
|
||||||
|
"title": "Informationen ständig verfügbar halten",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "AUTH-4120-A03",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Digitale-Dienste-Gesetz Bezug zu Artikel 11 Absatz 4",
|
||||||
|
"title": "Überprüfungen von Nutzerinformationen dokumentieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "AUTH-4120-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Digitale-Dienste-Gesetz Bezug zu Artikel 11 Absatz 4",
|
||||||
|
"title": "Veraltete oder fehlerhafte Nutzerinformationen zeitnah aktualisieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "AUTH-4120-A05",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Digitale-Dienste-Gesetz Bezug zu Artikel 11 Absatz 4",
|
||||||
|
"title": "Aktualität von Nutzerinformationen nachweisbar gewährleisten",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "COMP-4124-A04",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 25 Abs. 1",
|
||||||
|
"title": "Informationen vollständig, wahrheitsgemäß und verständlich bereitstellen",
|
||||||
|
"haiku_erfuellt": true,
|
||||||
|
"v3_passed": true,
|
||||||
|
"v3_status": "evaluated"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A06",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Informationen zu Online-Schnittstellen-Konzeption vollständig dokumentieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"control_id": "SEC-9172-A07",
|
||||||
|
"regulation": "DDG",
|
||||||
|
"article": "§ 33 Absatz mit Verweis auf Artikel 32 Absatz 2",
|
||||||
|
"title": "Informationen zu Online-Schnittstellen in vorgeschriebener Weise präsentieren",
|
||||||
|
"haiku_erfuellt": false,
|
||||||
|
"v3_passed": null,
|
||||||
|
"v3_status": "gate_dropped"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user