- Werte-Bars sind aus dem UI raus, raus aus dem Text - 'Buerger:innen-Modus' war nur intern als v3-Label gedacht; aussen heisst es einfach 'neu gestaltetes Antrag-Detail' mit dem Anspruch, sich Schritt fuer Schritt selbst zu erklaeren - Programm-Treue-Grid + Glossar + klickbare Matrix-Zellen als Umsetzung
324 lines
11 KiB
HTML
324 lines
11 KiB
HTML
{% 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">Antrag-Detail neu</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, eine neu gestaltete
|
||
Antrag-Ansicht 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">Neu gestaltetes Antrag-Detail</h2>
|
||
|
||
<div class="neu-intent-grid">
|
||
<div class="neu-intent">
|
||
<div class="neu-intent-label">Intention</div>
|
||
<p>Ein Antrag soll auch ohne politisches Vorwissen lesbar sein. In 1.0 traf
|
||
die Detailseite gleich mit Profi-Vokabular auf — jetzt erklärt sich die Seite
|
||
Schritt für Schritt selbst, von der Kernbotschaft oben bis zur GWÖ-Matrix darunter.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<h3>Umsetzung</h3>
|
||
<ul>
|
||
<li>Einspaltiges Layout, Score und Kernbotschaft stehen oben.</li>
|
||
<li>Programm-Treue als zwei-spaltiges Grid mit Begründungen pro Fraktion,
|
||
statt verschachtelter Listen.</li>
|
||
<li>Glossar und Tooltips 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 Drucksache–News-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 %}
|