feat(frontend): Rechnungsempfaenger-Badge + Toggle in Haushaltsansicht #251
Labels
No labels
component/backend
component/docs
component/e2e
component/frontend
component/infra
component/keycloak
prio/high
prio/low
prio/medium
type/bug
type/chore
type/feature
type/refactor
type/test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
WompSchmiede/FamilienFeierPlaner#251
Loading…
Add table
Add a link
Reference in a new issue
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?
Abhaengigkeit
Dieser Issue setzt #216 (Backend) voraus — die Endpunkte
GETundPUT /api/v1/groups/{groupId}/invoice-recipientsmuessen vorhanden sein.Ziel
In der Haushaltsdetailseite (
/app/groups/{groupId}) soll angezeigt werden, wer aktuell Rechnungsempfaenger ist. Mitglieder sollen den Empfaenger per ActionMenu umschalten koennen.Backend-API (bereits umgesetzt in #216)
GET /api/v1/groups/{groupId}/invoice-recipients→{ personIds: string[] }PUT /api/v1/groups/{groupId}/invoice-recipients→ Body:{ personIds: string[] }group.createdByUmsetzung
1. Orval-Types regenerieren
Erzeugt Types fuer
InvoiceRecipients/SetInvoiceRecipientsausopenapi.yaml.2. +page.server.ts erweitern
Load-Funktion — 4. paralleler API-Fetch:
GET /api/v1/groups/{groupId}/invoice-recipientsinvoiceRecipientIds: string[]parsenNeue Form-Action
?/toggleInvoiceRecipient:personIdaus FormDatafindMany(oder via mitgeliefertem State)PUT { personIds: [] }(entfernen)PUT { personIds: [personId] }(setzen, ersetzt alle anderen)3. +page.svelte erweitern
a) Badge im name-Slot (neben Vor-/Nachname):
b) ActionMenu-Eintrag pro Mitglied (zwischen Bearbeiten und Entfernen):
4. i18n
frontend/src/lib/i18n/de/groups.json:frontend/src/lib/i18n/en/groups.json:5. Tests
Frontend-Unit-Tests:
E2E-Tests (in bestehendem
groups.spec.ts, test-2-independent):Dateien im Ueberblick
frontend/src/lib/api/generated.tsfrontend/src/routes/app/groups/[groupId]/+page.server.tsfrontend/src/routes/app/groups/[groupId]/+page.sveltefrontend/src/lib/i18n/de/groups.jsonfrontend/src/lib/i18n/en/groups.jsonfrontend/src/tests/groups.test.tse2e/specs/test-2-independent/groups.spec.tse2e/.test-coverage.jsoncovered)Notizen
variant="outline"(dezent, grau umrandet) — Farbe kann spaeter via Design-Token angepasst werden.personIdsist — konsistent mit der Issue-Vorgabe "zunaechst nur einer".group.createdBy) ist transparent; das Frontend muss keinen Fallback-Text rendern.