gwoe-antragspruefer/app
Dotty Dotter 4e7f7dac25 chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution
Mehrtaegiger Sync-Stillstand hatte ueber 50 conflicted-copy-Dateien im
Working-Tree erzeugt. Die jeweils neuere Version wurde basierend auf
md5-Hash-Vergleich zum laufenden gwoe-antragspruefer-dev-Container
eingespielt.

Konsolidiert (38 modifiziert):
- analyzer.py, auswertungen.py, auth.py, config.py, database.py,
  drucksache_typen.py, embeddings.py, main.py, models.py, parlamente.py,
  ports/llm_bewerter.py, presse_generator.py, redline_utils.py, report.py,
  validators.py, wahlprogramm_fetch.py, wahlprogramm-links.yaml,
  wahlprogramm-shas.lock.json
- v2-Templates: base, components/{icon, matrix_mini, queue_widget,
  result_row}, screens/{admin_queue, admin_stand, aktuelle-themen,
  antrag_detail, auswertungen, cluster, landtag_suche, merkliste,
  methodik, tags}, static/v2/v2.css
- Tests: test_embeddings (Strict-Mode-Drop in reconstruct_zitate),
  test_endpoints_smoke, test_presse_generator, test_report,
  test_wahlprogramme (mit TestRegierungsbildung-Block, +120 LOC)
- docker-compose.dev.yml, docs/adr/index.md, docs/reference/api.md, mkdocs.yml

Neuzugaenge:
- app/marker.py, app/pm_render.py — Konsistenz-Marker, PM-Render-Adapter
- app/templates/v2/screens/scorecard{,_portrait,_werkstatt}.html — Cloud-Design-Scorecard
- app/static/v3/, app/templates/v3/ — v3-Layout-Hierarchie
- docs/adr/0010-stimmverhalten-gwoe-aggregat.md
- docs/adr/0011-aktuelle-themen-pm-generator.md
- docs/adr/0012-debug-auth-token-bypass.md
- scripts/{auto-rate-orphans, pm-quality-audit, pm-sample-bundle, rotate-debug-token}.sh
- tests/e2e/test_smoke_browser.py, tests/test_{auto_rate_runs, icons,
  marker, pm_render, presse_generator_style, thread_splitter,
  v2_pdf_consistency}.py

Plus inhaltlich uebernommen aus dem Conflict-Stand:
- embeddings.py: fw-by-2023.partei korrigiert von "FW" zu "FREIE WAEHLER"
  (war Mismatch zu wahlprogramme.py)
- embeddings.py: detailliertere Naming der BTW-2025-Wahlprogramme

Test-Suite-Stand: 1209 passed, 73 skipped (4 pre-existing failures in
test_presse_generator_style.py + 1 collection error in
integration/test_citations_substring.py — beide nicht durch dieses
Konsolidierungs-Commit verursacht).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 00:19:41 +02:00
..
adapters fix(#170): JSON-Parse-Fehler im PM-Generator (unescaped Newlines) 2026-05-06 01:53:29 +02:00
kontext Activate LSA: Wahlprogramme + ingest + frontend (#2) 2026-04-07 22:12:32 +02:00
ports fix(#170): JSON-Parse-Fehler im PM-Generator (unescaped Newlines) 2026-05-06 01:53:29 +02:00
protokoll_parsers feat(#149): BB-Parser produktiv — Brandenburger Plenarprotokolle (Status-Only) 2026-04-29 02:04:21 +02:00
repositories refactor(#136): DDD-Lightweight Tag 1-4 (Ports, Adapter, Repositories, Domain-Verhalten) 2026-04-25 20:55:16 +02:00
routers Initial commit: GWÖ-Antragsprüfer v1.0 2026-03-28 22:30:24 +01:00
static feat: Programme + Legislaturen-Registry mit historisch korrekter Geltung 2026-05-08 00:18:33 +02:00
templates fix: WAHLPROGRAMME['BUND'] mit Grundsatzprogrammen befuellt + Permalink-Copy-Click 2026-05-07 15:27:33 +02:00
__init__.py Initial commit: GWÖ-Antragsprüfer v1.0 2026-03-28 22:30:24 +01:00
abgeordnetenwatch.py feat(#106,#135,#128): Monitoring + abgeordnetenwatch + Wahlprogramm-Check 2026-04-25 20:55:16 +02:00
analyzer.py chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution 2026-05-08 00:19:41 +02:00
auswertungen.py feat(#189 Phase 10.2): Empfehlungs-Konsistenz-Drilldown analog zu Heuchelei 2026-05-06 17:11:34 +02:00
auth.py feat(Phase 11b): Bypass-DB-Logging + Auto-Rotation-Skript 2026-05-06 23:31:51 +02:00
bundeslaender.py #31/#34/#35: BY, NI, SL auf aktiv=True — alle 17 Parlamente jetzt im UI 2026-04-10 17:43:32 +02:00
clustering.py feat: 16 BL-Adapter, Drucksache-Typen, Mail-Digest, Clustering, Redline-Parser 2026-04-25 20:54:50 +02:00
config.py feat(feedback): konfigurierbare Issue-Labels via GITEA_FEEDBACK_LABELS 2026-04-28 01:31:25 +02:00
database.py feat(Phase 11b): Bypass-DB-Logging + Auto-Rotation-Skript 2026-05-06 23:31:51 +02:00
drucksache_typen.py feat(#6 Phase 11): Bundesrats-Drucksachen erkennen + markieren + ablehnen 2026-05-06 23:29:12 +02:00
embeddings.py chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution 2026-05-08 00:19:41 +02:00
ingest_votes.py feat(#148): BUND-Parser produktiv — Bundestags-XML-Plenarprotokolle 2026-04-28 23:21:39 +02:00
legislaturen.py feat: Programme + Legislaturen-Registry mit historisch korrekter Geltung 2026-05-08 00:18:33 +02:00
mail.py feat: 16 BL-Adapter, Drucksache-Typen, Mail-Digest, Clustering, Redline-Parser 2026-04-25 20:54:50 +02:00
main.py fix: PNG-Export-Canvas + Doppel-Borders bei field-chip/party-pill 2026-05-07 14:37:55 +02:00
marker.py feat: Opportunismus-Marker bei JA-Stimmen mit WP-Score < 3 2026-05-06 15:48:06 +02:00
models.py refactor(#136): DDD-Lightweight Tag 1-4 (Ports, Adapter, Repositories, Domain-Verhalten) 2026-04-25 20:55:16 +02:00
monitoring.py feat(#106,#135,#128): Monitoring + abgeordnetenwatch + Wahlprogramm-Check 2026-04-25 20:55:16 +02:00
news_aggregator.py feat: Stand-Dashboard, Score-Histogram, PM-Markdown, Live-Polling, Cluster-Indicator 2026-05-06 02:49:06 +02:00
og_card.py feat(#139,#129,#138,#141): v2-Frontend (ECOnGOOD-CD), Login-Modal, Auto-DL, OG-Cards 2026-04-25 20:55:57 +02:00
parlamente.py feat(#6 Phase 11): Bundesrats-Drucksachen erkennen + markieren + ablehnen 2026-05-06 23:29:12 +02:00
parteien.py Phase J: SN EDAS-XML-Adapter (#26/#38) — Sachsen aktiv via XML-Export 2026-04-09 14:39:03 +02:00
pm_render.py refactor + tests: marker.py + pm_render.py mit 56 Unit-Tests 2026-05-06 15:44:12 +02:00
presse_generator.py feat(Phase 18): PM-Prompt verschaerft + Auto-Re-Generate bei zu kurzem Output 2026-05-06 23:47:42 +02:00
programme.py feat: Programme + Legislaturen-Registry mit historisch korrekter Geltung 2026-05-08 00:18:33 +02:00
queue.py feat(#139,#129,#138,#141): v2-Frontend (ECOnGOOD-CD), Login-Modal, Auto-DL, OG-Cards 2026-04-25 20:55:57 +02:00
redline_utils.py fix: PDF-Link mit #page=N-Hash — Browser-PDF-Viewer landet jetzt direkt auf der richtigen Seite 2026-04-25 22:09:46 +02:00
reindex_embeddings.py feat: 16 BL-Adapter, Drucksache-Typen, Mail-Digest, Clustering, Redline-Parser 2026-04-25 20:54:50 +02:00
report.py feat: PDF-Generierung auf v3-Layout, Werkstatt-Link im Admin, Share nur bei Login 2026-05-07 13:48:19 +02:00
sync_abgeordnetenwatch.py feat(#106,#135,#128): Monitoring + abgeordnetenwatch + Wahlprogramm-Check 2026-04-25 20:55:16 +02:00
themen_matching.py feat: Stand-Dashboard, Score-Histogram, PM-Markdown, Live-Polling, Cluster-Indicator 2026-05-06 02:49:06 +02:00
validators.py fix: Validator akzeptiert Bundesrats-3-Komponenten-Drucksachen 2026-05-06 23:30:29 +02:00
wahlperioden.py Phase C: Auswertungen-Dashboard #58 + CSV-Export #45 (Roadmap #59) 2026-04-09 11:25:57 +02:00
wahlprogramm_check.py feat(#106,#135,#128): Monitoring + abgeordnetenwatch + Wahlprogramm-Check 2026-04-25 20:55:16 +02:00
wahlprogramm_fetch.py feat(#138): SHA-Lock-File schuetzt vor stillem PDF-Tausch 2026-04-28 01:58:42 +02:00
wahlprogramm-links.yaml chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution 2026-05-08 00:19:41 +02:00
wahlprogramm-shas.lock.json chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution 2026-05-08 00:19:41 +02:00
wahlprogramme.py chore: konsolidiere Working-Tree mit dev-Stand nach Nextcloud-Sync-Resolution 2026-05-08 00:19:41 +02:00