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

6.3 KiB
Raw Blame History

Changelog

Alle markanten Änderungen pro Release. Format an Keep a Changelog 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)