gwoe-antragspruefer/CHANGELOG.md
Dotty Dotter 20b33c7560 release(1.0): README + CHANGELOG + DATA-LICENSE (CC-BY-4.0)
- README.md: aktuelle Inhalte (16 BL + BT, alle Features), Doppel-Lizenz, Schnellstart, Statistiken
- CHANGELOG.md: vollstaendige 1.0-Notes mit Hinzugefuegt/Geaendert/Bekannte-Einschraenkungen/Sicherheit
- DATA-LICENSE: Creative-Commons-Attribution-4.0-International fuer Bewertungs-Daten/Reports
- LICENSE (MIT) bleibt unveraendert fuer den Quellcode

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-25 20:59:28 +02:00

101 lines
6.3 KiB
Markdown
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.

# Changelog
Alle markanten Änderungen pro Release. Format an [Keep a Changelog](https://keepachangelog.com/de/1.1.0/) angelehnt, semantisches Versioning.
## [1.0.0] — 2026-04-21
Erstes konsolidiertes Release nach längerer 0.x-Entwicklungsphase. Live unter
<https://gwoe.toppyr.de/>.
### Hinzugefügt — Frontend (v2)
- **Komplettes Redesign** auf das ECOnGOOD Corporate Design (Manual Juni 2024) — Tokens-Datei, Avenir/Nunito-Sans-Stack, Phosphor-Icon-Set, Dark-Mode mit `data-theme`-Attribut (#114, #139)
- **AppShell** mit zwei-Spalten-Layout (Sidebar 230 px, Main), Drawer auf Mobile, Navigation in vier Gruppen LESEN/PRÜFEN/DATEN/ADMINISTRATION
- **Server-Side-Routing** für Antragsdetail (`/antrag/{drucksache}`), keine reine Client-Seite mehr
- **Login-Modal** in der Topbar mit Tabs Anmelden/Registrieren via Direct-Access-Grant — kein Keycloak-Redirect mehr (#129)
- **Keyboard-Shortcuts** j/k/Enter/Esc/?/⏎ im Listenmodus mit Help-Modal
- **Sort-Dropdown** mit acht Optionen (Score/Datum/Drs.-Nr./Titel je asc/desc), localStorage-persistiert
- **Antragsdetail vollständig** mit ScoreHero, Matrix-Mini 5×5 (klickbar mit Erklärungs-Modal), Programm-Treue-Tabelle pro Fraktion (auch ohne Zitate), §INS§/§DEL§-Redline-Parser, Versionshistorie, namentlichem Abstimmungsverhalten als Balken pro Fraktion (#106 Phase 1)
- **Bookmarks/Voting/Kommentare/Share/Re-Analyze** alle in v2-Detail integriert mit Auth-Modal-Fallback
- **Live-Landtag-Suche** als eigener Screen `/v2/landtag-suche`
- **Admin-Panel** mit drei Screens (Freischaltungen, Queue mit 5 s Auto-Refresh, Abos für alle User)
- **Open-Graph-Bilder** pro Antrag (1200×630 PNG, Playwright-gerendert, SHA-Cache) (#141)
### Hinzugefügt — Backend
- **16 Landesparlamente + Bundestag** als Adapter (BUND, NRW, BE, HH, BW, RP, LSA, MV, HB, HE, BY, SL, TH, BB, SN, SH; NI deferred wegen Login)
- **abgeordnetenwatch.de-Integration** Phase 1 für strukturierte Roll-Call-Votes — 28 977 BT-Votes in DB, Drucksachen-Match via 9 BL-spezifische URL-Patterns + Datum/Titel-Fallback (#106)
- **Drucksachen-Typen-Normalisierung** filtert Anträge/Gesetzentwürfe von Kleinen Anfragen etc. (#127)
- **Embeddings v3 → v4** Modell-Migration mit WRITE/READ-Pattern (ADR 0006)
- **DDD-Lightweight-Migration** Tag 1-4: `LlmBewerter`-Port, `QwenBewerter`-Adapter, drei Repositories (Antrag/Bewertung/Abonnement), Domain-Verhalten auf Pydantic-Modellen (ADR 0008, #136)
- **Mail-Digest** mit täglichem Cron 07:00, BL/Partei-Filter pro User-Abo (#124)
- **Monitoring-Scan** aller Adapter mit Kosten-Schätzung — Beobachtung ohne Auto-Fetch, Mail-Report mit „0-Kontext"-Hinweis (#135)
- **Merkliste server-seitig** mit Migration aus localStorage (#140)
- **Wahlprogramm-Auto-Download** halbautomatisch mit SHA-Gate, kuratierte URL-Liste, Admin-UI (#138)
- **Fehlende Wahlprogramme** automatisch im Assessment markiert + UI-Hinweis (#128)
- **Clustering** via Embedding-Nähe-Graph mit Bubble-Chart (#105)
- **Background-Queue** mit drei parallelen Workern, Graceful Shutdown 15 min, Job-Persistenz (#99)
- **Voting + Kommentare** mit Visibility-Modi (öffentlich/angemeldet/nur ich) (#94)
- **RSS/Atom-Feed** für neue Bewertungen (#125)
### Hinzugefügt — Tests & Doku
- **574 Tests, 13 skipped** — Unit-Suite < 2 s, plus Integration/E2E unter Markern
- **Bug-Regression-Tests** für fünf historische Fixes (PRAGMA-Cursor, JWT-azp, CDU-PDF, PFLICHT-FRAKTIONEN, NRW-Titel)
- **Live-Adapter-Tests** + Frontend-Cross-Validation + Citation-Substring-Tests (`pytest -m integration`)
- **Playwright-E2E-Tests** (`pytest -m e2e`)
- **Smoke-Test-Script** `scripts/smoke-test.sh` für Gesamt-Funktionsprüfung gegen Live-System
- **8 ADRs** dokumentiert, plus DDD-Bewertung (1 237 LOC) und Protokoll-Parser-v6-Machbarkeit (418 LOC)
- **Zugriffsrechte-Doc** mit 63 Routes × User-Status-Matrix
- **Doppel-Lizenz** Code MIT + Daten/Bewertungen CC-BY-4.0
### Geändert
- `/` zeigt jetzt v2-Frontend, classic unter `/classic` weiterhin erreichbar
- Auswertungen mit BL-Filter (#137 fix)
- Direkt-Verlinkbarkeit (`/antrag/{drs}`) als Permalinks ersetzen Query-Parameter (#132)
- Social-Media-Texte werden vom LLM erzeugt und in DB gespeichert (#133)
- v5-Prompt mit PFLICHT-FRAKTIONEN aller LT-Fraktionen, nicht nur Antragsteller+Regierung
- Citation-Binding server-seitig: Quellen-Label der Zitate werden gegen die tatsächlich abgerufenen Chunks rekonstruiert (ADR 0001)
- Mail-Digest-Template mit 0-Kontext"-Hinweis falls keine neuen Drucksachen seit letztem Scan
- Login als HttpOnly-Cookie + separate `rt`-Cookie für Refresh-Token (`/api/auth/logout`-Route für sauberen Cookie-Reset)
### Bekannte Einschränkungen
- **NI (Niedersachsen)** im Monitoring-Scan geskippt NILAS-Portal ist Login-protected, HAR-Capture nötig (#22)
- **Saarland-Adapter** swallowt manche httpx-Exceptions tiefer im Code als der erste Fix-Layer (#142)
- **Drucksachen-Match in MV/BY/BB/TH/HH/SL** für abgeordnetenwatch-Polls noch lückenhaft deren `field_intro`-HTML enthält keine PDF-Links, der Datum+Titel-Fallback hängt von vorheriger Indexierung ab
- **Plenarprotokoll-Parser v6** für nicht-namentliche Abstimmungen ist Phase 2, nicht in 1.0 (#106 follow-up)
- **DDD-Callsite-Migration** in `main.py` (~21 direkte Database-Aufrufe Repository-Dependency-Injection) als Folge-PR offen (#136 follow-up)
### Sicherheit
- **Security-Headers** (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)
- **Rate-Limiting** auf teuren POST-Endpoints (10/min auf `/api/analyze-drucksache`)
- **Eingabe-Validatoren** (Drucksachen-Format-Regex, Such-Query-Längen-Cap)
- **JWT-Validation** über Keycloak JWKS, `azp`-Check statt `aud` für Public Clients (49c1b92)
### Statistik
- 11 789 LOC Python in `app/`
- 23 Module, 8 Templates-Verzeichnisse
- 71 produktive Bewertungen in der Live-DB
- 85 Wahlprogramme indexiert (Embeddings v4, ~50 000 Chunks)
- 28 977 abgeordnetenwatch-Votes
- 574 Tests, 0 Regressions
---
## [0.x] — Pre-Release-Phase
Frühere Iterationen. Siehe `git log` für Detail-Historie. Wesentliche Meilensteine:
- v3 v4 Embedding-Migration (#123)
- Clustering + Force-Graph (#105, #108)
- Bookmarks + Kommentare (#94)
- Methodik-/Transparenz-Seite (#96)
- Keycloak SSO (#43)
- Multi-BL-Adapter (#22 Reihe, #72-#87)
[1.0.0]: https://repo.toppyr.de/tobias/gwoe-antragspruefer/releases/tag/v1.0.0