gwoe-antragspruefer/docs/archive/DOKUMENTATION-2026-03-24.md
Dotty Dotter 45379a2639 #62 Phase 1+3: ADRs + Doku-Struktur in webapp/docs/
Architektur-Entscheidung aus Issue #62: Diátaxis-Framework für Doku-
Pflege ohne Drift. Pflege im Repo, ADRs immutable, Stale-Snapshots
explizit als Archiv markiert.

Phase 1 — Architecture Decision Records:

- docs/README.md — Diátaxis-Index, Erklärung was wo dokumentiert wird
- docs/adr/README.md — ADR-Workflow + Index
- docs/adr/template.md — Vorlage für neue ADRs
- docs/adr/0001-llm-citation-binding.md — Issue #60 Doppel-Fix-Story
  (A=ENUM-Anker, B=server-seitige Rekonstruktion, warum Option C verworfen)
- docs/adr/0002-adapter-architecture.md — ParlamentAdapter-Basisklasse
  + Registry, Klassen vs. Strategy vs. Modul-pro-Adapter
- docs/adr/0003-citation-property-tests.md — Sub-D Strategie, warum
  Property-Test gegen echte PDFs statt Schema-Tests oder Online-Verify
- docs/adr/0004-deployment-workflow.md — Docker-Compose + Volumes
  Standard-Workflow + SN-XML-Sonderpfad + Container-UTC-Gotcha

Phase 3 — Stale Doku archiviert:

- DOKUMENTATION.md (24.März, Skript-Architektur vor Webapp-Migrate)
  → docs/archive/DOKUMENTATION-2026-03-24.md
- STATUS-2026-03-28.md (Tagesstand-Snapshot)
  → docs/archive/STATUS-2026-03-28.md
- README.md (28.März, listet nur NRW-Adapter, vor 16 weiteren BLs)
  → docs/archive/README-2026-03-28.md
- docs/archive/README.md erklärt warum die Files da sind und warum
  niemand sie überschreiben oder ersetzen sollte

Plus neue Top-Level-README.md im Project-Root (außerhalb git, da
project-root kein Repo ist) als Folder-Index für den User.

CLAUDE.md ergänzt um Doku-Sektion mit Verweis auf docs/adr/.

Phase 2 (mkdocs Setup) folgt separat — braucht eine Docker-Image-
Erweiterung, die ich nicht autark einrollen will ohne Decision.

Tests: 194/194 grün (keine Code-Änderung).

Refs: #62
2026-04-10 01:38:03 +02:00

12 KiB
Raw Permalink Blame History

GWÖ-Antragsprüfer — Dokumentation

Stand: 24. März 2026, 22:15


0. Datenbank

Alle Bewertungen werden in einer SQLite-Datenbank gespeichert: gwoe-antraege.db

# DB initialisieren (einmalig)
sqlite3 gwoe-antraege.db < scripts/init-db.sql

# Übersicht aller Anträge
sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_antraege_uebersicht;"

# Statistik nach Fraktion
sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_statistik_fraktionen;"

# Themen-Ranking
sqlite3 -header -column gwoe-antraege.db "SELECT * FROM v_themen_ranking;"

Schema: siehe scripts/init-db.sql und prompt-gwoe-antragspruefer-v4.md


1. Batch-Workflow

Vollautomatisiert

# Einzelner Antrag
./scripts/process_single.sh 18-18102

# Batch aus Datei
./scripts/gwoe-batch.sh --batch neue-antraege.txt

# Alle neu rendern
./scripts/gwoe-batch.sh --render-all

Manuell (Schritt für Schritt)

# 1. PDF herunterladen
curl -sL "https://www.landtag.nrw.de/portal/WWW/dokumentenarchiv/Dokument/MMD18-18102.pdf" \
  -o antraege/18-18102.pdf

# 2. Text extrahieren
pdftotext -layout antraege/18-18102.pdf antraege/18-18102.txt

# 3. LLM analysieren (manuell oder via API)
# → JSON in assessments.json einfügen

# 4. data.ts aktualisieren
cat assessments.json > quarto-report/src/data.ts  # vereinfacht

# 5. Quarto rendern
cd quarto-report && npm run generate
cd reports && quarto render gwoe-18-18102.qmd --to pdf

# 6. Mit Original mergen
pdftk quarto-report/reports/gwoe-18-18102.pdf antraege/18-18102.pdf \
  cat output output/gwoe-bericht-18-18102.pdf

API-Aufruf (Claude)

curl -sS https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 4096,
    "system": "<SYSTEM_PROMPT>",
    "messages": [{"role": "user", "content": "<USER_PROMPT>"}]
  }'

1. Überblick

Der GWÖ-Antragsprüfer bewertet parlamentarische Anträge (aktuell: NRW Landtag) systematisch nach drei Dimensionen:

  1. GWÖ-Treue (0-10): Übereinstimmung mit der Gemeinwohl-Ökonomie Matrix 2.0
  2. Wahlprogrammtreue (0-10): Konsistenz mit dem NRW-Wahlprogramm 2022 der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung
  3. Parteiprogrammtreue (0-10): Konsistenz mit dem Grundsatzprogramm der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung

Das Tool generiert professionelle PDF-Berichte mit dem offiziellen ECOnGOOD-Branding.


2. Gewählte Matrix: V2.0 für Gemeinden

Warum nicht Matrix 5.1?

Die GWÖ-Matrix 5.1 ist für Unternehmen konzipiert mit Berührungsgruppen wie "Kund:innen", "Eigentümer:innen", "Mitarbeitende". Diese passen nicht zu parlamentarischen Anträgen.

Warum nicht Matrix 2.1.A?

Die Matrix 2.1.A ist für die "öffentliche Hand" allgemein. Die Matrix 2.0 für Gemeinden bietet einen etwas weiteren Blick und ist kompakter formuliert — ideal für parlamentarische Analyse.

Die Matrix 2.0 für Gemeinden

Aspekt Beschreibung
Struktur 5×5 (25 Felder)
Fokus Kommunale Gebietskörperschaften
Zielgruppe Kommunalpolitik, Landesanträge
Staatsprinzipien ja (verfassungsrechtlich verankert)

Die 5×5-Struktur

Spalten (Werte des Gemeinwohls + Staatsprinzipien):

Nr Wert Staatsprinzip
1 Menschenwürde Rechtsstaatsprinzip
2 Solidarität Gemeinnutz
3 Ökologische Nachhaltigkeit Umwelt-Verantwortung
4 Soziale Gerechtigkeit Sozialstaatsprinzip
5 Transparenz & Mitbestimmung Demokratie

Zeilen (Berührungsgruppen):

Code Gruppe Beschreibung
A Ausgelagerte Betriebe, Lieferant:innen, Dienstleister:innen Externe Beschaffung, Lieferketten
B Finanzpartner:innen, Geldgeber:innen, Steuerzahler:innen Haushalt, Finanzpolitik
C Politische Führung, Verwaltung, Ehrenamtliche Mandatsträger:innen, Mitarbeitende
D Bürger:innen und Wirtschaft Interne Wirkung, Daseinsvorsorge
E Staat, Gesellschaft und Natur Überregionale/langfristige Wirkung

Relevanz für Landesanträge

Die meisten Parlamentsanträge betreffen:

  • D-Zeile: Wirkung auf Bürger:innen und Wirtschaft im Land
  • E-Zeile: Überregionale oder langfristige Auswirkungen

Prinzip: D (intern) hat Vorrang vor E (extern).


3. Programmtreue-Bewertung

Zwei Dimensionen

Anträge werden sowohl gegen das Wahlprogramm als auch gegen das Grundsatzprogramm der Fraktionen geprüft:

Partei Wahlprogramm Grundsatzprogramm
CDU NRW 2022 "In Freiheit leben" (2024)
SPD NRW 2022 Hamburger Programm (2007)
GRÜNE NRW 2022 "...zu achten und zu schützen..." (2020)
FDP NRW 2022 "Verantwortung für die Freiheit" (2012)
AfD NRW 2022 "Programm für Deutschland" (2016)

Bewertungsskala

Score Bedeutung
9-10 Vollständige Übereinstimmung
7-8 Hohe Übereinstimmung
5-6 Partielle Übereinstimmung
3-4 Geringe Übereinstimmung
1-2 Widerspricht Teilaspekten
0 Vollständiger Widerspruch

4. Bewertungsskala GWÖ

Punkte Stufe Beschreibung
7-10 Vorbildlich Innovative Maßnahmen, weitreichende Verbesserungen
4-6 Erfahren Erkennbare Verbesserungen, gute Ergebnisse
2-3 Fortgeschritten Erste Maßnahmen, erste Erfolge
1 Erste Schritte Erstes Engagement
0 Basislinie Nur gesetzliche Anforderungen
negativ Widerspruch Aktiver Widerspruch zu GWÖ-Werten

Matrix-Feldwertung

Für jedes berührte Feld im Antrag:

  • ++ (+2/+3): Stark fördernd
  • + (+1): Fördernd
  • (0): Neutral
  • (-1): Widersprechend
  • (-2/-3): Stark widersprechend

5. ECOnGOOD Corporate Design

Branding (aus CD Manual 2024)

Das Layout folgt strikt dem offiziellen ECOnGOOD Corporate Design Manual (Juni 2024).

Farbpalette (Primärfarben aus Logo):

Farbe Hex CMYK Pantone Verwendung
Dunkelgrau #5a5a5a 0-0-0-80 425 U Fließtext, H1-Überschriften
Grün #889e33 40-10-90-20 583 U Positive Werte, H3, Akzente
Blau #009da5 100-10-40-00 320 U Hauptfarbe, H2, Links, Linien
Hellgrau #bfbfbf 0-0-0-30 421 U Hintergründe, Fußzeilen

Typografie:

  • Primär: Avenir (light, roman, black)
  • Fallback: Arial
  • Web: Avenir
  • Überschriften:
    • H1: Avenir black, 22pt, Dunkelgrau
    • H2: Avenir black, 16pt, Blau oder Grün
    • H3: Avenir black, 12pt, Blau oder Grün
  • Fließtext: Avenir roman, 10pt, Dunkelgrau
  • Hervorhebungen: Avenir black

Logo: ECOnGOOD-Logo (econgood-logo.png) — zwei stilisierte Pusteblumen (Blau + Grün)

Boxen (CD-konform):

  • Flächig farbig (Grün oder Blau) mit weißem Text
  • Oder mit farbiger Outline und farbigem Text
  • Keine abgerundeten Ecken (arc=0pt)

Tabellen:

  • Titelleiste in Markenfarbe (Blau)
  • Weißer Text in Titelleiste, fett, Großbuchstaben
  • Innere horizontale Linien max. 1pt
  • 3mm Abstand zwischen Text und Linie

Layout:

  • Offenes, leichtes Design
  • Reinweißer Hintergrund
  • Kräftige Farben (aktiv)
  • Genug Weißraum zwischen Elementen

Empfehlungs-Symbole

Empfehlung Symbol Farbe Hex
Uneingeschränkt unterstützen [++] Grün #889e33
Unterstützen mit Änderungen [+] Blau #009da5
Überarbeiten [!] Orange #F7941D
Ablehnen [X] Rot #d00000

6. Technische Umsetzung

Stack

  • TypeScript — Datentypen, Generator
  • Quarto — Markdown → PDF (via LuaLaTeX)
  • TikZ — Grafische Elemente (Score-Balken)
  • pdftk — PDF-Merge (Bewertung + Original-Antrag)

Projektstruktur

quarto-report/
├── src/
│   ├── types.ts       # Datentypen, Matrix-Labels
│   ├── data.ts        # Testbewertungen
│   └── generate-qmd.ts # Quarto-Generator
├── reports/           # Generierte .qmd + .pdf
├── econgood-logo.png  # Logo (aus CD Manual)
└── package.json

Workflow

  1. LLM analysiert Antrag → JSON-Ausgabe
  2. JSON → TypeScript Assessment-Objekt
  3. Generator erzeugt .qmd (Quarto Markdown)
  4. Quarto rendert → PDF
  5. pdftk merged Bewertung + Original-Antrag

7. Kontext-Dateien

Im Ordner kontext/:

Datei Beschreibung
gwoe-matrix-2.0.md Matrix 2.0 für Gemeinden — vollständige Dokumentation
gwoe-matrix-2.0-gemeinden.pdf Offizielles Matrix-PDF
gwoe-arbeitsbuch-gemeinden-2.0.pdf Arbeitsbuch zur Matrix
parteiprogramme.md Kurzreferenz Wahlprogramme + Grundsatzprogramme
cdu-grundsatzprogramm-2024.pdf CDU "In Freiheit leben"
spd-hamburger-programm-2007.pdf SPD Hamburger Programm
gruene-grundsatzprogramm-2020.pdf Grüne Grundsatzprogramm
fdp-grundsatzprogramm-2012.pdf FDP "Verantwortung für die Freiheit"
afd-grundsatzprogramm-2016.pdf AfD "Programm für Deutschland"
wahlprogramme-nrw-2022.md NRW Wahlprogramme 2022

8. Getestete Anträge

Drucksache Titel GWÖ Empfehlung
18/18081 Schlechte-Kita-Gesetz stoppen (SPD) 8/10 Uneingeschränkt unterstützen
18/18088 Iran-Solidarität (alle) 9/10 Uneingeschränkt unterstützen
18/18094 Versorgungssicherheit/Fracking (AfD) 1/10 Ablehnen
18/18099 Kultur-Schecks (CDU/Grüne) 6/10 Unterstützen mit Änderungen
18/18104 KI-Korrektur (FDP) 6/10 Unterstützen mit Änderungen

9. Gendering

Standard: : (Doppelpunkt) statt * (Sternchen)

Beispiele:

  • Bürger:innen
  • Lieferant:innen
  • Mitarbeiter:innen

10. Quellen


11. Changelog

Datum Version Änderung
24.03.2026 v4 Matrix 2.0 statt 2.1.A, Parteiprogrammtreue ergänzt, : beim Gendern, ECOnGOOD-Logo
23.03.2026 v3 Umstellung auf Matrix 2.1.A (5×5), GWÖ-Branding
23.03.2026 v2 Vollständiger Kontext (Matrix + Wahlprogramme)
23.03.2026 v1 Initiale Version mit Matrix 5.1

Projektordner: ~/Nextcloud/dotty/projekte/2026-03-23 GWÖ-Antragsprüfer _WIP_/ Telegram: https://t.me/c/3823618505/4247


Session 28.03.2026 (Nachmittag/Abend)

Security

  • CSP, X-Frame-Options, X-XSS-Protection etc. als Middleware
  • /docs deaktiviert

v5-Prompt mit Verbesserungsvorschlägen

Neues Format:

{
  "original": "Zitat aus Antrag",
  "vorschlag": "Verbesserter Text mit **Markierungen**",
  "begruendung": "GWÖ-Begründung"
}

UI-Erweiterungen

  • Partei-Filter (Dropdown)
  • Tag-Wolke mit Multi-Select
  • Partei-Durchschnitte in Stats-Bar
  • Kombinierte Filter (Score + Partei)

Infrastruktur-Fixes

  • DB-Persistenz: Dockerfile kopiert data/ nicht mehr
  • JSON-Import deaktiviert
  • Retry-Logik für LLM (3 Versuche)

Repository