382 lines
12 KiB
Markdown
382 lines
12 KiB
Markdown
|
|
# GWÖ-Antragsprüfer — Dokumentation
|
|||
|
|
|
|||
|
|
*Stand: 24. März 2026, 22:15*
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 0. Datenbank
|
|||
|
|
|
|||
|
|
Alle Bewertungen werden in einer SQLite-Datenbank gespeichert: `gwoe-antraege.db`
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 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
|
|||
|
|
```bash
|
|||
|
|
# 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)
|
|||
|
|
```bash
|
|||
|
|
# 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)
|
|||
|
|
```bash
|
|||
|
|
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
|
|||
|
|
|
|||
|
|
- **GWÖ-Matrix 2.0:** https://germany.econgood.org/wp-content/uploads/sites/8/2024/04/Matrix-Gemeinwohl-Bilanzierung-Gemeinden-V2.0.pdf
|
|||
|
|
- **Arbeitsbuch 2.0:** https://austria.econgood.org/wp-content/uploads/sites/7/2022/01/Arbeitsbuch-Gemeinden_2.pdf
|
|||
|
|
- **ECOnGOOD CD Manual:** Corporate Design/2024_ECOnGOOD_Manual_DE_Juni_02.pdf
|
|||
|
|
- **GWÖ Deutschland:** https://germany.econgood.org
|
|||
|
|
- **Kontakt:** Gemeinde@ecogood.org
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"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
|
|||
|
|
- https://repo.toppyr.de/tobias/gwoe-antragspruefer
|
|||
|
|
- MIT License
|
|||
|
|
- Vollständige Dokumentation
|