Files
Faktenkompass/claims/management/commands/load_sample_data.py
T
Pirmin Hinderling (fedora) 2c7fb7d030 initial commit
2026-07-07 13:02:49 +02:00

278 lines
16 KiB
Python
Raw 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.
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.',
)