initial commit

This commit is contained in:
Pirmin Hinderling (fedora)
2026-07-07 13:02:49 +02:00
commit 2c7fb7d030
30 changed files with 1666 additions and 0 deletions
@@ -0,0 +1,277 @@
from django.core.management.base import BaseCommand
from claims.models import Category, Claim, CounterArgument, Source, Tag
class Command(BaseCommand):
help = 'Lädt Beispieldaten für Faktenkompass (Kategorien, Behauptungen, Quellen).'
def handle(self, *args, **options):
if Category.objects.exists():
self.stdout.write(self.style.WARNING('Datenbank enthält bereits Daten. Abbruch.'))
return
self.stdout.write('Erstelle Beispieldaten…')
tags = {
'impfstoff': Tag.objects.create(name='Impfstoff'),
'co2': Tag.objects.create(name='CO₂'),
'erneuerbare': Tag.objects.create(name='Erneuerbare Energien'),
'migration': Tag.objects.create(name='Migration'),
'inflation': Tag.objects.create(name='Inflation'),
'forschung': Tag.objects.create(name='Forschung'),
'gesundheit': Tag.objects.create(name='Gesundheit'),
'klima': Tag.objects.create(name='Klima'),
}
categories = {
'corona': Category.objects.create(
name='Corona',
description='Behauptungen zu COVID-19, Impfungen, Maßnahmen und Langzeitfolgen mit Quellen aus Medizin und Epidemiologie.',
icon='bi-virus',
),
'klimawandel': Category.objects.create(
name='Klimawandel',
description='Fakten zur globalen Erwärmung, Treibhausgasen und Klimafolgen auf Basis wissenschaftlicher Erkenntnisse.',
icon='bi-thermometer-half',
),
'energie': Category.objects.create(
name='Energie',
description='Aussagen zu Stromerzeugung, erneuerbaren Energien, Atomkraft und Energiesicherheit.',
icon='bi-lightning-charge',
),
'migration': Category.objects.create(
name='Migration',
description='Überprüfbare Informationen zu Zuwanderung, Asyl, Integration und demografischen Entwicklungen.',
icon='bi-people',
),
'wirtschaft': Category.objects.create(
name='Wirtschaft',
description='Behauptungen zu Inflation, Staatsverschuldung, Arbeitsmarkt und wirtschaftlicher Entwicklung.',
icon='bi-graph-up',
),
'politik': Category.objects.create(
name='Politik',
description='Häufige politische Aussagen und deren empirische Überprüfung sachlich und quellenbasiert.',
icon='bi-bank',
),
'wissenschaft': Category.objects.create(
name='Wissenschaft',
description='Grundlagen wissenschaftlicher Methodik, Peer Review und typische Missverständnisse über Forschung.',
icon='bi-mortarboard',
),
}
self._create_corona_claims(categories['corona'], tags)
self._create_climate_claims(categories['klimawandel'], tags)
self._create_energy_claims(categories['energie'], tags)
self._create_migration_claims(categories['migration'], tags)
self._create_economy_claims(categories['wirtschaft'], tags)
self._create_politics_claims(categories['politik'], tags)
self._create_science_claims(categories['wissenschaft'], tags)
self.stdout.write(self.style.SUCCESS(
f'Fertig: {Category.objects.count()} Kategorien, '
f'{Claim.objects.count()} Behauptungen, '
f'{Source.objects.count()} Quellen.'
))
def _create_corona_claims(self, category, tags):
c1 = Claim.objects.create(
category=category,
title='mRNA-Impfstoffe verändern die menschliche DNA dauerhaft',
status=Claim.Status.FALSCH,
short_answer='mRNA-Impfstoffe gelangen nicht in den Zellkern und können die DNA nicht verändern. Die mRNA wird nach wenigen Tagen abgebaut.',
detailed_explanation=(
'Die mRNA in COVID-19-Impfstoffen dient als Bauanleitung für das Spike-Protein. '
'Sie bleibt im Zytoplasma und wird nicht in den Zellkern transportiert, wo die DNA liegt. '
'Integration in das Erbgut wäre ohne spezielle Hilfsmechanismen, die Impfstoffe nicht enthalten, praktisch nicht möglich.'
),
evidence_level=Claim.EvidenceLevel.SEHR_STARK,
)
c1.tags.add(tags['impfstoff'], tags['gesundheit'])
Source.objects.create(
claim=c1,
title='Zusammenfassung zur Sicherheit von COVID-19-Impfstoffen',
organization='Robert Koch-Institut (RKI)',
url='https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Impfen/Impfen_node.html',
description='Offizielle Informationen des RKI zu Wirkweise und Sicherheit der Impfstoffe.',
)
CounterArgument.objects.create(
claim=c1,
argument='Die mRNA ist künstlich und kann deshalb die Zelle dauerhaft verändern.',
response='Künstliche mRNA unterscheidet sich in der Wirkung nicht grundlegend von natürlicher mRNA im Körper. Beide werden abgebaut. Es gibt keinen Mechanismus, durch den Impf-mRNA in die DNA integriert wird.',
)
c2 = Claim.objects.create(
category=category,
title='COVID-19 ist nicht gefährlicher als eine normale Grippe',
status=Claim.Status.FALSCH,
short_answer='In den ersten Pandemiejahren war COVID-19 deutlich tödlicher als saisonale Influenza und führte weltweit zu Millionen überzähliger Todesfälle.',
detailed_explanation='Vergleiche mit der Grippe vereinfachen oft: COVID-19 verursachte höhere Belastungen für Intensivstationen und wies in vulnerablen Gruppen eine höhere Letalität auf.',
evidence_level=Claim.EvidenceLevel.STARK,
)
c2.tags.add(tags['gesundheit'])
Source.objects.create(
claim=c2,
title='COVID-19: Fallzahlen und Sterblichkeit in Deutschland',
organization='Statistisches Bundesamt (Destatis)',
url='https://www.destatis.de/DE/Themen/Gesellschaft-Umwelt/Gesundheit/Todesursachen/_inhalt.html',
description='Amtliche Sterblichkeitsstatistiken und Sonderanalysen zur Pandemie.',
)
Claim.objects.create(
category=category,
title='Masken im Alltag schützen nachweislich vor Ansteckung mit respirativen Viren',
status=Claim.Status.WISSENSCHAFTLICHER_KONSENS,
short_answer='Gut sitzende medizinische Masken und FFP2-Masken reduzieren nachweislich die Übertragung von Tröpfchen und Aerosolen, besonders in Innenräumen.',
detailed_explanation='Metaanalysen zeigen, dass Masken die Emission und Aufnahme infektiöser Partikel verringern. Der Schutz hängt von Maskentyp, Passform und Nutzung ab.',
evidence_level=Claim.EvidenceLevel.STARK,
)
def _create_climate_claims(self, category, tags):
c1 = Claim.objects.create(
category=category,
title='Der Klimawandel wird hauptsächlich durch natürliche Zyklen verursacht',
status=Claim.Status.FALSCH,
short_answer='Die aktuelle Erwärmung lässt sich nicht durch natürliche Zyklen allein erklären. Treibhausgasemissionen sind laut IPCC die dominierende Ursache.',
detailed_explanation='Klimamodelle mit nur natürlichen Faktoren reproduzieren die gemessene Temperaturanomalie nicht. Mit anthropogenen Emissionen stimmen Beobachtungen und Modelle überein.',
evidence_level=Claim.EvidenceLevel.SEHR_STARK,
)
c1.tags.add(tags['klima'], tags['co2'])
Source.objects.create(
claim=c1,
title='AR6 Synthesis Report: Climate Change 2023',
organization='Zwischenstaatlicher Ausschuss für Klimaänderungen (IPCC)',
url='https://www.ipcc.ch/report/ar6/syr/',
description='Aktueller Synthesebericht des Weltklimarats.',
)
CounterArgument.objects.create(
claim=c1,
argument='Früher gab es auch warme und kalte Perioden ohne Industrie.',
response='Natürliche Schwankungen sind bekannt, aber die Geschwindigkeit der aktuellen Erwärmung passt zu Treibhausgasanstieg, nicht zu dominanten natürlichen Zyklen.',
)
Claim.objects.create(
category=category,
title='Es gibt keinen wissenschaftlichen Konsens zum menschengemachten Klimawandel',
status=Claim.Status.FALSCH,
short_answer='Über 97 % der klimabezogenen Fachpublikationen stützen den Konsens, dass der Mensch die Hauptursache der aktuellen Erwärmung ist.',
detailed_explanation='Große wissenschaftliche Gesellschaften weltweit befürworten diese Einschätzung.',
evidence_level=Claim.EvidenceLevel.SEHR_STARK,
)
Claim.objects.create(
category=category,
title='Extremwetterereignisse nehmen in Häufigkeit und Intensität zu',
status=Claim.Status.TEILWEISE_RICHTIG,
short_answer='Viele Extremwetterarten zeigen einen Zusammenhang mit dem Klimawandel, aber nicht jedes Ereignis ist direkt darauf zurückzuführen.',
detailed_explanation='Hitzewellen und starke Niederschläge werden in vielen Regionen häufiger. Attributionsforschung berechnet Wahrscheinlichkeitsveränderungen für Einzelereignisse.',
evidence_level=Claim.EvidenceLevel.STARK,
)
def _create_energy_claims(self, category, tags):
c1 = Claim.objects.create(
category=category,
title='Deutschland kann seinen Strombedarf ausschließlich mit Solar und Wind decken',
status=Claim.Status.TEILWEISE_RICHTIG,
short_answer='Langfristig ist ein sehr hoher Anteil erneuerbarer Energien möglich, erfordert aber Speicher, Netzausbau und Flexibilität.',
detailed_explanation='Studien zeigen Szenarien mit nahezu 100 % erneuerbarem Strom, erfordern aber Infrastruktur und Sektorkopplung.',
evidence_level=Claim.EvidenceLevel.MITTEL,
)
c1.tags.add(tags['erneuerbare'])
CounterArgument.objects.create(
claim=c1,
argument='Wenn die Sonne nicht scheint und der Wind nicht weht, fällt das Netz aus.',
response='Energiesysteme kombinieren Speicher, Netze, Importe und Reservekapazitäten statt auf eine einzige Quelle zu setzen.',
)
Claim.objects.create(
category=category,
title='Atomkraft ist in Deutschland klimaneutral und deshalb unverzichtbar',
status=Claim.Status.IRREFUEHREND,
short_answer='Atomkraft erzeugt wenig CO₂ im Betrieb, verursacht aber andere Risiken und hohe Folgekosten. Sie ist nicht die einzige klimafreundliche Option.',
detailed_explanation='Lebenszyklusanalysen zeigen niedrige CO₂-Emissionen, aber Endlagerung und Unfallrisiken sind zentrale Gegenargumente.',
evidence_level=Claim.EvidenceLevel.STARK,
)
Claim.objects.create(
category=category,
title='Der Ausbau erneuerbarer Energien treibt die Strompreise allein massiv nach oben',
status=Claim.Status.IRREFUEHREND,
short_answer='Strompreise werden von Brennstoffkosten, Netzentgelten und Abgaben beeinflusst. Erneuerbare senken Grenzkosten, verursachen aber Netzausbaukosten.',
detailed_explanation='In Phasen hoher Gaspreise stiegen Börsenstrompreise stark. Langfristig sind Wind und Solar kostengünstige Neubau-Technologien.',
evidence_level=Claim.EvidenceLevel.MITTEL,
)
def _create_migration_claims(self, category, tags):
c1 = Claim.objects.create(
category=category,
title='Die Mehrheit der Migranten in Deutschland ist arbeitslos und lebt von Sozialleistungen',
status=Claim.Status.IRREFUEHREND,
short_answer='Die Erwerbstätigenquote variiert stark nach Herkunft und Aufenthaltsdauer. Pauschale Aussagen sind nicht haltbar.',
detailed_explanation='Viele Zuwanderer arbeiten nach mehreren Jahren ähnlich häufig wie die Gesamtbevölkerung. Neuankömmlinge weisen anfangs häufiger Arbeitslosigkeit auf.',
evidence_level=Claim.EvidenceLevel.STARK,
)
c1.tags.add(tags['migration'])
Source.objects.create(
claim=c1,
title='Zuwanderung und Arbeitsmarkt',
organization='Institut für Arbeitsmarkt- und Berufsforschung (IAB)',
url='https://www.iab.de/',
description='Forschung des IAB zu Migration und Beschäftigung.',
)
Claim.objects.create(
category=category,
title='Deutschland hat die höchste Zuwanderung in Europa',
status=Claim.Status.TEILWEISE_RICHTIG,
short_answer='Deutschland nimmt absolut viele Zuwanderer auf, liegt pro Kopf aber nicht immer an der Spitze in Europa.',
detailed_explanation='Eurostat-Daten zeigen Deutschland unter den Ländern mit höchsten absoluten Zahlen. Relativ zur Bevölkerung liegen andere Länder teils höher.',
evidence_level=Claim.EvidenceLevel.STARK,
)
def _create_economy_claims(self, category, tags):
Claim.objects.create(
category=category,
title='Die Inflation in Deutschland wird allein durch Lohnerhöhungen verursacht',
status=Claim.Status.IRREFUEHREND,
short_answer='Lohnkosten können Preise mitverursachen, aber Energiepreise, Lieferketten und Geldpolitik spielen ebenfalls eine zentrale Rolle.',
detailed_explanation='Die Inflation 2022/2023 wurde maßgeblich durch Energie- und Rohstoffpreisschocks getrieben.',
evidence_level=Claim.EvidenceLevel.STARK,
)
Claim.objects.create(
category=category,
title='Deutschland ist der größte Exporteur der Welt',
status=Claim.Status.FALSCH,
short_answer='Deutschland ist ein führender Exporteur, lag in den letzten Jahren aber hinter China.',
detailed_explanation='Nach WTO-Daten exportierte China mehr Waren als Deutschland. Deutschland bleibt stark im Maschinen- und Fahrzeugbau.',
evidence_level=Claim.EvidenceLevel.SEHR_STARK,
)
def _create_politics_claims(self, category, tags):
Claim.objects.create(
category=category,
title='Wahlbeteiligung in Deutschland sinkt seit Jahrzehnten kontinuierlich',
status=Claim.Status.TEILWEISE_RICHTIG,
short_answer='Bei Bundestagswahlen schwankt die Beteiligung; langfristig gibt es einen leichten Rückgang, aber keine einheitliche Abwärtsspirale.',
detailed_explanation='Historische Daten zeigen Schwankungen zwischen etwa 70 % und 90 % bei Bundestagswahlen.',
evidence_level=Claim.EvidenceLevel.STARK,
)
def _create_science_claims(self, category, tags):
c1 = Claim.objects.create(
category=category,
title='Eine einzelne Studie beweist wissenschaftlichen Konsens',
status=Claim.Status.FALSCH,
short_answer='Einzelstudien sind Ausgangspunkte, kein abschließender Beweis. Konsens entsteht durch Replikation und Synthese vieler Arbeiten.',
detailed_explanation='Peer Review filtert Fehler, garantiert aber keine Wahrheit. Metaanalysen fassen viele Studien zusammen.',
evidence_level=Claim.EvidenceLevel.SEHR_STARK,
)
c1.tags.add(tags['forschung'])
CounterArgument.objects.create(
claim=c1,
argument='Wenn eine Studie in einer renommierten Zeitschrift steht, ist sie bewiesen.',
response='Renommierte Journale publizieren auch widerlegte Ergebnisse. Die Qualität hängt von Replikation und Methodik ab.',
)