companies: Kurzfelder des Profils ohne Links, Adressen und Spam (NoPromotionalText)

Firmenname, Adresse und Pressekontakt erscheinen oeffentlich bzw. in
Mails, wurden aber nicht geprueft — nur die Beschreibung lief durch die
Rot-Ebene. Neue deterministische Regel: keine Links, keine E-Mail-
Adressen, keine Zeichen-/Emoji-Ketten, kein Blacklist-Treffer; nackte
Domains ohne Pfad bleiben erlaubt (Marke). Adresse zusaetzlich durch die
Rot-Ebene wie die Beschreibung.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-17 07:55:07 +00:00
parent 4fd1db7825
commit 87ca9082a9
5 changed files with 246 additions and 7 deletions

View file

@ -1471,3 +1471,38 @@ Tests: `ManualReviewGateTest` (+1 → 6, Mail beim Block, Textvarianten,
Opt-out), `BladePhpBlockGuardTest` (1).
**Damit ist Block 1d komplett, ohne offene Punkte.**
## Nachtrag 17.09.2026 — Profil-Kurzfelder sind keine Werbefläche
**Anlass:** Frage des Nutzers nach der Live-Sichtung von 1d, ob beim
Speichern des Profils auf Spam geprüft wird.
**Stand vorher:** Die Beschreibung („Über das Unternehmen") lief seit 1b.3
durch die Rot-Ebene (`CompanyProfileCheck`, KI mit Blacklist-Fallback).
Nicht geprüft waren die Kurzfelder, die ebenfalls öffentlich bzw. in Mails
erscheinen: Firmenname, Adresse, Pressekontakt (Name, Zuständigkeit).
**Umsetzung:** Regel `App\Rules\NoPromotionalText` — deterministisch,
ohne KI: keine Links (Schema, `www.`, nackte Domain mit Pfad), keine
E-Mail-Adressen, keine Zeichenketten (`!!!`, Emoji-Reihen), kein
Blacklist-Treffer; jeweils mit eigener Fehlermeldung am Feld. Nackte
Domains ohne Pfad („meinshop.de GmbH") bleiben bewusst erlaubt — Marke,
nicht Link. Angewendet in Firmen ▸ Stammdaten (Name, Adresse), Firma
anlegen (Name, Adresse) und Pressekontakt (Vorname, Nachname,
Zuständigkeit). Die Adresse läuft zusätzlich wie die Beschreibung durch die
Rot-Ebene, nur bei Änderung.
**Befund im Bestand (Dev-DB = Live-Kopie):**
- 4.390 aktive Firmen tragen bbcode-/HTML-Linkspam in der Adresse
(Moncler, Chanel-Outlet …), 4.381 davon mit `website = "180"` — ein
Legacy-Importfehler; **keine davon hat je eine Meldung veröffentlicht**,
und ohne veröffentlichte Meldung gibt es keine Newsroom-Seite
(`NewsroomDetailPageData`). Nicht öffentlich, aber Datenmüll.
- 38 öffentliche Firmen (mit Meldungen, jüngste 09.09.2026) haben eine URL
im **Namen** („Steinreinigungsuntermehmen - https://www.bgn.at/…"),
überwiegend über die API eingeliefert. Diese Namen stehen auf der
Newsroom-Seite und in der Übersicht.
- Kontakte: 0 Treffer. Beschreibungen: 0 Treffer.
Tests: `NoPromotionalTextTest` (20 inkl. Datensätze). Entscheidung zu
API-Eingang und Bestandsbereinigung offen (siehe Frage an den Nutzer).