gwoe-antragspruefer/site/archive/DOKUMENTATION-2026-03-24/index.html

1694 lines
46 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

<!doctype html>
<html lang="de" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://docs.gwoe.toppyr.de/archive/DOKUMENTATION-2026-03-24/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
<title>GWÖ-Antragsprüfer — Dokumentation - GWÖ-Antragsprüfer Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="teal" data-md-color-accent="light-green">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#gwo-antragsprufer-dokumentation" class="md-skip">
Zum Inhalt
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Kopfzeile">
<a href="../.." title="GWÖ-Antragsprüfer Docs" class="md-header__button md-logo" aria-label="GWÖ-Antragsprüfer Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
GWÖ-Antragsprüfer Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
GWÖ-Antragsprüfer — Dokumentation
</span>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Suche" placeholder="Suche" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Suche">
<button type="reset" class="md-search__icon md-icon" title="Zurücksetzen" aria-label="Zurücksetzen" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Suche wird initialisiert
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
tobias/gwoe-antragspruefer
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="GWÖ-Antragsprüfer Docs" class="md-nav__button md-logo" aria-label="GWÖ-Antragsprüfer Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
GWÖ-Antragsprüfer Docs
</label>
<div class="md-nav__source">
<a href="https://repo.toppyr.de/tobias/gwoe-antragspruefer" title="Zum Repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
tobias/gwoe-antragspruefer
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Start
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-ellipsis">
Architecture Decision Records
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Architecture Decision Records
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../adr/" class="md-nav__link">
<span class="md-ellipsis">
Übersicht
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../adr/0001-llm-citation-binding/" class="md-nav__link">
<span class="md-ellipsis">
0001 LLM-Citation-Binding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../adr/0002-adapter-architecture/" class="md-nav__link">
<span class="md-ellipsis">
0002 Adapter-Architektur
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../adr/0003-citation-property-tests/" class="md-nav__link">
<span class="md-ellipsis">
0003 Citation-Property-Tests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../adr/0004-deployment-workflow/" class="md-nav__link">
<span class="md-ellipsis">
0004 Deployment-Workflow
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="">
<span class="md-ellipsis">
Archiv
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Archiv
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Übersicht
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Inhaltsverzeichnis">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Inhaltsverzeichnis
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#0-datenbank" class="md-nav__link">
<span class="md-ellipsis">
0. Datenbank
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#1-batch-workflow" class="md-nav__link">
<span class="md-ellipsis">
1. Batch-Workflow
</span>
</a>
<nav class="md-nav" aria-label="1. Batch-Workflow">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#vollautomatisiert" class="md-nav__link">
<span class="md-ellipsis">
Vollautomatisiert
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#manuell-schritt-fur-schritt" class="md-nav__link">
<span class="md-ellipsis">
Manuell (Schritt für Schritt)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#api-aufruf-claude" class="md-nav__link">
<span class="md-ellipsis">
API-Aufruf (Claude)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#1-uberblick" class="md-nav__link">
<span class="md-ellipsis">
1. Überblick
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-gewahlte-matrix-v20-fur-gemeinden" class="md-nav__link">
<span class="md-ellipsis">
2. Gewählte Matrix: V2.0 für Gemeinden
</span>
</a>
<nav class="md-nav" aria-label="2. Gewählte Matrix: V2.0 für Gemeinden">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#warum-nicht-matrix-51" class="md-nav__link">
<span class="md-ellipsis">
Warum nicht Matrix 5.1?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#warum-nicht-matrix-21a" class="md-nav__link">
<span class="md-ellipsis">
Warum nicht Matrix 2.1.A?
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#die-matrix-20-fur-gemeinden" class="md-nav__link">
<span class="md-ellipsis">
Die Matrix 2.0 für Gemeinden
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#die-55-struktur" class="md-nav__link">
<span class="md-ellipsis">
Die 5×5-Struktur
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#relevanz-fur-landesantrage" class="md-nav__link">
<span class="md-ellipsis">
Relevanz für Landesanträge
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#3-programmtreue-bewertung" class="md-nav__link">
<span class="md-ellipsis">
3. Programmtreue-Bewertung
</span>
</a>
<nav class="md-nav" aria-label="3. Programmtreue-Bewertung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#zwei-dimensionen" class="md-nav__link">
<span class="md-ellipsis">
Zwei Dimensionen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bewertungsskala" class="md-nav__link">
<span class="md-ellipsis">
Bewertungsskala
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#4-bewertungsskala-gwo" class="md-nav__link">
<span class="md-ellipsis">
4. Bewertungsskala GWÖ
</span>
</a>
<nav class="md-nav" aria-label="4. Bewertungsskala GWÖ">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#matrix-feldwertung" class="md-nav__link">
<span class="md-ellipsis">
Matrix-Feldwertung
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#5-econgood-corporate-design" class="md-nav__link">
<span class="md-ellipsis">
5. ECOnGOOD Corporate Design
</span>
</a>
<nav class="md-nav" aria-label="5. ECOnGOOD Corporate Design">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#branding-aus-cd-manual-2024" class="md-nav__link">
<span class="md-ellipsis">
Branding (aus CD Manual 2024)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#empfehlungs-symbole" class="md-nav__link">
<span class="md-ellipsis">
Empfehlungs-Symbole
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#6-technische-umsetzung" class="md-nav__link">
<span class="md-ellipsis">
6. Technische Umsetzung
</span>
</a>
<nav class="md-nav" aria-label="6. Technische Umsetzung">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#stack" class="md-nav__link">
<span class="md-ellipsis">
Stack
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#projektstruktur" class="md-nav__link">
<span class="md-ellipsis">
Projektstruktur
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#workflow" class="md-nav__link">
<span class="md-ellipsis">
Workflow
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#7-kontext-dateien" class="md-nav__link">
<span class="md-ellipsis">
7. Kontext-Dateien
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#8-getestete-antrage" class="md-nav__link">
<span class="md-ellipsis">
8. Getestete Anträge
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#9-gendering" class="md-nav__link">
<span class="md-ellipsis">
9. Gendering
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#10-quellen" class="md-nav__link">
<span class="md-ellipsis">
10. Quellen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#11-changelog" class="md-nav__link">
<span class="md-ellipsis">
11. Changelog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#session-28032026-nachmittagabend" class="md-nav__link">
<span class="md-ellipsis">
Session 28.03.2026 (Nachmittag/Abend)
</span>
</a>
<nav class="md-nav" aria-label="Session 28.03.2026 (Nachmittag/Abend)">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#security" class="md-nav__link">
<span class="md-ellipsis">
Security
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#v5-prompt-mit-verbesserungsvorschlagen" class="md-nav__link">
<span class="md-ellipsis">
v5-Prompt mit Verbesserungsvorschlägen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#ui-erweiterungen" class="md-nav__link">
<span class="md-ellipsis">
UI-Erweiterungen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#infrastruktur-fixes" class="md-nav__link">
<span class="md-ellipsis">
Infrastruktur-Fixes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#repository" class="md-nav__link">
<span class="md-ellipsis">
Repository
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="gwo-antragsprufer-dokumentation">GWÖ-Antragsprüfer — Dokumentation<a class="headerlink" href="#gwo-antragsprufer-dokumentation" title="Permanent link">&para;</a></h1>
<p><em>Stand: 24. März 2026, 22:15</em></p>
<hr />
<h2 id="0-datenbank">0. Datenbank<a class="headerlink" href="#0-datenbank" title="Permanent link">&para;</a></h2>
<p>Alle Bewertungen werden in einer SQLite-Datenbank gespeichert: <code>gwoe-antraege.db</code></p>
<div class="highlight"><pre><span></span><code><span class="c1"># DB initialisieren (einmalig)</span>
sqlite3<span class="w"> </span>gwoe-antraege.db<span class="w"> </span>&lt;<span class="w"> </span>scripts/init-db.sql
<span class="c1"># Übersicht aller Anträge</span>
sqlite3<span class="w"> </span>-header<span class="w"> </span>-column<span class="w"> </span>gwoe-antraege.db<span class="w"> </span><span class="s2">&quot;SELECT * FROM v_antraege_uebersicht;&quot;</span>
<span class="c1"># Statistik nach Fraktion</span>
sqlite3<span class="w"> </span>-header<span class="w"> </span>-column<span class="w"> </span>gwoe-antraege.db<span class="w"> </span><span class="s2">&quot;SELECT * FROM v_statistik_fraktionen;&quot;</span>
<span class="c1"># Themen-Ranking</span>
sqlite3<span class="w"> </span>-header<span class="w"> </span>-column<span class="w"> </span>gwoe-antraege.db<span class="w"> </span><span class="s2">&quot;SELECT * FROM v_themen_ranking;&quot;</span>
</code></pre></div>
<p>Schema: siehe <code>scripts/init-db.sql</code> und <code>prompt-gwoe-antragspruefer-v4.md</code></p>
<hr />
<h2 id="1-batch-workflow">1. Batch-Workflow<a class="headerlink" href="#1-batch-workflow" title="Permanent link">&para;</a></h2>
<h3 id="vollautomatisiert">Vollautomatisiert<a class="headerlink" href="#vollautomatisiert" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="c1"># Einzelner Antrag</span>
./scripts/process_single.sh<span class="w"> </span><span class="m">18</span>-18102
<span class="c1"># Batch aus Datei</span>
./scripts/gwoe-batch.sh<span class="w"> </span>--batch<span class="w"> </span>neue-antraege.txt
<span class="c1"># Alle neu rendern</span>
./scripts/gwoe-batch.sh<span class="w"> </span>--render-all
</code></pre></div>
<h3 id="manuell-schritt-fur-schritt">Manuell (Schritt für Schritt)<a class="headerlink" href="#manuell-schritt-fur-schritt" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="c1"># 1. PDF herunterladen</span>
curl<span class="w"> </span>-sL<span class="w"> </span><span class="s2">&quot;https://www.landtag.nrw.de/portal/WWW/dokumentenarchiv/Dokument/MMD18-18102.pdf&quot;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-o<span class="w"> </span>antraege/18-18102.pdf
<span class="c1"># 2. Text extrahieren</span>
pdftotext<span class="w"> </span>-layout<span class="w"> </span>antraege/18-18102.pdf<span class="w"> </span>antraege/18-18102.txt
<span class="c1"># 3. LLM analysieren (manuell oder via API)</span>
<span class="c1"># → JSON in assessments.json einfügen</span>
<span class="c1"># 4. data.ts aktualisieren</span>
cat<span class="w"> </span>assessments.json<span class="w"> </span>&gt;<span class="w"> </span>quarto-report/src/data.ts<span class="w"> </span><span class="c1"># vereinfacht</span>
<span class="c1"># 5. Quarto rendern</span>
<span class="nb">cd</span><span class="w"> </span>quarto-report<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>npm<span class="w"> </span>run<span class="w"> </span>generate
<span class="nb">cd</span><span class="w"> </span>reports<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>quarto<span class="w"> </span>render<span class="w"> </span>gwoe-18-18102.qmd<span class="w"> </span>--to<span class="w"> </span>pdf
<span class="c1"># 6. Mit Original mergen</span>
pdftk<span class="w"> </span>quarto-report/reports/gwoe-18-18102.pdf<span class="w"> </span>antraege/18-18102.pdf<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>cat<span class="w"> </span>output<span class="w"> </span>output/gwoe-bericht-18-18102.pdf
</code></pre></div>
<h3 id="api-aufruf-claude">API-Aufruf (Claude)<a class="headerlink" href="#api-aufruf-claude" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>curl<span class="w"> </span>-sS<span class="w"> </span>https://api.anthropic.com/v1/messages<span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-H<span class="w"> </span><span class="s2">&quot;Content-Type: application/json&quot;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-H<span class="w"> </span><span class="s2">&quot;x-api-key: </span><span class="nv">$ANTHROPIC_API_KEY</span><span class="s2">&quot;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-H<span class="w"> </span><span class="s2">&quot;anthropic-version: 2023-06-01&quot;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>-d<span class="w"> </span><span class="s1">&#39;{</span>
<span class="s1"> &quot;model&quot;: &quot;claude-sonnet-4-20250514&quot;,</span>
<span class="s1"> &quot;max_tokens&quot;: 4096,</span>
<span class="s1"> &quot;system&quot;: &quot;&lt;SYSTEM_PROMPT&gt;&quot;,</span>
<span class="s1"> &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;&lt;USER_PROMPT&gt;&quot;}]</span>
<span class="s1"> }&#39;</span>
</code></pre></div>
<hr />
<h2 id="1-uberblick">1. Überblick<a class="headerlink" href="#1-uberblick" title="Permanent link">&para;</a></h2>
<p>Der GWÖ-Antragsprüfer bewertet parlamentarische Anträge (aktuell: NRW Landtag) systematisch nach drei Dimensionen:</p>
<ol>
<li><strong>GWÖ-Treue (0-10):</strong> Übereinstimmung mit der Gemeinwohl-Ökonomie Matrix 2.0</li>
<li><strong>Wahlprogrammtreue (0-10):</strong> Konsistenz mit dem NRW-Wahlprogramm 2022 der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung</li>
<li><strong>Parteiprogrammtreue (0-10):</strong> Konsistenz mit dem Grundsatzprogramm der einreichenden Fraktion(en) und der Fraktionen in Regierungsverantwortung</li>
</ol>
<p>Das Tool generiert professionelle PDF-Berichte mit dem offiziellen ECOnGOOD-Branding.</p>
<hr />
<h2 id="2-gewahlte-matrix-v20-fur-gemeinden">2. Gewählte Matrix: V2.0 für Gemeinden<a class="headerlink" href="#2-gewahlte-matrix-v20-fur-gemeinden" title="Permanent link">&para;</a></h2>
<h3 id="warum-nicht-matrix-51">Warum nicht Matrix 5.1?<a class="headerlink" href="#warum-nicht-matrix-51" title="Permanent link">&para;</a></h3>
<p>Die <strong>GWÖ-Matrix 5.1</strong> ist für Unternehmen konzipiert mit Berührungsgruppen wie "Kund:innen", "Eigentümer:innen", "Mitarbeitende". Diese passen nicht zu parlamentarischen Anträgen.</p>
<h3 id="warum-nicht-matrix-21a">Warum nicht Matrix 2.1.A?<a class="headerlink" href="#warum-nicht-matrix-21a" title="Permanent link">&para;</a></h3>
<p>Die Matrix 2.1.A ist für die "öffentliche Hand" allgemein. Die <strong>Matrix 2.0 für Gemeinden</strong> bietet einen etwas weiteren Blick und ist kompakter formuliert — ideal für parlamentarische Analyse.</p>
<h3 id="die-matrix-20-fur-gemeinden">Die Matrix 2.0 für Gemeinden<a class="headerlink" href="#die-matrix-20-fur-gemeinden" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Aspekt</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Struktur</strong></td>
<td>5×5 (25 Felder)</td>
</tr>
<tr>
<td><strong>Fokus</strong></td>
<td>Kommunale Gebietskörperschaften</td>
</tr>
<tr>
<td><strong>Zielgruppe</strong></td>
<td>Kommunalpolitik, Landesanträge</td>
</tr>
<tr>
<td><strong>Staatsprinzipien</strong></td>
<td>ja (verfassungsrechtlich verankert)</td>
</tr>
</tbody>
</table>
<h3 id="die-55-struktur">Die 5×5-Struktur<a class="headerlink" href="#die-55-struktur" title="Permanent link">&para;</a></h3>
<p><strong>Spalten (Werte des Gemeinwohls + Staatsprinzipien):</strong></p>
<table>
<thead>
<tr>
<th>Nr</th>
<th>Wert</th>
<th>Staatsprinzip</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Menschenwürde</td>
<td>Rechtsstaatsprinzip</td>
</tr>
<tr>
<td>2</td>
<td>Solidarität</td>
<td>Gemeinnutz</td>
</tr>
<tr>
<td>3</td>
<td>Ökologische Nachhaltigkeit</td>
<td>Umwelt-Verantwortung</td>
</tr>
<tr>
<td>4</td>
<td>Soziale Gerechtigkeit</td>
<td>Sozialstaatsprinzip</td>
</tr>
<tr>
<td>5</td>
<td>Transparenz &amp; Mitbestimmung</td>
<td>Demokratie</td>
</tr>
</tbody>
</table>
<p><strong>Zeilen (Berührungsgruppen):</strong></p>
<table>
<thead>
<tr>
<th>Code</th>
<th>Gruppe</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td>A</td>
<td>Ausgelagerte Betriebe, Lieferant:innen, Dienstleister:innen</td>
<td>Externe Beschaffung, Lieferketten</td>
</tr>
<tr>
<td>B</td>
<td>Finanzpartner:innen, Geldgeber:innen, Steuerzahler:innen</td>
<td>Haushalt, Finanzpolitik</td>
</tr>
<tr>
<td>C</td>
<td>Politische Führung, Verwaltung, Ehrenamtliche</td>
<td>Mandatsträger:innen, Mitarbeitende</td>
</tr>
<tr>
<td>D</td>
<td>Bürger:innen und Wirtschaft</td>
<td>Interne Wirkung, Daseinsvorsorge</td>
</tr>
<tr>
<td>E</td>
<td>Staat, Gesellschaft und Natur</td>
<td>Überregionale/langfristige Wirkung</td>
</tr>
</tbody>
</table>
<h3 id="relevanz-fur-landesantrage">Relevanz für Landesanträge<a class="headerlink" href="#relevanz-fur-landesantrage" title="Permanent link">&para;</a></h3>
<p>Die meisten Parlamentsanträge betreffen:
- <strong>D-Zeile:</strong> Wirkung auf Bürger:innen und Wirtschaft im Land
- <strong>E-Zeile:</strong> Überregionale oder langfristige Auswirkungen</p>
<p><strong>Prinzip:</strong> D (intern) hat Vorrang vor E (extern).</p>
<hr />
<h2 id="3-programmtreue-bewertung">3. Programmtreue-Bewertung<a class="headerlink" href="#3-programmtreue-bewertung" title="Permanent link">&para;</a></h2>
<h3 id="zwei-dimensionen">Zwei Dimensionen<a class="headerlink" href="#zwei-dimensionen" title="Permanent link">&para;</a></h3>
<p>Anträge werden sowohl gegen das <strong>Wahlprogramm</strong> als auch gegen das <strong>Grundsatzprogramm</strong> der Fraktionen geprüft:</p>
<table>
<thead>
<tr>
<th>Partei</th>
<th>Wahlprogramm</th>
<th>Grundsatzprogramm</th>
</tr>
</thead>
<tbody>
<tr>
<td>CDU</td>
<td>NRW 2022</td>
<td>"In Freiheit leben" (2024)</td>
</tr>
<tr>
<td>SPD</td>
<td>NRW 2022</td>
<td>Hamburger Programm (2007)</td>
</tr>
<tr>
<td>GRÜNE</td>
<td>NRW 2022</td>
<td>"...zu achten und zu schützen..." (2020)</td>
</tr>
<tr>
<td>FDP</td>
<td>NRW 2022</td>
<td>"Verantwortung für die Freiheit" (2012)</td>
</tr>
<tr>
<td>AfD</td>
<td>NRW 2022</td>
<td>"Programm für Deutschland" (2016)</td>
</tr>
</tbody>
</table>
<h3 id="bewertungsskala">Bewertungsskala<a class="headerlink" href="#bewertungsskala" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Score</th>
<th>Bedeutung</th>
</tr>
</thead>
<tbody>
<tr>
<td>9-10</td>
<td>Vollständige Übereinstimmung</td>
</tr>
<tr>
<td>7-8</td>
<td>Hohe Übereinstimmung</td>
</tr>
<tr>
<td>5-6</td>
<td>Partielle Übereinstimmung</td>
</tr>
<tr>
<td>3-4</td>
<td>Geringe Übereinstimmung</td>
</tr>
<tr>
<td>1-2</td>
<td>Widerspricht Teilaspekten</td>
</tr>
<tr>
<td>0</td>
<td>Vollständiger Widerspruch</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="4-bewertungsskala-gwo">4. Bewertungsskala GWÖ<a class="headerlink" href="#4-bewertungsskala-gwo" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Punkte</th>
<th>Stufe</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td>7-10</td>
<td><strong>Vorbildlich</strong></td>
<td>Innovative Maßnahmen, weitreichende Verbesserungen</td>
</tr>
<tr>
<td>4-6</td>
<td><strong>Erfahren</strong></td>
<td>Erkennbare Verbesserungen, gute Ergebnisse</td>
</tr>
<tr>
<td>2-3</td>
<td><strong>Fortgeschritten</strong></td>
<td>Erste Maßnahmen, erste Erfolge</td>
</tr>
<tr>
<td>1</td>
<td><strong>Erste Schritte</strong></td>
<td>Erstes Engagement</td>
</tr>
<tr>
<td>0</td>
<td><strong>Basislinie</strong></td>
<td>Nur gesetzliche Anforderungen</td>
</tr>
<tr>
<td>negativ</td>
<td><strong>Widerspruch</strong></td>
<td>Aktiver Widerspruch zu GWÖ-Werten</td>
</tr>
</tbody>
</table>
<h3 id="matrix-feldwertung">Matrix-Feldwertung<a class="headerlink" href="#matrix-feldwertung" title="Permanent link">&para;</a></h3>
<p>Für jedes berührte Feld im Antrag:
- <code>++</code> (+2/+3): Stark fördernd
- <code>+</code> (+1): Fördernd
- <code></code> (0): Neutral
- <code></code> (-1): Widersprechend
- <code></code> (-2/-3): Stark widersprechend</p>
<hr />
<h2 id="5-econgood-corporate-design">5. ECOnGOOD Corporate Design<a class="headerlink" href="#5-econgood-corporate-design" title="Permanent link">&para;</a></h2>
<h3 id="branding-aus-cd-manual-2024">Branding (aus CD Manual 2024)<a class="headerlink" href="#branding-aus-cd-manual-2024" title="Permanent link">&para;</a></h3>
<p>Das Layout folgt strikt dem offiziellen ECOnGOOD Corporate Design Manual (Juni 2024).</p>
<p><strong>Farbpalette (Primärfarben aus Logo):</strong></p>
<table>
<thead>
<tr>
<th>Farbe</th>
<th>Hex</th>
<th>CMYK</th>
<th>Pantone</th>
<th>Verwendung</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Dunkelgrau</strong></td>
<td><code>#5a5a5a</code></td>
<td>0-0-0-80</td>
<td>425 U</td>
<td>Fließtext, H1-Überschriften</td>
</tr>
<tr>
<td><strong>Grün</strong></td>
<td><code>#889e33</code></td>
<td>40-10-90-20</td>
<td>583 U</td>
<td>Positive Werte, H3, Akzente</td>
</tr>
<tr>
<td><strong>Blau</strong></td>
<td><code>#009da5</code></td>
<td>100-10-40-00</td>
<td>320 U</td>
<td>Hauptfarbe, H2, Links, Linien</td>
</tr>
<tr>
<td><strong>Hellgrau</strong></td>
<td><code>#bfbfbf</code></td>
<td>0-0-0-30</td>
<td>421 U</td>
<td>Hintergründe, Fußzeilen</td>
</tr>
</tbody>
</table>
<p><strong>Typografie:</strong>
- <strong>Primär:</strong> Avenir (light, roman, black)
- <strong>Fallback:</strong> Arial
- <strong>Web:</strong> Avenir
- <strong>Überschriften:</strong>
- H1: Avenir black, 22pt, Dunkelgrau
- H2: Avenir black, 16pt, Blau oder Grün
- H3: Avenir black, 12pt, Blau oder Grün
- <strong>Fließtext:</strong> Avenir roman, 10pt, Dunkelgrau
- <strong>Hervorhebungen:</strong> Avenir black</p>
<p><strong>Logo:</strong> ECOnGOOD-Logo (<code>econgood-logo.png</code>) — zwei stilisierte Pusteblumen (Blau + Grün)</p>
<p><strong>Boxen (CD-konform):</strong>
- Flächig farbig (Grün oder Blau) mit weißem Text
- Oder mit farbiger Outline und farbigem Text
- Keine abgerundeten Ecken (arc=0pt)</p>
<p><strong>Tabellen:</strong>
- Titelleiste in Markenfarbe (Blau)
- Weißer Text in Titelleiste, fett, Großbuchstaben
- Innere horizontale Linien max. 1pt
- 3mm Abstand zwischen Text und Linie</p>
<p><strong>Layout:</strong>
- Offenes, leichtes Design
- Reinweißer Hintergrund
- Kräftige Farben (aktiv)
- Genug Weißraum zwischen Elementen</p>
<h3 id="empfehlungs-symbole">Empfehlungs-Symbole<a class="headerlink" href="#empfehlungs-symbole" title="Permanent link">&para;</a></h3>
<table>
<thead>
<tr>
<th>Empfehlung</th>
<th>Symbol</th>
<th>Farbe</th>
<th>Hex</th>
</tr>
</thead>
<tbody>
<tr>
<td>Uneingeschränkt unterstützen</td>
<td><code>[++]</code></td>
<td>Grün</td>
<td><code>#889e33</code></td>
</tr>
<tr>
<td>Unterstützen mit Änderungen</td>
<td><code>[+]</code></td>
<td>Blau</td>
<td><code>#009da5</code></td>
</tr>
<tr>
<td>Überarbeiten</td>
<td><code>[!]</code></td>
<td>Orange</td>
<td><code>#F7941D</code></td>
</tr>
<tr>
<td>Ablehnen</td>
<td><code>[X]</code></td>
<td>Rot</td>
<td><code>#d00000</code></td>
</tr>
</tbody>
</table>
<hr />
<h2 id="6-technische-umsetzung">6. Technische Umsetzung<a class="headerlink" href="#6-technische-umsetzung" title="Permanent link">&para;</a></h2>
<h3 id="stack">Stack<a class="headerlink" href="#stack" title="Permanent link">&para;</a></h3>
<ul>
<li><strong>TypeScript</strong> — Datentypen, Generator</li>
<li><strong>Quarto</strong> — Markdown → PDF (via LuaLaTeX)</li>
<li><strong>TikZ</strong> — Grafische Elemente (Score-Balken)</li>
<li><strong>pdftk</strong> — PDF-Merge (Bewertung + Original-Antrag)</li>
</ul>
<h3 id="projektstruktur">Projektstruktur<a class="headerlink" href="#projektstruktur" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code>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
</code></pre></div>
<h3 id="workflow">Workflow<a class="headerlink" href="#workflow" title="Permanent link">&para;</a></h3>
<ol>
<li>LLM analysiert Antrag → JSON-Ausgabe</li>
<li>JSON → TypeScript Assessment-Objekt</li>
<li>Generator erzeugt <code>.qmd</code> (Quarto Markdown)</li>
<li>Quarto rendert → PDF</li>
<li>pdftk merged Bewertung + Original-Antrag</li>
</ol>
<hr />
<h2 id="7-kontext-dateien">7. Kontext-Dateien<a class="headerlink" href="#7-kontext-dateien" title="Permanent link">&para;</a></h2>
<p>Im Ordner <code>kontext/</code>:</p>
<table>
<thead>
<tr>
<th>Datei</th>
<th>Beschreibung</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>gwoe-matrix-2.0.md</code></td>
<td>Matrix 2.0 für Gemeinden — vollständige Dokumentation</td>
</tr>
<tr>
<td><code>gwoe-matrix-2.0-gemeinden.pdf</code></td>
<td>Offizielles Matrix-PDF</td>
</tr>
<tr>
<td><code>gwoe-arbeitsbuch-gemeinden-2.0.pdf</code></td>
<td>Arbeitsbuch zur Matrix</td>
</tr>
<tr>
<td><code>parteiprogramme.md</code></td>
<td>Kurzreferenz Wahlprogramme + Grundsatzprogramme</td>
</tr>
<tr>
<td><code>cdu-grundsatzprogramm-2024.pdf</code></td>
<td>CDU "In Freiheit leben"</td>
</tr>
<tr>
<td><code>spd-hamburger-programm-2007.pdf</code></td>
<td>SPD Hamburger Programm</td>
</tr>
<tr>
<td><code>gruene-grundsatzprogramm-2020.pdf</code></td>
<td>Grüne Grundsatzprogramm</td>
</tr>
<tr>
<td><code>fdp-grundsatzprogramm-2012.pdf</code></td>
<td>FDP "Verantwortung für die Freiheit"</td>
</tr>
<tr>
<td><code>afd-grundsatzprogramm-2016.pdf</code></td>
<td>AfD "Programm für Deutschland"</td>
</tr>
<tr>
<td><code>wahlprogramme-nrw-2022.md</code></td>
<td>NRW Wahlprogramme 2022</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="8-getestete-antrage">8. Getestete Anträge<a class="headerlink" href="#8-getestete-antrage" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Drucksache</th>
<th>Titel</th>
<th>GWÖ</th>
<th>Empfehlung</th>
</tr>
</thead>
<tbody>
<tr>
<td>18/18081</td>
<td>Schlechte-Kita-Gesetz stoppen (SPD)</td>
<td>8/10</td>
<td>Uneingeschränkt unterstützen</td>
</tr>
<tr>
<td>18/18088</td>
<td>Iran-Solidarität (alle)</td>
<td>9/10</td>
<td>Uneingeschränkt unterstützen</td>
</tr>
<tr>
<td>18/18094</td>
<td>Versorgungssicherheit/Fracking (AfD)</td>
<td>1/10</td>
<td>Ablehnen</td>
</tr>
<tr>
<td>18/18099</td>
<td>Kultur-Schecks (CDU/Grüne)</td>
<td>6/10</td>
<td>Unterstützen mit Änderungen</td>
</tr>
<tr>
<td>18/18104</td>
<td>KI-Korrektur (FDP)</td>
<td>6/10</td>
<td>Unterstützen mit Änderungen</td>
</tr>
</tbody>
</table>
<hr />
<h2 id="9-gendering">9. Gendering<a class="headerlink" href="#9-gendering" title="Permanent link">&para;</a></h2>
<p><strong>Standard:</strong> <code>:</code> (Doppelpunkt) statt <code>*</code> (Sternchen)</p>
<p>Beispiele:
- Bürger:innen
- Lieferant:innen
- Mitarbeiter:innen</p>
<hr />
<h2 id="10-quellen">10. Quellen<a class="headerlink" href="#10-quellen" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>GWÖ-Matrix 2.0:</strong> https://germany.econgood.org/wp-content/uploads/sites/8/2024/04/Matrix-Gemeinwohl-Bilanzierung-Gemeinden-V2.0.pdf</li>
<li><strong>Arbeitsbuch 2.0:</strong> https://austria.econgood.org/wp-content/uploads/sites/7/2022/01/Arbeitsbuch-Gemeinden_2.pdf</li>
<li><strong>ECOnGOOD CD Manual:</strong> Corporate Design/2024_ECOnGOOD_Manual_DE_Juni_02.pdf</li>
<li><strong>GWÖ Deutschland:</strong> https://germany.econgood.org</li>
<li><strong>Kontakt:</strong> Gemeinde@ecogood.org</li>
</ul>
<hr />
<h2 id="11-changelog">11. Changelog<a class="headerlink" href="#11-changelog" title="Permanent link">&para;</a></h2>
<table>
<thead>
<tr>
<th>Datum</th>
<th>Version</th>
<th>Änderung</th>
</tr>
</thead>
<tbody>
<tr>
<td>24.03.2026</td>
<td>v4</td>
<td>Matrix 2.0 statt 2.1.A, Parteiprogrammtreue ergänzt, <code>:</code> beim Gendern, ECOnGOOD-Logo</td>
</tr>
<tr>
<td>23.03.2026</td>
<td>v3</td>
<td>Umstellung auf Matrix 2.1.A (5×5), GWÖ-Branding</td>
</tr>
<tr>
<td>23.03.2026</td>
<td>v2</td>
<td>Vollständiger Kontext (Matrix + Wahlprogramme)</td>
</tr>
<tr>
<td>23.03.2026</td>
<td>v1</td>
<td>Initiale Version mit Matrix 5.1</td>
</tr>
</tbody>
</table>
<hr />
<p><em>Projektordner:</em> <code>~/Nextcloud/dotty/projekte/2026-03-23 GWÖ-Antragsprüfer _WIP_/</code>
<em>Telegram:</em> https://t.me/c/3823618505/4247</p>
<hr />
<h2 id="session-28032026-nachmittagabend">Session 28.03.2026 (Nachmittag/Abend)<a class="headerlink" href="#session-28032026-nachmittagabend" title="Permanent link">&para;</a></h2>
<h3 id="security">Security<a class="headerlink" href="#security" title="Permanent link">&para;</a></h3>
<ul>
<li>CSP, X-Frame-Options, X-XSS-Protection etc. als Middleware</li>
<li>/docs deaktiviert</li>
</ul>
<h3 id="v5-prompt-mit-verbesserungsvorschlagen">v5-Prompt mit Verbesserungsvorschlägen<a class="headerlink" href="#v5-prompt-mit-verbesserungsvorschlagen" title="Permanent link">&para;</a></h3>
<p>Neues Format:
<div class="highlight"><pre><span></span><code><span class="p">{</span>
<span class="w"> </span><span class="nt">&quot;original&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Zitat aus Antrag&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;vorschlag&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;Verbesserter Text mit **Markierungen**&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="nt">&quot;begruendung&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;GWÖ-Begründung&quot;</span>
<span class="p">}</span>
</code></pre></div></p>
<h3 id="ui-erweiterungen">UI-Erweiterungen<a class="headerlink" href="#ui-erweiterungen" title="Permanent link">&para;</a></h3>
<ul>
<li>Partei-Filter (Dropdown)</li>
<li>Tag-Wolke mit Multi-Select</li>
<li>Partei-Durchschnitte in Stats-Bar</li>
<li>Kombinierte Filter (Score + Partei)</li>
</ul>
<h3 id="infrastruktur-fixes">Infrastruktur-Fixes<a class="headerlink" href="#infrastruktur-fixes" title="Permanent link">&para;</a></h3>
<ul>
<li>DB-Persistenz: Dockerfile kopiert data/ nicht mehr</li>
<li>JSON-Import deaktiviert</li>
<li>Retry-Logik für LLM (3 Versuche)</li>
</ul>
<h3 id="repository">Repository<a class="headerlink" href="#repository" title="Permanent link">&para;</a></h3>
<ul>
<li>https://repo.toppyr.de/tobias/gwoe-antragspruefer</li>
<li>MIT License</li>
<li>Vollständige Dokumentation</li>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["navigation.sections", "navigation.expand", "search.highlight"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "In Zwischenablage kopiert", "clipboard.copy": "In Zwischenablage kopieren", "search.result.more.one": "1 weiteres Suchergebnis auf dieser Seite", "search.result.more.other": "# weitere Suchergebnisse auf dieser Seite", "search.result.none": "Keine Suchergebnisse", "search.result.one": "1 Suchergebnis", "search.result.other": "# Suchergebnisse", "search.result.placeholder": "Suchbegriff eingeben", "search.result.term.missing": "Es fehlt", "select.version": "Version ausw\u00e4hlen"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>