gwoe-antragspruefer/app/templates/v2/screens/methodik.html
Dotty Dotter bf6201eb00 feat(tour): seitenspezifische Touren für jede Public/Auth-Page
Bisher hatten nur Startseite und Antrag-Detail eigene Touren — die
Fallback-Tour (Logo+Topbar+Sidebar) war für jede andere Page identisch.
User-Wunsch: pro Menüpunkt eigene Tour, die diese Page funktional
erklärt.

Pro Page 3-5 Stationen mit konkreten Selektoren auf die Hauptbereiche:
- Quellen: Volltextsuche, Treffer-Liste, Programm-Karten
- Methodik: TOC, GWÖ-Matrix, Pipeline
- Auswertungen: Tabs (4 Sichten), Filter, Visualisierung
- Stimmverhalten: Stimm-Index, Heuchelei-Quote, Cross-BL — eigene
  Variante via {% if v2_active_nav == 'stimmverhalten' %}, da
  Stimmverhalten dasselbe Template wie Auswertungen nutzt
- Tags: Tag-Wolke, gefilterte Treffer
- Merkliste: Liste, Empty-State
- Neuer Antrag: BL-Wahl, Drucksachen-Eingabe, Modell, Submit
- Abos: Filter, aktive Abos
- Atom-Feed: Filter, Feed-URL
- Landtag-Suche: BL, Suchbegriff, Treffer + Bewertung anstoßen
- Aktuelle Themen: Top-News, Cluster+Zeitreihe, PM-Generator

Texte ermächtigend formuliert (was-wofür-wie), nicht oberflächlich.
Selektoren mit Fallback-Liste (komma-separiert), damit Templates ohne
exakte Klassennamen die Station trotzdem zeigen können.
2026-05-09 09:03:59 +02:00

708 lines
47 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

{% extends "v2/base.html" %}
{% block title %}Methodik — GWÖ-Antragsprüfer{% endblock %}
{% set v2_active_nav = "" %}
{% block head_extra %}
<style>
.meth-layout {
display: grid;
grid-template-columns: 220px 1fr;
gap: 2rem;
align-items: start;
}
@media (max-width: 720px) {
.meth-layout { grid-template-columns: 1fr; }
.meth-toc { display: none; }
}
.meth-toc {
position: sticky;
top: 72px;
font-size: 12px;
font-family: var(--font-mono);
line-height: 1.8;
border-left: 2px solid var(--ecg-green);
padding-left: 12px;
color: var(--ecg-dark);
opacity: 0.75;
}
.meth-toc a {
display: block;
color: inherit;
text-decoration: none;
opacity: 0.75;
transition: opacity 0.1s;
}
.meth-toc a:hover { opacity: 1; color: var(--ecg-green); }
.meth-toc .toc-section { font-weight: 700; margin-top: 8px; opacity: 1; }
.meth-body h2 {
font-family: var(--font-display);
font-size: 18px;
color: var(--ecg-teal);
margin: 2rem 0 0.75rem;
padding-bottom: 4px;
border-bottom: 2px solid var(--ecg-teal);
}
.meth-body h3 {
font-family: var(--font-display);
font-size: 14px;
color: var(--ecg-green);
margin: 1.25rem 0 0.4rem;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.meth-body p { margin-bottom: 0.6rem; }
.meth-body ul { margin: 0.4rem 0 0.8rem 1.4rem; }
.meth-body li { margin: 0.25rem 0; }
.meth-body a { color: var(--ecg-teal); }
.meth-body table {
border-collapse: collapse;
width: 100%;
font-size: 12px;
margin: 0.5rem 0 1rem;
}
.meth-body th, .meth-body td {
border: 1px solid var(--ecg-border);
padding: 6px 8px;
text-align: left;
}
.meth-body th { background: var(--ecg-bg-subtle); font-weight: 700; font-size: 11px; }
.meth-note {
background: rgba(136,158,51,0.1);
border-left: 3px solid var(--ecg-green);
padding: 10px 14px;
margin: 1rem 0;
font-size: 13px;
border-radius: 0 4px 4px 0;
}
/* Interactive matrix grid */
.gwoe-matrix-grid {
display: grid;
grid-template-columns: 150px repeat(5, 1fr);
gap: 2px;
font-size: 11px;
margin: 1rem 0;
}
.gwoe-matrix-grid .gc { padding: 5px 4px; text-align: center; background: var(--ecg-bg-subtle); border: 1px solid var(--ecg-border); display: flex; align-items: center; justify-content: center; line-height: 1.25; min-height: 36px; }
.gwoe-matrix-grid .gh { background: var(--ecg-teal); color: #fff; font-weight: 700; cursor: help; }
.gwoe-matrix-grid .gr { background: var(--ecg-green); color: #fff; font-weight: 700; justify-content: flex-start; padding-left: 6px; text-align: left; cursor: help; }
.gwoe-matrix-grid .gc.clickable { cursor: pointer; transition: background 0.1s; }
.gwoe-matrix-grid .gc.clickable:hover { background: rgba(0,157,165,0.12); }
#field-explain {
display: none;
background: var(--ecg-bg-subtle);
border-left: 3px solid var(--ecg-green);
padding: 12px 16px;
margin: 0.5rem 0 1rem;
border-radius: 0 4px 4px 0;
font-size: 13px;
}
#field-explain strong { font-family: var(--font-display); }
.pipeline-step {
display: flex;
gap: 12px;
align-items: flex-start;
margin: 10px 0;
padding: 10px 12px;
background: var(--ecg-bg-subtle);
border-radius: 4px;
border-left: 3px solid var(--ecg-teal);
}
.step-num {
background: var(--ecg-teal);
color: #fff;
width: 26px; height: 26px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-weight: 700; font-size: 12px; flex-shrink: 0;
font-family: var(--font-mono);
}
</style>
{% endblock %}
{% block main %}
<div style="padding:0 0 2rem;">
<h1 style="font-family:var(--font-display);font-size:22px;color:var(--ecg-teal);margin:0 0 4px;">Methodik</h1>
<p style="font-size:12px;font-family:var(--font-mono);color:var(--ecg-dark);opacity:0.6;">
GWÖ-Matrix 2.0 · Gemeinden · Transparenz-Dokumentation
</p>
</div>
<div class="meth-layout">
<!-- TOC -->
<nav class="meth-toc" aria-label="Inhaltsverzeichnis">
<div class="toc-section">Inhalt</div>
<a href="#gwoe">Was ist die GWÖ?</a>
<a href="#was-macht">Was macht der Prüfer?</a>
<a href="#matrix">Die Matrix 2.0</a>
<a href="#pipeline">Analyse-Pipeline</a>
<a href="#geltung">Bewertungs-Kontext</a>
<a href="#stimmverhalten">Stimmverhalten &amp; Marker</a>
<a href="#prompts">LLM-Prompts</a>
<a href="#qualitaet">Qualitätssicherung</a>
<a href="#einschraenkungen">Einschränkungen</a>
<a href="#datenquellen">Datenquellen</a>
<a href="#versionsstand">Versionsstand</a>
</nav>
<!-- Content -->
<div class="meth-body">
<section id="gwoe">
<h2>Was ist die Gemeinwohl-Ökonomie?</h2>
<div class="v2-kasten outline-blue">
<p>
Die <strong>Gemeinwohl-Ökonomie (GWÖ)</strong> ist ein Wirtschaftsmodell, das den
Erfolg wirtschaftlichen Handelns nicht am Gewinn, sondern am <strong>Beitrag zum
Gemeinwohl</strong> misst. Entwickelt von Christian Felber (2010), trägt die GWÖ
eine internationale Bewegung mit über 11.000 Unterstützer:innen,
4.500 Mitgliedern und 1.000 bilanzierten Organisationen.
</p>
<h3>Das Bewertungsmodell: die Gemeinwohl-Bilanz</h3>
<p>
Das Kernstück ist die <strong>Gemeinwohl-Bilanz</strong>: ein standardisiertes
Bewertungsverfahren nach einer Matrix aus fünf Werten
(Menschenwürde, Solidarität, ökologische Nachhaltigkeit, soziale Gerechtigkeit,
Transparenz &amp; Demokratie) und fünf Berührungsgruppen.
Die aktuelle <strong>Unternehmens-Matrix (Version 5.1)</strong> ist in über 35 Ländern erprobt.
</p>
<p style="font-size:11px;">
<a href="https://germany.econgood.org/wp-content/uploads/sites/8/2025/02/ECOnGOOD_Arbeitsbuch_5_1.pdf" target="_blank">Arbeitsbuch Unternehmen 5.1 (PDF)</a> ·
<a href="https://germany.econgood.org/tools/gemeinwohl-matrix/" target="_blank">Matrix-Übersicht</a>
</p>
<h3>Adaption für die öffentliche Hand</h3>
<p>
Für <strong>Gemeinden</strong> gibt es seit 2017 das <strong>Arbeitsbuch für Gemeinden Version 2.0</strong>.
Es überträgt die Unternehmens-Matrix auf kommunale Handlungsfelder:
statt „Kund:innen" stehen <em>Bürger:innen</em> im Fokus, statt „Lieferkette"
geht es um <em>öffentliche Beschaffung</em>.
Eine aktualisierte Version 2.1.A läuft seit 2023 im Pilotbetrieb.
</p>
<p style="font-size:11px;">
<a href="https://germany.econgood.org/wp-content/uploads/sites/8/2022/05/Arbeitsbuch-Gemeinden_2.pdf" target="_blank">Arbeitsbuch Gemeinden 2.0 (PDF)</a> ·
<a href="https://germany.econgood.org/wp-content/uploads/sites/8/2024/04/20231103_Arbeitsbuch-2_1_A-final.pdf" target="_blank">Version 2.1.A Pilotfassung (PDF)</a>
</p>
<h3>Anwendung auf Parlamentsanträge</h3>
<p>
<strong>Dieser Antragsprüfer</strong> nutzt die Gemeinde-Matrix 2.0 als
Bewertungsrahmen und wendet sie systematisch auf Parlamentsanträge aller
deutschen Landtage und des Bundestags an. Parlamentsanträge gestalten die
Rahmenbedingungen, unter denen Gemeinden handeln — ihre Gemeinwohl-Wirkung
zu messen macht sie vergleichbar und transparent.
</p>
</div>
</section>
<section id="was-macht">
<h2>Was macht der GWÖ-Antragsprüfer?</h2>
<div class="v2-kasten outline-green">
<p>Jeder Antrag wird automatisch analysiert und erhält:</p>
<ul>
<li><strong>GWÖ-Score (010)</strong> — wie stark fördert oder widerspricht der Antrag den fünf Gemeinwohl-Werten?</li>
<li><strong>Empfehlung &amp; Bewertungs-Sicherheit</strong> — qualitative Einordnung („Uneingeschränkt unterstützen" … „Ablehnen") plus eine Sicherheits-Angabe (hoch/mittel/niedrig), wie selbstsicher das Sprachmodell in dieser Einordnung ist (wissenschaftlich: <em>Konfidenz</em>).</li>
<li><strong>25-Felder-Matrix</strong> — detaillierte Bewertung für jede Kombination aus Berührungsgruppe und Wert</li>
<li><strong>Schwerpunkt-Felder</strong> — die Top-Felder der Matrix, die den Score am stärksten treiben</li>
<li><strong>Themen-Tags</strong> &amp; <strong>Kernforderungen</strong> — automatische Themen-Klassifikation und Bullet-Liste der zentralen Forderungen des Antrags</li>
<li><strong>Wahlprogramm-Treue</strong> — wie gut passt der Antrag zu den Wahl- und Grundsatzprogrammen der Fraktionen, belegt mit verifizierten Zitaten?</li>
<li><strong>Verbesserungsvorschläge</strong> — konkrete Textänderungen im Redline-Format</li>
<li><strong>Abstimmungsergebnis &amp; Wahlprogramm-Konflikt-Marker</strong> — fraktions-aggregierte Abstimmung aus dem Plenarprotokoll, plus Hinweis-Symbole, wenn eine Fraktion gegen das eigene Wahlprogramm stimmt (siehe Abschnitt <a href="#stimmverhalten">Stimmverhalten</a>).</li>
<li><strong>Ähnliche Anträge &amp; News-Match</strong> — verwandte Drucksachen aus anderen Bundesländern (per Embedding-Ähnlichkeit) und aktuelle Pressemeldungen, die thematisch zu diesem Antrag passen.</li>
</ul>
<p style="margin-top:0.5rem;">
Ziel ist <strong>Transparenz</strong>: Bürger:innen können nachvollziehen, welche
Anträge dem Gemeinwohl dienen — und welche dagegen arbeiten.
Die Bewertungen sind öffentlich, maschinenlesbar (JSON/CSV/Atom-Feed) und unter CC BY 4.0 lizenziert.
</p>
</div>
</section>
<section id="matrix">
<h2>Die GWÖ-Matrix 2.0 für Gemeinden</h2>
<div class="v2-kasten outline-blue">
<p><strong>5 Berührungsgruppen</strong> (Zeilen) × <strong>5 Werte</strong> (Spalten) = 25 Bewertungsfelder.
Jedes Feld wird von <strong>5</strong> (fundamental widersprechend) bis <strong>+5</strong>
(stark fördernd) bewertet. Der GWÖ-Score (010) ist ein gewichteter Durchschnitt.</p>
</div>
<h3>Die fünf Werte (Spalten)</h3>
<table>
<tr><th style="width:30%;">Wert</th><th>Leitfrage</th></tr>
<tr><td><strong>1. Menschenwürde</strong></td><td>Werden Grundrechte geschützt? Rechtliche Gleichstellung? Schutz vor Diskriminierung?</td></tr>
<tr><td><strong>2. Solidarität</strong></td><td>Wird das Gemeinwohl gefördert? Mehrwert für die Gemeinschaft? Kooperation statt Konkurrenz?</td></tr>
<tr><td><strong>3. Ökologische Nachhaltigkeit</strong></td><td>Klimaschutz? Ressourcenschonung? Biodiversität? Kreislaufwirtschaft?</td></tr>
<tr><td><strong>4. Soziale Gerechtigkeit</strong></td><td>Gerechte Verteilung? Daseinsvorsorge? Soziale Absicherung? Chancengleichheit?</td></tr>
<tr><td><strong>5. Transparenz &amp; Demokratie</strong></td><td>Bürgerbeteiligung? Offenlegung? Demokratische Prozesse? Rechenschaftspflicht?</td></tr>
</table>
<h3>Die fünf Berührungsgruppen (Zeilen)</h3>
<table>
<tr><th style="width:30%;">Gruppe</th><th>Wer ist gemeint?</th></tr>
<tr><td><strong>A · Lieferant:innen</strong></td><td>Externe Beschaffung, Lieferketten, Dienstleister:innen</td></tr>
<tr><td><strong>B · Finanzen</strong></td><td>Umgang mit öffentlichen Mitteln, Haushalt, Steuerzahler:innen</td></tr>
<tr><td><strong>C · Verwaltung</strong></td><td>Mandatsträger:innen, Mitarbeitende, Ehrenamtliche</td></tr>
<tr><td><strong>D · Bürger:innen</strong></td><td>Wirkung innerhalb der Grenzen, Daseinsvorsorge</td></tr>
<tr><td><strong>E · Gesellschaft &amp; Natur</strong></td><td>Wirkung über die Grenzen hinaus, Zukunft</td></tr>
</table>
<h3>Alle 25 Felder</h3>
<p style="font-size:11px;opacity:0.7;margin-bottom:8px;">Klick auf ein Feld für Details.</p>
<div id="field-explain">
<div style="display:flex;justify-content:space-between;align-items:center;">
<strong id="field-explain-title"></strong>
<button onclick="document.getElementById('field-explain').style.display='none'"
style="background:none;border:none;cursor:pointer;color:var(--ecg-dark);opacity:0.5;font-size:14px;"></button>
</div>
<div id="field-explain-text" style="margin-top:8px;line-height:1.6;"></div>
</div>
<div class="gwoe-matrix-grid">
<div class="gc"></div>
<div class="gc gh" title="Wert 1 — Menschenwürde (Rechtsstaatsprinzip): Werden Grundrechte geschützt? Rechtliche Gleichstellung, Schutz vor Diskriminierung.">Menschenwürde</div>
<div class="gc gh" title="Wert 2 — Solidarität (Gemeinnutz): Wird das Gemeinwohl gefördert? Mehrwert für die Gemeinschaft, Kooperation statt Konkurrenz.">Solidarität</div>
<div class="gc gh" title="Wert 3 — Ökologische Nachhaltigkeit (Umwelt-Verantwortung): Klimaschutz, Ressourcenschonung, Biodiversität, Kreislaufwirtschaft.">Ökologische Nachhaltigkeit</div>
<div class="gc gh" title="Wert 4 — Soziale Gerechtigkeit (Sozialstaatsprinzip): Gerechte Verteilung, Daseinsvorsorge, soziale Absicherung, Chancengleichheit.">Soziale Gerechtigkeit</div>
<div class="gc gh" title="Wert 5 — Transparenz & Mitbestimmung (Demokratie): Bürgerbeteiligung, Offenlegung, demokratische Prozesse, Rechenschaftspflicht.">Transparenz & Mitbestimmung</div>
<div class="gc gr" title="Berührungsgruppe A — Lieferant:innen, ausgelagerte Betriebe, Dienstleister:innen. Externe Beschaffung und Lieferketten der Kommune.">A · Lieferant:innen</div>
<div class="gc clickable" onclick="showField('A1')" title="A1 — Grundrechtsschutz in der Lieferkette"><strong>A1</strong><br><small>Grundrechte Lieferkette</small></div>
<div class="gc clickable" onclick="showField('A2')" title="A2 — Nutzen für die Gemeinde"><strong>A2</strong><br><small>Nutzen Gemeinde</small></div>
<div class="gc clickable" onclick="showField('A3')" title="A3 — Ökologische Verantwortung in der Lieferkette"><strong>A3</strong><br><small>Ökol. Verantwortung</small></div>
<div class="gc clickable" onclick="showField('A4')" title="A4 — Soziale Verantwortung in der Lieferkette"><strong>A4</strong><br><small>Soziale Verantwortung</small></div>
<div class="gc clickable" onclick="showField('A5')" title="A5 — Rechenschaft und Mitsprache bei Beschaffung"><strong>A5</strong><br><small>Rechenschaft</small></div>
<div class="gc gr" title="Berührungsgruppe B — Finanzpartner:innen, Geldgeber:innen, Steuerzahler:innen. Umgang mit öffentlichen Mitteln und Haushalt.">B · Finanzen</div>
<div class="gc clickable" onclick="showField('B1')" title="B1 — Ethisches Finanzgebaren"><strong>B1</strong><br><small>Eth. Finanzgebaren</small></div>
<div class="gc clickable" onclick="showField('B2')" title="B2 — Gemeinnutz im Finanzgebaren"><strong>B2</strong><br><small>Gemeinnutz</small></div>
<div class="gc clickable" onclick="showField('B3')" title="B3 — Ökologische Verantwortung der Finanzpolitik"><strong>B3</strong><br><small>Ökol. Finanzpolitik</small></div>
<div class="gc clickable" onclick="showField('B4')" title="B4 — Soziale Verantwortung der Finanzpolitik"><strong>B4</strong><br><small>Soz. Finanzpolitik</small></div>
<div class="gc clickable" onclick="showField('B5')" title="B5 — Partizipation in der Finanzpolitik"><strong>B5</strong><br><small>Partizipation</small></div>
<div class="gc gr" title="Berührungsgruppe C — Politische Führung, Verwaltung, Ehrenamtliche. Mandatsträger:innen und Mitarbeitende der Kommune.">C · Verwaltung</div>
<div class="gc clickable" onclick="showField('C1')" title="C1 — Individuelle Rechts- und Gleichstellung"><strong>C1</strong><br><small>Gleichstellung</small></div>
<div class="gc clickable" onclick="showField('C2')" title="C2 — Gemeinsame Zielvereinbarung für das Gemeinwohl"><strong>C2</strong><br><small>Gemeinsame Ziele</small></div>
<div class="gc clickable" onclick="showField('C3')" title="C3 — Förderung ökologischen Verhaltens intern"><strong>C3</strong><br><small>Ökol. Verhalten</small></div>
<div class="gc clickable" onclick="showField('C4')" title="C4 — Gerechte Verteilung von Arbeit"><strong>C4</strong><br><small>Gerechte Arbeit</small></div>
<div class="gc clickable" onclick="showField('C5')" title="C5 — Transparente Kommunikation intern"><strong>C5</strong><br><small>Transparenz intern</small></div>
<div class="gc gr" title="Berührungsgruppe D — Bürger:innen und Wirtschaft. Wirkung innerhalb der Gemeindegrenzen, Daseinsvorsorge.">D · Bürger:innen</div>
<div class="gc clickable" onclick="showField('D1')" title="D1 — Schutz des Individuums, Rechtsgleichheit"><strong>D1</strong><br><small>Rechtsgleichheit</small></div>
<div class="gc clickable" onclick="showField('D2')" title="D2 — Gesamtwohl in der Gemeinde"><strong>D2</strong><br><small>Gesamtwohl</small></div>
<div class="gc clickable" onclick="showField('D3')" title="D3 — Ökologische Gestaltung der öffentlichen Leistung"><strong>D3</strong><br><small>Ökol. Leistung</small></div>
<div class="gc clickable" onclick="showField('D4')" title="D4 — Soziale Gestaltung der öffentlichen Leistung"><strong>D4</strong><br><small>Soz. Leistung</small></div>
<div class="gc clickable" onclick="showField('D5')" title="D5 — Transparente Kommunikation und demokratische Einbindung"><strong>D5</strong><br><small>Demokratie</small></div>
<div class="gc gr" title="Berührungsgruppe E — Staat, Gesellschaft und Natur. Wirkung über die Gemeindegrenzen hinaus, Zukunft.">E · Gesellschaft & Natur</div>
<div class="gc clickable" onclick="showField('E1')" title="E1 — Menschenwürdiges Leben für zukünftige Generationen"><strong>E1</strong><br><small>Zukunft</small></div>
<div class="gc clickable" onclick="showField('E2')" title="E2 — Beitrag zum Gesamtwohl über die Gemeindegrenzen hinaus"><strong>E2</strong><br><small>Beitrag Gesamtwohl</small></div>
<div class="gc clickable" onclick="showField('E3')" title="E3 — Verantwortung für ökologische Auswirkungen jenseits der Gemeinde"><strong>E3</strong><br><small>Ökol. Auswirkungen</small></div>
<div class="gc clickable" onclick="showField('E4')" title="E4 — Beitrag zum sozialen Ausgleich"><strong>E4</strong><br><small>Sozialer Ausgleich</small></div>
<div class="gc clickable" onclick="showField('E5')" title="E5 — Transparente und demokratische Mitbestimmung auf übergeordneter Ebene"><strong>E5</strong><br><small>Demokratie global</small></div>
</div>
<details style="font-size:12px;margin-top:8px;">
<summary style="cursor:pointer;color:var(--ecg-teal);font-weight:600;padding:4px 0;">Bewertungsskala</summary>
<table style="margin-top:6px;font-size:11px;">
<tr><th>Symbol</th><th>Rating</th><th>Bedeutung</th></tr>
<tr><td>++</td><td>+4 bis +5</td><td>Stark fördernd, vorbildlich</td></tr>
<tr><td>+</td><td>+1 bis +3</td><td>Fördernd</td></tr>
<tr><td></td><td>0</td><td>Neutral / nicht berührt</td></tr>
<tr><td></td><td>1 bis 3</td><td>Widersprechend</td></tr>
<tr><td></td><td>4 bis 5</td><td>Stark widersprechend</td></tr>
</table>
</details>
</section>
<section id="pipeline">
<h2>Analyse-Pipeline</h2>
<div class="v2-kasten outline-blue">
<div class="pipeline-step">
<div class="step-num">1</div>
<div>
<strong>Antragstext laden</strong><br>
Der PDF-Volltext wird aus dem Landtags-Portal geholt
({{ adapter_count }} Parlamente angebunden). Nur echte Anträge und
Gesetzentwürfe werden analysiert — Kleine Anfragen werden übersprungen.
</div>
</div>
<div class="pipeline-step">
<div class="step-num">2</div>
<div>
<strong>Wahlprogramm-Passagen suchen</strong><br>
Per semantischer Suche ({{ embedding_model }}, 1024 Dimensionen) werden für
<strong>jede Fraktion</strong> die thematisch relevantesten Passagen aus
Wahl- und Grundsatzprogrammen gefunden. Aktuell {{ programme_count }} Programme
mit {{ chunk_count }} Textabschnitten indexiert.
</div>
</div>
<div class="pipeline-step">
<div class="step-num">3</div>
<div>
<strong>KI-Bewertung</strong><br>
Ein Sprachmodell ({{ model_name }}) bewertet den Antrag anhand der
GWÖ-Matrix und vergleicht ihn mit den gefundenen Programmpassagen.
Der Prompt erzwingt die Verwendung wörtlicher Zitate.
</div>
</div>
<div class="pipeline-step">
<div class="step-num">4</div>
<div>
<strong>Zitat-Verifikation (partei-skopiert)</strong><br>
Jedes Zitat wird <strong>server-seitig verifiziert</strong>: der Text muss
als Substring (oder 5-Wort-Anker) in einem retrieten Chunk
<em>derselben Partei</em> auffindbar sein. Quellenangabe und Seitenzahl
werden aus dem echten Treffer rekonstruiert — die Modell-Ausgabe wird für diese
Felder verworfen.<br>
<span style="font-size:11px;opacity:0.85;">Wenn der Text wortgleich auch in einem fremden Programm vorkommt
(z. B. „Eine Schulden- und Haftungsunion lehnen wir ab" steht in mehreren Programmen), wird das Zitat
<strong>nicht</strong> mit fremder Quelle markiert — sondern verworfen. Lieber 0 Zitate als ein
Misattributions-Zitat.</span>
</div>
</div>
<details style="font-size:12px;margin-top:8px;">
<summary style="cursor:pointer;color:var(--ecg-teal);font-weight:600;padding:4px 0;">Technische Details</summary>
<table style="margin-top:6px;font-size:11px;">
<tr><th>Eigenschaft</th><th>Wert</th></tr>
<tr><td>Sprachmodell</td><td>{{ model_name }} (DashScope / Alibaba Cloud)</td></tr>
<tr><td>Embedding-Modell</td><td>{{ embedding_model }} (1024 Dimensionen)</td></tr>
<tr><td>Chunk-Größe</td><td>400 Wörter, 50 Wörter Overlap</td></tr>
<tr><td>Retry bei Parse-Fehlern</td><td>3 Versuche mit steigender Temperatur</td></tr>
<tr><td>Zitat-Verifikation</td><td>Substring- oder 5-Wort-Anker-Match gegen Original-PDF</td></tr>
</table>
</details>
</div>
</section>
<section id="geltung">
<h2>Bewertungs-Kontext: gegen welches Programm wird gemessen?</h2>
<div class="v2-kasten outline-blue">
<p>
Jeder Antrag trägt ein Datum (Einbringungsdatum). Welches
Wahlprogramm gilt für eine Partei am 10.&nbsp;September 2025
eigentlich? Die Antwort ist nicht "das aktuellste, das auf der
Parteiwebseite liegt" — sondern: <strong>das, gegen das die
Partei zur Wahl angetreten ist und das mit der Vereidigung der
Regierung politisch wirksam wurde</strong>.
</p>
<p>
Im Antrag-Detail steht deshalb ein Kasten "Bewertungs-Kontext"
mit drei Angaben:
</p>
<ul>
<li><strong>Wahlperiode</strong> — welche Legislatur lief zum
Antragsdatum (z.&nbsp;B. NRW WP18 seit Konstituierung
01.06.2022)</li>
<li><strong>Regierung zur Antragszeit</strong> — Kabinett +
Koalitionsparteien + Vereidigungsdatum (z.&nbsp;B. Wüst II
CDU+GRÜNE seit 29.06.2022). Bei Sukzessionen ohne Wahl
(z.&nbsp;B. RP Dreyer III → Schweitzer I am 10.07.2024) wird
das tatsächlich amtierende Kabinett ausgewiesen.</li>
<li><strong>Wahlprogramme</strong>, gegen die der Antrag
inhaltlich gemessen wurde, mit Geltungsdatum + PDF-Link.
Plus ein Snapshot-Hinweis: zu welchem Datum mit welchem
LLM-Modell die Bewertung erstellt wurde.</li>
</ul>
<p style="margin-top:0.6em;">
Die zugrundeliegende Datenbasis (16 Bundesländer + Bund × bis
zu 8 Parteien × Wahlprogramme + 12 Bundes- und
Landes-Grundsatzprogramme; 56 Wahlperioden, 70 Regierungen
historisch) liegt in den Modulen <code>app/programme.py</code>
und <code>app/legislaturen.py</code>. Architektur-Details in
<a href="https://gwoe-docs.toppyr.de/adr/0013-programme-legislaturen-zeitpunktige-bewertung/">ADR&nbsp;0013</a>.
</p>
<p style="margin-top:0.6em; font-style:italic; color:var(--ink-muted, #777);">
Hinweis: aktuell sind im Embeddings-Index nur die jeweils
gegenwärtigen Wahlprogramme indiziert. Antragsbewertungen aus
früheren Wahlperioden zeigen den jetzigen Programm-Stand, nicht
den damaligen. Das ist eine bewusste Etappe — die Architektur
ist für historische Indexierung vorbereitet.
</p>
</div>
</section>
<section id="stimmverhalten">
<h2>Stimmverhalten &amp; Marker</h2>
<div class="v2-kasten outline-blue">
<p>
Wenn fraktions-aggregierte Plenum-Abstimmungen vorliegen, vergleicht der
Prüfer das Stimmverhalten jeder Fraktion mit ihrem eigenen Wahlprogramm-Score
für genau diesen Antrag und setzt — falls auffällig — kleine Hinweis-Symbole
neben den Fraktions-Pill:
</p>
<table>
<tr>
<th>Symbol</th>
<th>Konstellation</th>
<th>Schwelle</th>
<th>Wissenschaftlicher Begriff</th>
</tr>
<tr>
<td><strong></strong></td>
<td>Fraktion stimmt mit <strong>Nein</strong>, obwohl der Antrag inhaltlich gut zu ihrem Wahlprogramm passt</td>
<td>Wahlprogramm-Score ≥ 7 / 10</td>
<td><em>Heuchelei-Indikator</em></td>
</tr>
<tr>
<td><strong>!</strong></td>
<td>Fraktion stimmt mit <strong>Ja</strong>, obwohl der Antrag schlecht zum eigenen Wahlprogramm passt</td>
<td>Wahlprogramm-Score &lt; 3 / 10</td>
<td><em>Opportunismus-Indikator</em></td>
</tr>
</table>
<p style="margin-top:0.5rem;">
In der Bürger:innen-Ansicht (v3) werden beide Symbole unter dem neutraleren
Sammelbegriff „<strong>Wahlprogramm-Konflikt</strong>" geführt;
die wissenschaftliche Klassifikation erscheint im Tooltip beim
Hovern.
</p>
<h3>Konsistenz-Hinweis (Empfehlung vs. Beschluss)</h3>
<p>
Über jedem Abstimmungsergebnis steht ein Hinweis, ob die parlamentarische
Mehrheit der GWÖ-Empfehlung folgt. Beispiele:
</p>
<ul style="font-size:12px;">
<li><strong>Mehrheit deckt sich mit GWÖ-Empfehlung</strong> — der Antrag wurde angenommen, und der Prüfer empfahl Zustimmung; oder umgekehrt.</li>
<li><strong>Mehrheit gegen GWÖ-Empfehlung</strong> — der Beschluss läuft inhaltlich der Gemeinwohl-Empfehlung entgegen.</li>
</ul>
<p style="font-size:11px;opacity:0.7;">
Die Logik ist deterministisch (kein LLM beteiligt) und in
<a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer/src/branch/main/app/marker.py" target="_blank"><code>app/marker.py</code></a>
dokumentiert + getestet.
</p>
</div>
</section>
<section id="prompts">
<h2>LLM-Prompts</h2>
<div class="v2-kasten outline-blue">
<p>
Volle Transparenz: hier liegen die exakten Anweisungen, mit denen das
Sprachmodell ({{ model_name }}) jeden Antrag bewertet.
</p>
<h3 style="margin-top:0.75rem;">Wie System- und User-Prompt zusammenwirken</h3>
<p>
Beide Prompts werden in <strong>einem einzigen API-Call</strong>
gesendet — nicht getrennt ausgeführt. Sie fließen gemeinsam ins
Modell-Kontextfenster und werden zusammen bewertet.
</p>
<table style="margin-top:0.5rem;">
<tr>
<th style="width:30%;">System-Prompt (statisch, ~5 KB)</th>
<th>User-Prompt (dynamisch, pro Antrag)</th>
</tr>
<tr>
<td><strong>Wer und wie</strong> bewertet wird: GWÖ-Matrix-Definition, 25 Felder, Bewertungs-Skala, Empfehlungs-Kategorien, Ausgabe-JSON-Schema, strenge Regeln (max. 3 Verbesserungs­vorschläge, wörtliche Zitate, …).</td>
<td><strong>Was</strong> bewertet wird: BL-Spezifika, semantisch gefundene Wahlprogramm-Chunks, der Antragstext selbst, Pflicht-Fraktionen-Liste.</td>
</tr>
</table>
<p>
Das Modell wendet die Matrix-Definition aus dem System-Prompt auf
den Antragstext aus dem User-Prompt an. Ohne System-Prompt wüsste
es nicht <em>wonach</em> es bewerten soll; ohne User-Prompt
hätte es nichts zu bewerten.
</p>
<p style="font-size:12px;opacity:0.85;">
<strong>Warum die Trennung?</strong>
</p>
<ul style="font-size:12px;opacity:0.85;">
<li><strong>Caching:</strong> Der API-Anbieter cached den System-Prompt — pro neuem Antrag werden nur die User-Tokens verrechnet.</li>
<li><strong>Modell-Compliance:</strong> Sprachmodelle behandeln System-Anweisungen mit höherem Vertrauen, was robuster gegen Prompt-Injection aus dem Antragstext ist.</li>
<li><strong>Wartbarkeit:</strong> statische Bewertungs-Regeln getrennt vom dynamischen Inhalt — leichter zu pflegen, leichter zu auditieren.</li>
</ul>
<p style="font-size:11px;opacity:0.7;">
Quelle: <a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer/src/branch/main/app/analyzer.py" target="_blank"><code>app/analyzer.py</code></a>
(<code>get_system_prompt()</code> und <code>get_user_prompt_template()</code>);
API-Aufruf in <a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer/src/branch/main/app/adapters/qwen_bewerter.py" target="_blank"><code>app/adapters/qwen_bewerter.py</code></a>
(Zeilen 8385, <code>messages=[{"role":"system",…}, {"role":"user",…}]</code>).
</p>
<h3 style="margin-top:1rem;">Die Prompts im Wortlaut</h3>
<p style="font-size:12px;">
Der User-Prompt unten ist als <em>Template</em> abgebildet — die
Platzhalter <code>{kontext}</code>, <code>{wahlprogramm_zitate}</code>,
<code>{antrag}</code> und <code>{pflicht_fraktionen}</code> werden
pro Antrag mit den konkreten Inhalten gefüllt.
</p>
<details style="margin-top:1rem;">
<summary style="cursor:pointer;color:var(--ecg-teal);font-weight:700;padding:6px 0;font-family:var(--font-display);">
System-Prompt anzeigen
<span style="font-family:var(--font-mono);font-size:11px;opacity:0.6;font-weight:400;">({{ system_prompt|length }} Zeichen)</span>
</summary>
<pre style="background:var(--ecg-bg-subtle);border:1px solid var(--ecg-border);border-radius:4px;padding:14px 16px;margin-top:8px;font-family:var(--font-mono);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--ecg-dark);overflow-x:auto;">{{ system_prompt }}</pre>
</details>
<details style="margin-top:0.75rem;">
<summary style="cursor:pointer;color:var(--ecg-teal);font-weight:700;padding:6px 0;font-family:var(--font-display);">
User-Prompt-Template anzeigen
<span style="font-family:var(--font-mono);font-size:11px;opacity:0.6;font-weight:400;">({{ user_prompt_template|length }} Zeichen)</span>
</summary>
<pre style="background:var(--ecg-bg-subtle);border:1px solid var(--ecg-border);border-radius:4px;padding:14px 16px;margin-top:8px;font-family:var(--font-mono);font-size:11px;line-height:1.5;white-space:pre-wrap;word-break:break-word;color:var(--ecg-dark);overflow-x:auto;">{{ user_prompt_template }}</pre>
</details>
</div>
</section>
<section id="qualitaet">
<h2>Qualitätssicherung</h2>
<div class="v2-kasten outline-green">
<ul>
<li><strong>Partei-skopierte Zitat-Verifikation</strong> — jedes Zitat wird gegen die Chunks <em>derselben</em> Partei geprüft (Substring oder 5-Wort-Anker). Wortgleiche Treffer in einem fremden Programm zählen <em>nicht</em>; das Zitat wird in dem Fall verworfen statt mit fremder Quelle markiert.</li>
<li><strong>Score-Cap-Invariante</strong> — ein einziges Matrix-Feld mit Rating ≤ 4 deckelt den Gesamt-Score auf maximal 3 / 10. Verstöße werden im Server-Log als Warning protokolliert.</li>
<li><strong>Typ-Filterung</strong> — nur abstimmbare Drucksachen (Anträge, Gesetzentwürfe) werden bewertet. Kleine Anfragen, Antworten und Bundesrats-Drucksachen werden übersprungen.</li>
<li><strong>Manuelle Neu-Analyse</strong> — auf jeder Detail-Seite gibt es einen „Neu analysieren"-Button, der den Antrag mit der aktuellen Pipeline frisch bewertet.</li>
<li><strong>Property-Tests &amp; Fixture-Tests</strong> — Zitat-Binding, Marker-Logik und Score-Cap sind in <code>tests/</code> mit deterministischen Fixtures abgesichert (siehe ADR 0003 + 0008).</li>
<li><strong>Open Data</strong> — alle Bewertungen sind als JSON und CSV exportierbar (CC BY 4.0).</li>
</ul>
</div>
</section>
<section id="einschraenkungen">
<h2>Einschränkungen</h2>
<div class="v2-kasten outline-blue">
<ul>
<li><strong>Wertebasierte Einordnung, keine Rechtsprüfung</strong></li>
<li><strong>KI-Bias</strong> — Sprachmodelle können systematische Verzerrungen aufweisen. Bewertungen sind Orientierung, nicht objektive Wahrheit.</li>
<li><strong>Programmabhängig</strong> — Fraktionen ohne hinterlegtes Wahlprogramm erhalten keinen Programm-Vergleich. Der Antrag-Detailseite zeigt diese Lücke explizit als Hinweis am Programm-Treue-Block.</li>
<li><strong>Aktuelles Programm, nicht historisch</strong> — derzeit wird jede Fraktion gegen das jeweils <em>aktuell</em> hinterlegte Wahl-/Grundsatzprogramm bewertet. Bei älteren Anträgen aus früheren Wahlperioden ist das u.U. nicht das Programm, das zum Zeitpunkt der Antragstellung galt
(<a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues/186" target="_blank">Issue #186</a> — Behebung in Arbeit).</li>
<li><strong>Antragstext, nicht Umsetzung</strong> — bewertet wird was im Antrag steht, nicht ob es umgesetzt wird.</li>
<li><strong>Drucksachen-Eindeutigkeit</strong> — der Prüfer löst Drucksachen aktuell nur über die Nummer auf. In seltenen Fällen gleicher Nummern in verschiedenen Bundesländern wählt der Detail-Permalink den ersten DB-Match.</li>
</ul>
</div>
</section>
<section id="datenquellen">
<h2>Datenquellen</h2>
<div class="v2-kasten outline-green">
<p><strong>{{ adapter_count }} Parlamente</strong> angebunden:</p>
<table>
<tr>
<th>Parlament</th>
<th>Doku-System</th>
<th title="Antraegeund Drucksachen werden ueber den Adapter gesucht und gelistet">Drucksachen</th>
<th title="Plenarprotokoll-Parser fuer fraktions-aggregierte Abstimmungsergebnisse">Plenum-Votes</th>
</tr>
{% for bl in bundeslaender %}
<tr>
<td>{{ bl.name }} ({{ bl.code }})</td>
<td>{{ bl.doku_system }}</td>
<td style="color:var(--ecg-teal);">✓ aktiv</td>
<td>
{% if bl.code in plenum_vote_parsers %}
<span style="color:var(--ecg-teal);">✓ aktiv</span>
{% else %}
<span style="opacity:0.55;" title="Stub-Modul vorhanden, Parser noch nicht implementiert">○ Stub</span>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
<p style="margin-top:0.5rem;font-size:11px;opacity:0.7;">
<strong>Plenum-Votes</strong> = fraktions-aggregierte
Abstimmungs­ergebnisse aus den Plenarprotokollen
(#106). Dort wo der Parser
aktiv ist, zeigt die Antrag-Detail-Seite einen Block
„Abstimmungs­ergebnis" mit Ja/Nein/Enthaltung pro Fraktion.
Stubs sind Tracking-Stellen fuer kuenftige Implementierungen
(Issues <a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer/issues?q=protokoll-parser" target="_blank">#148#163</a>).
</p>
<p style="margin-top:0.75rem;font-size:11px;">
<a href="/quellen">Programme &amp; Quellen</a> ·
<a href="/api/auswertungen/export.json" download>Open Data (JSON)</a> ·
<a href="/api/feed.xml">Atom-Feed</a> ·
<a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer" target="_blank">Quellcode</a>
</p>
</div>
</section>
<section id="versionsstand">
<h2>Versionsstand</h2>
<div class="v2-kasten outline-blue">
<table>
<tr><th>Komponente</th><th>Stand</th></tr>
<tr><td>Sprachmodell</td><td>{{ model_name }}</td></tr>
<tr><td>Embedding-Modell (READ)</td><td>{{ embedding_model }} (1024 Dimensionen)</td></tr>
<tr><td>Indexierte Programme</td><td>{{ programme_count }} mit {{ chunk_count }} Textabschnitten</td></tr>
<tr><td>Angebundene Parlamente</td><td>{{ adapter_count }} (16 Bundesländer + Bundestag)</td></tr>
<tr><td>GWÖ-Matrix</td><td>2.0 Gemeinden (Arbeitsbuch 2017, Pilot 2.1.A 2023)</td></tr>
<tr><td>Bewertungs-Skala</td><td>5 … +5 pro Matrix-Feld; 0 … 10 als Gesamt-Score</td></tr>
<tr><td>Citation-Verification</td><td>partei-skopiert seit Mai 2026 (Issue #175-bug fix)</td></tr>
</table>
<p style="margin-top:0.5rem;font-size:11px;opacity:0.7;">
Diese Tabelle wird live aus dem System gerendert — die Werte sind genau die Konfiguration,
mit der Bewertungen <em>jetzt</em> erstellt werden.
</p>
</div>
</section>
</div>{# .meth-body #}
</div>{# .meth-layout #}
{% endblock %}
{% block body_scripts %}
<script>
window.GWOE_TOUR_STEPS = [
{ selector: 'h1',
title: 'Methodik — wie wir bewerten',
text: 'Hier ist alles offen dokumentiert: das GWÖ-Wertegerüst, was unser Werkzeug daraus macht, wie die Analyse-Pipeline läuft. Keine Black-Box — du kannst jeden Schritt nachvollziehen.' },
{ selector: '.meth-toc, nav.meth-toc',
title: 'Inhaltsverzeichnis',
text: 'Springpunkte zu den einzelnen Abschnitten: Was ist die GWÖ, was macht der Antragsprüfer, die Matrix 2.0, die Pipeline, Datenquellen.' },
{ selector: '#matrix, .gwoe-matrix-grid',
title: 'Die GWÖ-Matrix 2.0',
text: 'Das interaktive Raster der Bewertung: fünf Werte (Würde, Solidarität, Nachhaltigkeit, Gerechtigkeit, Demokratie) × fünf Berührungsgruppen. Klick auf eine Zelle zeigt die Detail-Erklärung.' },
{ selector: '#pipeline',
title: 'Analyse-Pipeline',
text: 'Von der Drucksache zum Score: Wie das LLM den Text einordnet, wie wir Halluzinationen ausschließen, wie Zitate aus Wahlprogrammen verifiziert werden.' },
];
</script>
<script>
const fieldInfo = {
"A1": { label: "Grundrechtsschutz in der Lieferkette", text: "<p><strong>Praxis:</strong> Wenn die öffentliche Hand Büromöbel, IT-Geräte oder Dienstkleidung beschafft: Unter welchen Bedingungen wurden diese hergestellt? Werden Lieferant:innen verpflichtet, Arbeitsschutzstandards und Menschenrechte einzuhalten?</p><p><strong>Theorie:</strong> Die GWÖ versteht Menschenwürde als unteilbar und kettenübergreifend. Das Feld A1 operationalisiert den Zusammenhang zwischen kommunaler Beschaffung und globalem Menschenrechtsschutz.</p>" },
"A2": { label: "Nutzen für die Gemeinde", text: "<p><strong>Praxis:</strong> Beauftragt die Kommune den Betrieb aus dem Ort — oder den billigsten Konzern aus dem Ausland? Bleiben Steuergelder in der Region?</p><p><strong>Theorie:</strong> Solidarität beginnt in der Nachbarschaft. Die GWÖ misst, ob die Beschaffungspolitik aktiv zur regionalen Wertschöpfung beiträgt.</p>" },
"A3": { label: "Ökologische Verantwortung in der Lieferkette", text: "<p><strong>Praxis:</strong> Werden bei öffentlichen Aufträgen Klimastandards verlangt? Kommt das Schulessen von regionalen Bauernhöfen?</p><p><strong>Theorie:</strong> Die ökologische Säule der GWÖ fordert, dass Umweltkosten nicht externalisiert werden.</p>" },
"A4": { label: "Soziale Verantwortung in der Lieferkette", text: "<p><strong>Praxis:</strong> Verdienen die Reinigungskräfte im Rathaus einen fairen Lohn? Werden Mindestlöhne kontrolliert?</p><p><strong>Theorie:</strong> Soziale Gerechtigkeit endet nicht am Werkstor.</p>" },
"A5": { label: "Rechenschaft und Mitsprache bei Beschaffung", text: "<p><strong>Praxis:</strong> Können Bürger:innen nachschauen, welche Firma den Auftrag bekommen hat — und warum? Gibt es ein öffentliches Vergaberegister?</p><p><strong>Theorie:</strong> Transparenz ist das Immunsystem der Demokratie. A5 misst, ob Beschaffungsprozesse nachvollziehbar sind.</p>" },
"B1": { label: "Ethisches Finanzgebaren", text: "<p><strong>Praxis:</strong> Liegt das Geld bei einer ethischen Bank — oder bei einer, die Waffengeschäfte finanziert? Gibt es ethische Anlagerichtlinien?</p><p><strong>Theorie:</strong> Die GWÖ betrachtet Geld als Mittel zum Zweck, nicht als Selbstzweck.</p>" },
"B2": { label: "Gemeinnutz im Finanzgebaren", text: "<p><strong>Praxis:</strong> Fließen Steuergelder in einen Radweg für alle — oder in eine Umgehungsstraße nur fürs Gewerbegebiet?</p><p><strong>Theorie:</strong> Solidarität in der Finanzpolitik heißt: öffentliches Geld dient öffentlichen Zwecken.</p>" },
"B3": { label: "Ökologische Verantwortung der Finanzpolitik", text: "<p><strong>Praxis:</strong> Investiert die Kommune in Solaranlagen? Werden Folgekosten des Klimawandels berücksichtigt?</p><p><strong>Theorie:</strong> Ökologische Nachhaltigkeit muss sich im Haushalt widerspiegeln.</p>" },
"B4": { label: "Soziale Verantwortung der Finanzpolitik", text: "<p><strong>Praxis:</strong> Bekommen ärmere Stadtteile genauso viel für Spielplätze wie reiche?</p><p><strong>Theorie:</strong> Soziale Gerechtigkeit erfordert bewusste Verteilungsentscheidungen.</p>" },
"B5": { label: "Partizipation in der Finanzpolitik", text: "<p><strong>Praxis:</strong> Gibt es einen Bürgerhaushalt? Werden Haushaltsentwürfe verständlich aufbereitet?</p><p><strong>Theorie:</strong> Demokratie braucht finanzielle Transparenz.</p>" },
"C1": { label: "Individuelle Rechts- und Gleichstellung", text: "<p><strong>Praxis:</strong> Werden Frauen gleich bezahlt? Gibt es Schutz vor Mobbing? Anonymisierte Bewerbungsverfahren?</p><p><strong>Theorie:</strong> Die Menschenwürde der Mitarbeitenden ist die Grundlage jeder guten Verwaltung.</p>" },
"C2": { label: "Gemeinsame Zielvereinbarung für das Gemeinwohl", text: "<p><strong>Praxis:</strong> Hat die Stadt ein Klimaschutzkonzept, das alle Ämter gemeinsam umsetzen?</p><p><strong>Theorie:</strong> Solidarität innerhalb der Verwaltung bedeutet: alle ziehen am selben Strang.</p>" },
"C3": { label: "Förderung ökologischen Verhaltens intern", text: "<p><strong>Praxis:</strong> Fahren Mitarbeitende mit dem Dienstrad oder dem SUV? Gibt es vegetarisches Essen in der Kantine?</p><p><strong>Theorie:</strong> Die Kommune hat eine Vorbildfunktion.</p>" },
"C4": { label: "Gerechte Verteilung von Arbeit", text: "<p><strong>Praxis:</strong> Können Eltern in der Verwaltung Teilzeit arbeiten ohne Karrierenachteile?</p><p><strong>Theorie:</strong> Soziale Gerechtigkeit beginnt beim eigenen Personal.</p>" },
"C5": { label: "Transparente Kommunikation intern", text: "<p><strong>Praxis:</strong> Können Bürger:innen die Sitzungsprotokolle online lesen?</p><p><strong>Theorie:</strong> Transparenz nach innen und außen ist die Voraussetzung für Vertrauen.</p>" },
"D1": { label: "Schutz des Individuums, Rechtsgleichheit", text: "<p><strong>Praxis:</strong> Werden Bürger:innen auf dem Amt fair behandelt — egal welchen Namen sie tragen?</p><p><strong>Theorie:</strong> Menschenwürde bedeutet: jeder Mensch hat den gleichen Wert.</p>" },
"D2": { label: "Gesamtwohl in der Gemeinde", text: "<p><strong>Praxis:</strong> Profitiert die ganze Stadt — oder nur ein Stadtteil, eine Altersgruppe?</p><p><strong>Theorie:</strong> Solidarität auf kommunaler Ebene heißt: das Gesamtwohl geht vor Partikularinteressen.</p>" },
"D3": { label: "Ökologische Gestaltung der öffentlichen Leistung", text: "<p><strong>Praxis:</strong> Kommt der Strom für die Straßenbeleuchtung aus Erneuerbaren?</p><p><strong>Theorie:</strong> Jede kommunale Dienstleistung hat einen ökologischen Fußabdruck.</p>" },
"D4": { label: "Soziale Gestaltung der öffentlichen Leistung", text: "<p><strong>Praxis:</strong> Kann sich die alleinerziehende Mutter den Kitaplatz leisten?</p><p><strong>Theorie:</strong> Soziale Gerechtigkeit in der Daseinsvorsorge ist der Kern kommunaler Politik.</p>" },
"D5": { label: "Transparente Kommunikation und demokratische Einbindung", text: "<p><strong>Praxis:</strong> Werden Bürger:innen gefragt, bevor die Straße vor ihrem Haus umgebaut wird?</p><p><strong>Theorie:</strong> Demokratie ist mehr als Wahlen alle vier Jahre.</p>" },
"E1": { label: "Menschenwürdiges Leben für zukünftige Generationen", text: "<p><strong>Praxis:</strong> Hinterlassen wir unseren Enkeln einen Schuldenberg — oder investieren wir heute so, dass auch 2050 gute Lebensbedingungen herrschen?</p><p><strong>Theorie:</strong> Die Menschenwürde hat eine zeitliche Dimension.</p>" },
"E2": { label: "Beitrag zum Gesamtwohl über die Gemeindegrenzen hinaus", text: "<p><strong>Praxis:</strong> Hilft der Antrag nur der eigenen Stadt — oder auch den Nachbargemeinden?</p><p><strong>Theorie:</strong> Solidarität endet nicht an der Gemeindegrenze.</p>" },
"E3": { label: "Verantwortung für ökologische Auswirkungen jenseits der Gemeinde", text: "<p><strong>Praxis:</strong> Denkt die Kommune beim Einkauf an den CO₂-Fußabdruck jenseits der eigenen Grenzen?</p><p><strong>Theorie:</strong> Die ökologische Krise ist global, aber die Verursachung ist lokal.</p>" },
"E4": { label: "Beitrag zum sozialen Ausgleich", text: "<p><strong>Praxis:</strong> Unterstützt die Stadt strukturschwache Regionen? Gibt es Fairtrade-Beschaffung?</p><p><strong>Theorie:</strong> Soziale Gerechtigkeit im globalen Maßstab ist die anspruchsvollste Dimension der GWÖ.</p>" },
"E5": { label: "Transparente und demokratische Mitbestimmung auf übergeordneter Ebene", text: "<p><strong>Praxis:</strong> Setzt sich die Kommune für mehr Demokratie ein — auch auf Landes- und Bundesebene?</p><p><strong>Theorie:</strong> Demokratie braucht Fürsprecher auf allen Ebenen.</p>" },
};
function showField(code) {
const info = fieldInfo[code];
if (!info) return;
const el = document.getElementById('field-explain');
document.getElementById('field-explain-title').textContent = code + ': ' + info.label;
document.getElementById('field-explain-text').innerHTML = info.text;
el.style.display = 'block';
el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
</script>
{% endblock %}