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.' ), ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', ) 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.', )