companies: Aufrufe als Veröffentlichungsnachweis im Altbestand werten

Das Altsystem hat 2009–2018 rund 126 000 Meldungen auf `rejected` gesetzt,
83 000 davon mit Aufrufen — die waren online und sind pauschal offline
genommen worden. Wer nur `status = published` zählt, stellt pr4you, Blödorn
und Crossover Point mit Hunderten Meldungen neben yahoo@yahoo.com.

Eine Firma gilt jetzt als veröffentlicht, wenn sie eine Meldung mit
`published` ODER `hits > 0` hat. Nie veröffentlicht: 23 → 7 Adressen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-09-11 10:20:57 +00:00
parent e2f7cf1624
commit 00af8b1d8a
3 changed files with 93 additions and 3 deletions

View file

@ -649,3 +649,55 @@ dieselbe Logik. 14 427 Adressen (75 %) sind zusammenführbar; hinter ihnen
stehen die 17 945 Firmen aus 1a.1. Der scharfe Lauf am selben Tag schrieb
dieselben 19 167 Zeilen nach `company_email_groups` — die Tabelle ist auf Live
gefüllt, 1a.3 kann darauf filtern.
### Korrektur: „veröffentlicht" heißt „jemals veröffentlicht"
Die 23 Nie-veröffentlicht-Adressen von Live hatten **alle** exakt null Firmen
mit Meldung — darunter pr4you (65 Firmen), Blödorn PR (35), Crossover Point
(31), GCE (48). Sieben Agenturen, die nie etwas veröffentlicht haben sollen,
sind kein Befund, sondern ein Messfehler.
Nachgeprüft in der Dev-DB (Kopie des Bestands):
| Adresse | Meldungen | Status | davon mit Aufrufen | Zeitraum |
|---|---:|---|---:|---|
| presse@pr4you.de | 199 | rejected | 199 | 2008–2011 |
| h.ballwanz@pr4you.de | 473 | rejected | 473 | 2006–2011 |
| info@bloedorn-pr.de | 194 | rejected | 193 | 2006–2011 |
| info@gce-agency.com | 328 | rejected | 328 | 2009–2011 |
| press@crossoverpoint.de | 149 | rejected | 148 | 2009–2011 |
| yahoo@yahoo.com | 5 176 | rejected | **0** | 2015–2019 |
| hcgdietinsight4@gmail.com | 73 | rejected | **0** | 2011–2012 |
**Ursache:** Das Altsystem hat 2009–2018 rund 126 000 Meldungen auf `rejected`
gesetzt (gegenüber 31 000 `published`); 83 000 davon tragen Aufrufe. Eine
abgelehnte Meldung wird nie aufgerufen — die waren online und sind später
pauschal offline genommen worden. `rejected` im Altbestand bedeutet
„offline", nicht „redaktionell abgelehnt". Der Importer hat den Status
korrekt übernommen; nur die Deutung war falsch.
**Fix** in `CompanyAddressClassifier::classifyAll()`: eine Firma gilt als
veröffentlicht, wenn sie eine Meldung mit `status = published` **oder**
`hits > 0` hat. Zwei Tests halten beide Seiten fest (Agentur mit alten
Offline-Meldungen → Sammeladresse; abgelehnte Meldungen ohne einen Aufruf →
nie veröffentlicht). Laufzeit unverändert (2,6 s).
**Wirkung** (Dev-DB, Stand etwas älter als Live): 23 → **7** nie
veröffentlicht, 16 wandern zur Sammeladresse. Die übrigen Klassen sind
unberührt — das Veröffentlichungssignal entscheidet nur zwischen „nie
veröffentlicht" und Sammeladresse. Die Sieben, die bleiben:
`yahoo@yahoo.com`, `pr@getarticlesdone.com`, `hcgdietinsight4@gmail.com`,
`zhangmh@itecheasy.com`, `andrewkarvert112@gmail.com`,
`kontakt@pr-vertretung.de` (159 Firmen, 1 mit Aufruf), `bukmaier@prdienst.de`
(28 Firmen, keine einzige Meldung). Letztere ist die einzige mit
Agentur-Namen — sie kann bei Bedarf per `manual_classification` umgestellt
werden.
**Nebenbefund für spätere Auswertungen:** Jede Statistik, die
`status = rejected` über den Altbestand als Ablehnung liest, misst falsch.
Die Ablehnungsquote aus 0.2 ist nicht betroffen (sie läuft über die
Statuslogs des neuen Systems).
**Deploy:** Nach dem Deploy `companies:classify-addresses` erneut laufen
lassen — die 16 Adressen werden dabei umklassifiziert, Handentscheidungen
bleiben.