Antrag-Empfehlungen basierend auf Merkliste #108
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: tobias/gwoe-antragspruefer#108
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
'Wenn dir X gefallen hat, koennte dich Y interessieren.'
Logik
UI
Blockiert: Antrag-Embeddings existieren nicht in der DB. Nur Wahlprogramm-Chunks sind embedded. Fuer Empfehlungen muessten die Antragstexte oder Assessment-Zusammenfassungen ebenfalls in die embeddings.db. Aufwand: mittel-hoch (neuer Embedding-Workflow + DB-Erweiterung + API). Zurueckgestellt.
❓ Offene Frage (Claude-Loop)
Empfehlungen hängen direkt an #105 (Antrag-Embeddings). Zusätzlich:
Merkliste = User-gebunden, braucht neue Tabelle
user_bookmarks(user_id, drucksache, created_at). Keycloak-User-ID als FK.Frage: OK mit neuer Tabelle? Oder lieber auf localStorage (browser-lokal, kein Sync)?
Neue Tabelle.
Aufgeteilt in zwei Teile:
Teil A — Merkliste (unblocked, kann sofort gebaut werden):
user_bookmarks(user_id TEXT, drucksache TEXT, created_at TIMESTAMP, PRIMARY KEY (user_id, drucksache))POST /api/bookmark(toggle),GET /api/bookmarks(Liste)Teil B — Ähnliche Anträge (blockiert auf #123):
GET /api/assessment/similar?drucksache=...&top_k=5assessments.summary_embeddingTeil A kann parallel zur v4-Migration gebaut werden.
Teil A (Merkliste) — Status: bereits live ✅
Überprüfung 2026-04-11: Die Merkliste-Infrastruktur wurde in einer vorherigen Session bereits komplett gebaut und ist in Prod live:
bookmarks(user_id, drucksache, created_at)indatabase.pytoggle_bookmark(),get_bookmarks()DB-FunktionenPOST /api/bookmark(require_auth) — toggleGET /api/bookmarks(optional auth) — ListeloadBookmarksList()rendert gemerkte Anträge ausallAssessmentsLive-Endpoint-Test:
GET /api/bookmarks→[](unauth), funktioniert.Teil B (Ähnliche Anträge) — blockiert auf #123 🟡
assessments.summary_embedding+ UI-SektionDieses Issue bleibt offen bis Teil B fertig ist (nach Reindex + Cleanup).
Teil B Live 2026-04-11 ✅
API:
GET /api/assessment/similar?drucksache=...&top_k=5assessments.summary_embedding(v4)UI: Neue Sektion im Detail-Panel:
🔗 N ähnliche Anträge(kollapsibel)Verifiziert: Beispiel Klima-Antrag 21/4271 → Top-5 enthalten thematisch verwandte Klimaprogramme UND eine AfD-Normenkontrolle gegen das Klima-Sondervermögen (similarity 0.477). Das ist eine korrekte semantische Near-Match — User sieht alle Positionen zum Thema unabhängig von Pro/Contra.
Beide Teile (A Merkliste + B Ähnliche Anträge) sind live. Schließe.