Commit Graph

7 Commits

Author SHA1 Message Date
Dotty Dotter
e35dab8f7d refactor: Umsetzungsbewertung hängt an Kette statt Vorlage
- Neues Feld kette_id in ki_bewertungen für umsetzung_match
- 3.757 bestehende Bewertungen migriert
- API: Neueste Version + ältere Versionen getrennt im Response
- Explorer: Umsetzungsgrad in Panel 2 (Kette), nicht mehr in Panel 3 (Vorlage)
- 'Vorherige Bewertungen' Button aufklappbar mit Score + Begründung + Zeitstempel
2026-04-01 23:42:02 +02:00
Dotty Dotter
726f5c06ad feat: Umsetzungsgrad in Ketten-Detail anzeigen
- Backend: KI-Umsetzungsbewertung (Score, Bewertung, Begründung, Kernpunkt, Details) im Ketten-Detail-Response
- Frontend: Umsetzungsgrad zwischen Ampel und Timeline im Explorer Panel 2
  - Prozent-Kreis (grün/amber/rot) + Bewertungstext + Kernpunkt-Status
  - Begründung + Details als Fließtext
2026-04-01 23:23:25 +02:00
Dotty Dotter
a3e4dab633 fix: Explorer-Suche durchsucht jetzt auch Aktenzeichen + Betreff
Vorher nur k.thema, jetzt auch v.aktenzeichen + v.betreff der Ursprungsvorlage.
COUNT-Query um JOIN erweitert.
2026-04-01 21:17:41 +02:00
Dotty Dotter
3758079038 feat(#16): Strang-basierte Klassifikation mit Ampel
- Migration: strang-Feld in ketten (scripts/migrate_strang.py)
- core/ampel.py: Ampel-Definition, Status-Mapping, Kontrollfragen
- API: strang+ampel in GET /api/ketten, /api/ketten/{id}
- API: ampel in GET /api/vorlagen/{id} (wenn in Kette)
- API: GET /api/ampel/definition (Legende für Frontend)
- API: nach_strang in GET /api/stats/dashboard
- Migration auf 6354 Ketten ausgeführt
2026-04-01 18:30:24 +02:00
Dotty Dotter
c6291a285a feat: Globale Filter (Ratsperiode + Parteien) seitenübergreifend (#15)
Layout:
- Sticky Filter-Bar unter Navigation auf ALLEN Seiten
- Ratsperioden als Multi-Select Toggle-Buttons
- Parteien-Buttons mit Parteifarben aus DB
- Reset-Button bei aktiven Filtern

Backend:
- Shared utility tracker/core/perioden.py (Perioden-Mapping + Filter-Helper)
- GET /api/vorlagen: periode + parteien Parameter
- GET /api/ketten: periode + parteien Parameter
- GET /api/stats/dashboard: periode + parteien Parameter
- GET /api/fraktionen/{kuerzel}/dashboard: periode Parameter

Frontend:
- Shared reactive state (filters.svelte.ts) mit Svelte 5 Runes
- $effect() in allen Seiten reagiert auf Filteränderungen
- Dashboard, Vorlagen, Ketten, Abstimmungen, Fraktionen nutzen globale Filter
- Filter-Bar aus Abstimmungen entfernt (jetzt im Layout)

Closes #15
2026-04-01 14:58:10 +02:00
Dotty Dotter
9d8a73e2a9 feat: Parteien-Filter, Klassifikation, Umsetzungsbewertung, KI-Neubewertung
- Vorlagen + Ketten: Partei-Dropdown-Filter mit Badges (#9)
- Vorlagen-Detail: Ketten-Klassifikation mit Begründung anzeigen
- Vorlagen-Detail: Umsetzungsbewertungen mit Score + Begründung
- SPA-Routing: Catch-All für direkten URL-Zugriff
- Status-Engine: Begründungen für alle Ketten-Status generieren
- Kurze Beschlusstexte (<=5 Zeichen) nicht mehr als Beschluss werten
- POST /api/bewertung/vorlagen/{id} + /ketten/{id} für KI-Neubewertung
- Frontend: 'Neu bewerten' Button + Kommentarfeld auf beiden Detailseiten
- Job-Status-Polling mit Spinner
- ALLRIS-Rescrape vor Bewertung noch offen (#10)

Closes #9
2026-04-01 10:36:22 +02:00
Dotty Dotter
17606ab237 feat: Initial commit — Antragstracker Hagen
Vollständige Pipeline zur Analyse kommunaler Vorlagen aus ALLRIS:
- OParl-Import: 20.149 Vorlagen
- PDF-Extraktion: 10.045 Volltexte (adaptives Throttling)
- KI-Zusammenfassungen: 10.026 via Qwen Plus (parallelisiert)
- Beratungsfolge-Scraper: Beschlusstexte + Wortprotokolle
- Abstimmungs-Analyse mit Koalitionsmatrix
- Georeferenzierung (Nominatim)

Stack: FastAPI + SvelteKit + SQLite
Deployment: Docker + Traefik auf VServer

Daten (DB, Logs) nicht im Repo — siehe Restic-Backup.
Repo-Setup: scripts/setup.sh für Neuaufbau aus OParl-API.
2026-03-30 16:37:58 +02:00