db3558872e
Modernisiert die öffentliche Oberfläche mit Inter, Dark Mode und Live-Suche, ergänzt KI-gestützte Entwürfe im Admin mit Nachweis-Uploads und dokumentiert Daphne/Nginx für den Serverbetrieb. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
4.3 KiB
Python
53 lines
4.3 KiB
Python
# Generated by Django 5.2.15 on 2026-07-07 11:04
|
|
|
|
import django.core.validators
|
|
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('claims', '0002_evidencefile'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='ClaimDraft',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('status', models.CharField(choices=[('processing', 'Wird verarbeitet'), ('review', 'Zur Prüfung'), ('published', 'Veröffentlicht'), ('failed', 'Fehlgeschlagen'), ('rejected', 'Abgelehnt')], default='processing', max_length=20, verbose_name='Status')),
|
|
('article_url', models.URLField(blank=True, max_length=500, verbose_name='Artikel-URL')),
|
|
('user_notes', models.TextField(blank=True, verbose_name='Eingabe / Beschreibung')),
|
|
('uploaded_file', models.FileField(blank=True, help_text='Optional: Bild oder PDF als Kontext', upload_to='drafts/uploads/%Y/%m/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['jpg', 'jpeg', 'png', 'gif', 'webp', 'pdf'])], verbose_name='Hochgeladene Datei')),
|
|
('article_text', models.TextField(blank=True, verbose_name='Extrahierter Artikeltext')),
|
|
('category_slug', models.SlugField(blank=True, help_text='Slug einer vorhandenen Kategorie, falls passend', max_length=220, verbose_name='Bestehende Kategorie (Slug)')),
|
|
('new_category_name', models.CharField(blank=True, max_length=200, verbose_name='Neue Kategorie')),
|
|
('new_category_description', models.TextField(blank=True, verbose_name='Beschreibung neue Kategorie')),
|
|
('new_category_icon', models.CharField(blank=True, help_text='Bootstrap-Icon-Klasse, z. B. bi-thermometer-half', max_length=50, verbose_name='Icon neue Kategorie')),
|
|
('title', models.CharField(blank=True, max_length=300, verbose_name='Behauptung')),
|
|
('claim_status', models.CharField(blank=True, choices=[('falsch', 'Falsch'), ('irrefuehrend', 'Irreführend'), ('teilweise_richtig', 'Teilweise richtig'), ('unbelegt', 'Unbelegt'), ('wissenschaftlicher_konsens', 'Wissenschaftlicher Konsens'), ('offene_frage', 'Offene Frage')], max_length=40, verbose_name='Einordnung')),
|
|
('short_answer', models.TextField(blank=True, verbose_name='Kurzantwort')),
|
|
('detailed_explanation', models.TextField(blank=True, verbose_name='Ausführliche Erklärung')),
|
|
('evidence_level', models.CharField(blank=True, choices=[('sehr_stark', 'Sehr stark'), ('stark', 'Stark'), ('mittel', 'Mittel'), ('schwach', 'Schwach')], max_length=20, verbose_name='Evidenzlevel')),
|
|
('tags', models.JSONField(blank=True, default=list, verbose_name='Schlagwörter')),
|
|
('sources', models.JSONField(blank=True, default=list, verbose_name='Quellen')),
|
|
('counter_arguments', models.JSONField(blank=True, default=list, verbose_name='Gegenargumente')),
|
|
('conversation', models.JSONField(blank=True, default=list, verbose_name='Konversation')),
|
|
('ai_raw_response', models.JSONField(blank=True, null=True, verbose_name='KI-Rohantwort')),
|
|
('error_message', models.TextField(blank=True, verbose_name='Fehlermeldung')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Erstellt am')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Aktualisiert am')),
|
|
('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='claim_drafts', to=settings.AUTH_USER_MODEL, verbose_name='Erstellt von')),
|
|
('published_claim', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='origin_drafts', to='claims.claim', verbose_name='Veröffentlichte Behauptung')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Fakten-Entwurf',
|
|
'verbose_name_plural': 'Fakten-Entwürfe',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
]
|