press-releases: begrenzter Pruefkreislauf mit Admin-Queue (Roadmap 1d.4, E3)
Automatische Pruefung je Meldung hoechstens max_automatic_attempts (3); das letzte Rot blockt statt abzulehnen: Meldung bleibt in review, Admin sieht sie unter "Pruefung noetig" mit allen KI-Begruendungen und entscheidet (Freischalten / Mit Kommentar zurueck). Danach ist die Automatik fuer diese Meldung aus - jede Freigabe geht direkt zum Menschen. Gelb: yellow_to_manual_queue wird jetzt ausgewertet (Vorgabe false). Kundenseite: "Zur Pruefung freigeben" mit Erklaerung der drei Schritte, Versuchszaehler an der Ablehnung, Hinweis auf menschliche Pruefung. Blade: inline @php(...) vor einem @php...@endphp-Block wird als Rohblock gelesen - vier Stellen auf Blockform umgestellt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5f7fbd0c65
commit
13716b9c06
17 changed files with 487 additions and 47 deletions
|
|
@ -0,0 +1,43 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
/**
|
||||
* Begrenzter Prüfkreislauf (Roadmap 1d, E3 entschieden 16.09.2026).
|
||||
*
|
||||
* `auto_check_attempts` zählt, wie oft die automatische Prüfung mit
|
||||
* Statuswirkung für diese Meldung gelaufen ist. `manual_review_required_at`
|
||||
* ist gesetzt, sobald die Automatik erschöpft ist: Die Meldung bleibt in
|
||||
* `review`, erscheint im Admin als „Prüfung nötig", und jede weitere Freigabe
|
||||
* des Autors geht ohne KI-Lauf direkt an einen Menschen.
|
||||
*
|
||||
* Kosten: `press_releases` hat keine Volltext-Indizes mehr, beide Spalten sind
|
||||
* `ALGORITHM=INSTANT`. hasColumn hält die Migration wiederholbar.
|
||||
*/
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('press_releases', function (Blueprint $table) {
|
||||
if (! Schema::hasColumn('press_releases', 'auto_check_attempts')) {
|
||||
$table->unsignedTinyInteger('auto_check_attempts')->default(0)->after('classified_at');
|
||||
}
|
||||
|
||||
if (! Schema::hasColumn('press_releases', 'manual_review_required_at')) {
|
||||
$table->timestamp('manual_review_required_at')->nullable()->after('auto_check_attempts');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('press_releases', function (Blueprint $table) {
|
||||
$table->dropColumn(array_filter([
|
||||
Schema::hasColumn('press_releases', 'auto_check_attempts') ? 'auto_check_attempts' : null,
|
||||
Schema::hasColumn('press_releases', 'manual_review_required_at') ? 'manual_review_required_at' : null,
|
||||
]));
|
||||
});
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue