gwoe-antragspruefer/app/templates/v2/screens/was-ist-neu.html

324 lines
11 KiB
HTML
Raw Normal View History

{% extends "v2/base.html" %}
{% block title %}Was ist neu — GWÖ-Antragsprüfer{% endblock %}
{% set v2_active_nav = "" %}
{% block head_extra %}
<style>
.neu-layout {
display: grid;
grid-template-columns: 220px 1fr;
gap: 2rem;
align-items: start;
}
@media (max-width: 720px) {
.neu-layout { grid-template-columns: 1fr; }
.neu-toc { display: none; }
}
.neu-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.85;
}
.neu-toc a {
display: block;
color: inherit;
text-decoration: none;
opacity: 0.75;
transition: opacity 0.1s;
}
.neu-toc a:hover { opacity: 1; color: var(--ecg-green); }
.neu-body {
max-width: 720px;
font-family: var(--font-text);
line-height: 1.65;
color: var(--ecg-dark);
}
.neu-body h2 {
font-family: var(--font-display);
font-size: 20px;
color: var(--ecg-teal);
margin: 2.5rem 0 0.75rem;
padding-bottom: 4px;
border-bottom: 2px solid var(--ecg-teal);
}
.neu-body h2:first-child { margin-top: 0; }
.neu-body h3 {
font-family: var(--font-display);
font-size: 14px;
color: var(--ecg-green);
margin: 1.25rem 0 0.5rem;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.neu-body p { margin: 0.75rem 0; }
.neu-body ul { margin: 0.5rem 0 0.75rem; padding-left: 1.25rem; }
.neu-body li { margin: 0.25rem 0; }
.neu-body code {
font-family: var(--font-mono);
font-size: 0.9em;
background: var(--ecg-card-bg);
padding: 1px 4px;
border-radius: 2px;
}
.neu-body a { color: var(--ecg-blue); }
.neu-hero {
background: var(--ecg-card-bg);
border-left: 4px solid var(--ecg-teal);
padding: 1rem 1.25rem;
margin: 0 0 2rem;
font-family: var(--font-text);
line-height: 1.55;
}
.neu-hero strong { color: var(--ecg-teal); }
.neu-hero .neu-hero-meta {
font-family: var(--font-mono);
font-size: 11px;
color: var(--ecg-dark);
opacity: 0.7;
margin-top: 0.4rem;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.neu-intent-grid {
display: grid;
grid-template-columns: 1fr;
gap: 0.75rem;
margin: 0.75rem 0 1.25rem;
}
.neu-intent {
border: 1px solid var(--ecg-border, #e0d8c8);
border-radius: 4px;
padding: 0.75rem 1rem;
background: var(--ecg-card-bg);
}
.neu-intent .neu-intent-label {
font-family: var(--font-mono);
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--ecg-green);
margin-bottom: 0.25rem;
}
.neu-intent p { margin: 0.25rem 0 0; font-size: 14px; }
</style>
{% endblock %}
{% block main %}
<div class="neu-layout">
<aside class="neu-toc">
<a href="#einstieg">Worum geht es</a>
<a href="#buerger-modus">Bürger:innen-Modus</a>
<a href="#tour">Tour mit Sprachausgabe</a>
<a href="#stimmverhalten">Stimmverhalten</a>
<a href="#aktuelle-themen">Aktuelle Themen</a>
<a href="#programme">Wahlprogramme</a>
<a href="#scorecards">Scorecards</a>
<a href="#auswertungen">Auswertungen</a>
<a href="#quellen">Quellen-Suche</a>
<a href="#sicherheit">Anmeldung</a>
</aside>
<article class="neu-body">
<h2 id="einstieg">Was ist neu in 2.0</h2>
<div class="neu-hero">
Version 2.0 verschiebt den Fokus: weg vom Antragstext-Werkzeug, hin zur
politischen Konsequenzanalyse. Die zentrale Frage lautet jetzt nicht
mehr <em>„Wie gemeinwohlorientiert ist der Antrag?"</em>, sondern
<em>„Stimmen Programmtreue und Abstimmungsverhalten zusammen?"</em>.
Dazu kommen Quellen aus 16 Bundesländern, ein Bürger:innen-Modus und
eine geführte Einführung mit Sprachausgabe.
<div class="neu-hero-meta">Version 2.0 · 2026-05-10 · 230 Commits seit 1.0</div>
</div>
<h2 id="buerger-modus">Bürger:innen-Modus und neues Antrag-Detail</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Ein Antrag soll für Interessierte ohne Politikerfahrung lesbar sein,
nicht nur für Profis. In 1.0 traf die Detailseite gleich mit Profi-Vokabular auf.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Einspaltiges Layout, Score und Kernbotschaft stehen oben.</li>
<li>Fünf-Werte-Bars (Würde, Solidarität, Nachhaltigkeit, Gerechtigkeit, Demokratie)
statt der dichten 5×5-Matrix als erster Eindruck. Die Matrix bleibt darunter
ausklappbar für Profis.</li>
<li>Glossar für Fachbegriffe direkt im Text.</li>
<li>Klickbare Matrix-Zellen mit Begründung pro Feld, statt nur Symbole.</li>
</ul>
<h2 id="tour">Geführte Tour mit Sprachausgabe</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Wer das System neu sieht, soll sich nicht durch Doku quälen müssen.
Lesen ist außerdem mühsam — Vorlesen mit echter Stimme nimmt die Hürde,
nebenbei zu erklären, was passiert.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Pro Seite eigene Stationen, je rund fünf Schritte.</li>
<li>Spotlight-Effekt auf das gerade beschriebene Element.</li>
<li>Sprache: ElevenLabs-Stimme „Domi", deutsch. Web-Speech-Stimme als Fallback,
wenn die Sprachausgabe nicht verfügbar ist.</li>
<li>Aufruf über das Tour-Symbol oben rechts in der Topbar.</li>
</ul>
<h2 id="stimmverhalten">Stimmverhalten und Konsistenz-Marker</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Eine GWÖ-Bewertung allein bleibt abstrakt. Erst der Vergleich zwischen
programmatischer Empfehlung und realem Vote zeigt, ob Fraktionen ihrer
eigenen Programmatik treu bleiben oder sich opportunistisch verhalten.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Plenarprotokolle aus neun Bundesländern und dem Bund automatisch eingelesen
(Brandenburg, Berlin, Bremen, Hamburg, Hessen, NRW, Saarland, Schleswig-Holstein,
Thüringen sowie Bundestag).</li>
<li>Pro Antrag wird sichtbar, welche Fraktion Ja, Nein oder Enthaltung gestimmt hat,
inklusive Mehrheits-Bar.</li>
<li>Heuchelei-Marker (⚠) bei Nein-Stimmen trotz hoher Programmtreue.</li>
<li>Opportunismus-Marker (!) bei Ja-Stimmen trotz niedriger Programmtreue.</li>
<li>Eigener <a href="/stimmverhalten">Stimmverhalten-Tab</a> mit Aufschlüsselung pro Berührungsgruppe (Lieferant*innen, Mitarbeiter*innen, Kund*innen, Gesellschaft, Mitwelt).</li>
</ul>
<h2 id="aktuelle-themen">Aktuelle-Themen-Dashboard mit Pressemitteilungs-Generator</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Politische Anträge stehen nie isoliert. Wo welche aktuelle Nachricht zu
welchem Antrag gehört, soll auf einen Blick sichtbar sein — und sich daraus
sofort ein Pressemitteilungs- oder Mastodon-Thread-Entwurf ziehen lassen,
der Kontext mitnimmt.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>News-Aggregator zieht aus Tagesschau-API und Bundestag-RSS.</li>
<li>Automatischer Match News × Antrag über semantische Ähnlichkeit.</li>
<li>PM-Generator mit zwei Stilen: klassische Pressemitteilung
oder Mastodon-/Twitter-Thread (drei bis fünf Posts, jeweils unter 280 Zeichen).</li>
<li>Versionierung pro DrucksacheNews-Paar, damit Iterationen sichtbar bleiben.</li>
</ul>
<h2 id="programme">Programme aus 15 Jahren — zeitpunkt-genaue Bewertung</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Ein Antrag aus 2018 muss gegen das Wahlprogramm 2017 bewertet werden, nicht
gegen 2022. Anachronismen verzerren die Aussage zur Programmtreue.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>287 Wahl- und Grundsatzprogramme zurück bis 2011 indexiert
(alle 16 Bundesländer plus Bund).</li>
<li>Die Bewertung filtert Embeddings nach dem Antragsdatum und zieht
nur Programme heran, die zum damaligen Zeitpunkt galten.</li>
<li>Im Antrag-Detail steht der Bewertungs-Kontext mit Direktlinks zu den
herangezogenen Programmen.</li>
</ul>
<h2 id="scorecards">Scorecards für Social-Sharing</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Eine Bewertung soll teilbar sein — auf Mastodon, Threads, Instagram.
Jede Plattform hat ihre eigenen Bildformat-Vorlieben.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Vier Layouts: Portrait (Instagram-/Threads-1080×1350), Landscape, klassisch und kompakt.</li>
<li>PNG-Export direkt aus der Antragsseite.</li>
<li>Werkstatt unter <code>/v2/scorecard-werkstatt</code> für Live-Vorschau und Format-Wechsel.</li>
</ul>
<h2 id="auswertungen">Auswertungen über Heuchelei und Konsistenz</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Stark gemittelte Statistiken („SPD-Schnitt 6,4") sind selten aussagekräftig.
Die Frage ist, wo sich Fraktionen widersprechen und wo sie konsistent handeln.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Heuchelei-Quote pro Fraktion, mit Drilldown auf die einzelnen Anträge.</li>
<li>Empfehlungs-Konsistenz-Tab: Wie oft folgt eine Fraktion der GWÖ-Empfehlung?</li>
<li>Score-Histogram statt nur Mittelwert.</li>
<li>Cross-Bundesland-Vergleich: gleiche Fraktion, verschiedene Länder.</li>
<li>CSV-Export der Long-Format-Daten für eigene Analysen.</li>
</ul>
<h2 id="quellen">Quellen-Volltextsuche</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Wer nachschauen will, was eine Partei zu einem bestimmten Thema im
Wahlprogramm geschrieben hat, soll das ohne PDF-Download tun können.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Semantische Suche über alle 287 Programme — nicht nur Stichwort, sondern Bedeutung.</li>
<li>Filter zwischen aktuellen Programmen und „inkl. historisch".</li>
<li>Direkter Link auf die Original-PDF-Seite mit visuell hervorgehobenem Zitat.</li>
</ul>
<h2 id="sicherheit">Anmeldung über Single Sign-On</h2>
<div class="neu-intent-grid">
<div class="neu-intent">
<div class="neu-intent-label">Intention</div>
<p>Lese-Endpoints bleiben offen. Schreib-Endpoints (Bewertung anlegen,
PM generieren, Bookmarks setzen) brauchen eine Anmeldung — ohne zusätzliche
Passwortverwaltung im System selbst.</p>
</div>
</div>
<h3>Umsetzung</h3>
<ul>
<li>Single Sign-On über Keycloak (sso.toppyr.de).</li>
<li>Rollen-Trennung: Standard-User für Bewertung, Admin-Rolle für Batch-Läufe und Auto-Bewertung.</li>
<li>Approve-Flow für neue Konten mit Mail-Benachrichtigung.</li>
</ul>
</article>
</div>
{% endblock %}