presseportale/config/scoring.php
Kevin Adametz 5f7fbd0c65 web: Hilfeseite "Was eine gute Pressemitteilung ausmacht", Hinweis in der Ablehnungsmail (Roadmap 1d.1, 1d.2, 1d.6)
Ohne kommerziellen Anteil (E6): Anlass, Aufbau, Sprache, Pruefablauf mit
konfigurierbarer Versuchszahl, die sieben Qualitaetsdimensionen offen,
Gewichtung nicht (Offenlegungsgrenze), Pressebilder, Partner als BALD.
DE und EN, Sitemap, Hilfe-Center. Die Ablehnungsmail verlinkt die Seite
auf dem Portal der Meldung mit Herkunft mail_reject.

Config: yellow_to_manual_queue Vorgabe false (Entscheidung 16.09.2026),
max_automatic_attempts = 3 (E3).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 13:59:23 +00:00

80 lines
3.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
|--------------------------------------------------------------------------
| KI-Prüfung & Scoring
|--------------------------------------------------------------------------
|
| Zentrale, ohne Code-Änderung kalibrierbare Schwellen und Verhaltens-Flags
| für die automatisierte Prüfung von Pressemitteilungen (Konzept §15).
|
| Phase 2 legt die Konfiguration an; die Werte werden ab Phase 3
| (Klassifikation) bzw. Phase 4 (Routing) wirksam.
|
*/
return [
/*
|--------------------------------------------------------------------------
| Klassifikation (Red Flag, §15.1)
|--------------------------------------------------------------------------
|
| Aktiver Anbieter und Modell für den Klassifikations-Gate. Die konkreten
| Treiber (anthropic|gemini|openai|deterministic) folgen in Phase 3.
|
*/
'classification' => [
// Aktiver Treiber: openai|deterministic (Anthropic/Gemini folgen).
// Fällt der Anbieter aus (kein Key, Timeout, Fehler), greift im Job
// automatisch der deterministische Treiber.
'provider' => env('CLASSIFICATION_PROVIDER', 'openai'),
// Optional ein abweichendes Modell; leer => config('services.openai.model').
'model' => env('CLASSIFICATION_MODEL'),
// Sekunden, bevor auf den deterministischen Fallback-Treiber
// ausgewichen wird (Timeout/Rate-Limit/Ausfall).
'timeout' => (int) env('CLASSIFICATION_TIMEOUT', 15),
// Verzögerung in Minuten für „grün" eingestufte PMs als
// Sicherheitsfenster vor der automatischen Veröffentlichung
// (Konzept-Option, 0 = sofort).
'green_delay_minutes' => (int) env('CLASSIFICATION_GREEN_DELAY', 0),
// Ob „gelb" eingestufte PMs in die manuelle Admin-Queue gehen statt
// automatisch online (Entscheidung 16.09.2026: aus — Gelb geht durch
// und wird im Admin sichtbar markiert; der Schalter bleibt für den
// Fall, dass das einmal gebraucht wird).
'yellow_to_manual_queue' => (bool) env('CLASSIFICATION_YELLOW_MANUAL', false),
// E3 (entschieden 16.09.2026): So oft läuft die automatische Prüfung je
// Meldung. Ist der Text danach weiterhin Rot, geht die Meldung geblockt
// in die Admin-Queue; nach der menschlichen Entscheidung ist die
// Automatik für diese Meldung aus.
'max_automatic_attempts' => (int) env('CLASSIFICATION_MAX_ATTEMPTS', 3),
],
/*
|--------------------------------------------------------------------------
| Content-Score (Qualitätsbewertung, §15.2 / Update 2)
|--------------------------------------------------------------------------
|
| Anbieter/Modell für die Score-Berechnung und Schwellen für die Ableitung
| der Stufe aus dem 0–100-Score (Standard < 60 ≤ Geprüft < 80 ≤ Hochwertig).
| Schwellen werden laut Konzept nach 100–200 echten PMs kalibriert.
|
*/
'content_score' => [
'provider' => env('CONTENT_SCORE_PROVIDER', 'openai'),
'model' => env('CONTENT_SCORE_MODEL'),
'timeout' => (int) env('CONTENT_SCORE_TIMEOUT', 30),
'tiers' => [
'hochwertig' => (int) env('CONTENT_SCORE_HOCHWERTIG', 80),
'gepruft' => (int) env('CONTENT_SCORE_GEPRUEFT', 60),
// alles darunter => 'standard'
],
],
];