+
E1 — Settings-Hub (Update)
+
Der bestehende Settings-Hub (E1) erhält eine dritte Kachel: "Vielfalt-Einstellungen". Die Kachel zeigt den aktuellen Vielfalt-Score als Kennzahl. Das Grid-Layout wird von 2-spaltig zu einem Mix aus Hauptkachel oben und zwei gleichbreiten Kacheln unten angepasst.
+
+
+
+
S0 · Settings-Hub mit Vielfalt-Kachel
E1
+
Die neue Vielfalt-Kachel erscheint in der unteren Reihe neben der Haushalt-Kachel. Zeigt den aktuellen Score als lila Kennzahl. Bei Score < 6.0 färbt sich die Kennzahl orange als Aufmerksamkeitshinweis.
+
Änderung gegenüber E1 v1: dritte Kachel + Grid-Anpassung. Vorräte-Kachel bleibt primär (2fr oben).
+
+
+
+
Mobile · 320px
+
+
9:41●●●
+
+
+
+
+
+
12
+
Vorräte
+
Zutaten immer vorrätig
+
Bearbeiten →
+
+
+
+
+
3
+
Haushalt
+
Mitglieder
+
Verwalten →
+
+
+
7.4
+
Vielfalt
+
Diese Woche
+
Einstellungen →
+
+
+
+
+
+
+
+
+
+
Desktop · 1040px
+
+
+
+
+
Planung
+
📅 Wochenplan
+
🛒 Einkaufsliste
+
🍳 Rezepte
+
Haushalt
+
⚙️ Einstellungen
+
+
+
+
+
+
+
+
+
+
12
+
Vorräte
+
Zutaten, die immer vorrätig sind und nicht auf die Einkaufsliste kommen
+
+
Bearbeiten →
+
+
+
+
+
+
3
+
Haushalt
+
Mitglieder & Rollen
+
+
Verwalten →
+
+
+
+
7.4
+
Vielfalt-Einstellungen
+
Algorithmus anpassen
+
+
Einstellungen →
+
+
+
+
+
+
+
+
+
+
+
E1 Hub Update · S0
+
/* E1 grid: Vorräte (full width, 2fr, border-left: 3px solid --green-dark) on top row.
+ * Bottom row: 2 equal columns — Haushalt + Vielfalt-Einstellungen.
+ * Vielfalt card: border-left: 3px solid --purple. Stat color: --purple (7.4).
+ * If score < 6.0: stat color switches to --orange (Aufmerksamkeit) with no other change.
+ * Score value: load from GET /v1/week-plans?weekStart=current → GET /v1/week-plans/{id}/variety-score.
+ * If no current plan: show "–" as stat value, sub: "Kein Plan".
+ * Tap/click Vielfalt card → navigate to E4. */
+
| Element | Wert | Notizen |
+ | Vielfalt-Kachel |
+ | Kennzahl | varietyScore.score, 1 Dezimalstelle | Farbe: --purple normal, --orange wenn < 6.0 |
+ | Label | Vielfalt-Einstellungen | Desktop; Mobile: "Vielfalt" |
+ | Sub-Label | "Diese Woche" / "Kein Plan" / "–" | Kein Plan = kein weekPlan für aktuelle Woche |
+ | Rand | border-left: 3px solid --purple | Analog zu Vorräte → --green-dark |
+ | Aktion | Tap → navigate /settings/variety | Route: +page.svelte unter (app)/settings/variety/ |
+ | Grid-Layout |
+ | Mobile | Vorräte fullwidth + grid-template-columns: 1fr 1fr unten | Gap: 12px |
+ | Desktop | Vorräte fullwidth + grid-template-columns: 1fr 1fr unten | Max-width: 640px, gap: 16px |
+
+
+
+
+
E4 — Vielfalt-Einstellungen · States
+
+
+
S1 · Standard (kein Custom-Config)
E4
+
Erster Aufruf, kein haushaltsindividueller Config-Eintrag. Omnivor-Chip ist ausgewählt (Default-Zustand). Score-Preview zeigt den aktuellen tatsächlichen Score — keine Simulation nötig, da noch nichts geändert wurde. Hinweis-Text erklärt kurz den Zweck der Seite.
+
S1 · Omnivor selected · Score-Preview = aktueller Score · Erweiterte Einstellungen eingeklappt
+
+
+
+
Mobile · 320px
+
+
9:41●●●
+
+
+
+
Passe den Algorithmus an deinen Haushalt an. Änderungen werden sofort übernommen.
+
+
Haushaltskontext
+
+
+
🥩
+
Omnivor
+
Alle Regeln aktiv
+
+
+
🥦
+
Vegetarisch
+
Protein deaktiviert
+
+
+
🌱
+
Vegan
+
Protein deaktiviert
+
+
+
+
Aktive Regeln
+
+
✓ Protein
+
✓ Küche
+
✓ Zutaten · Mittel
+
✓ Letzte Wochen · Mittel
+
⚠ Duplikate · Hoch
+
+
+
+
+
Erweiterte Einstellungen
+
▸
+
+
+
+
+
+
Aktueller Score
+
7.4
+
Keine Änderungen
+
+
📊
+
+
+
Bereits Standard-Einstellungen
+
+
+
+
+
+
+
+
Desktop · 1040px
+
+
+
+
+
Planung
+
📅 Wochenplan
+
🛒 Einkaufsliste
+
🍳 Rezepte
+
Haushalt
+
⚙️ Einstellungen
+
+
+
+
Einstellungen › Vielfalt-Einstellungen
Vielfalt-Einstellungen
+
+
+
+
Passe den Algorithmus an deinen Haushaltskontext an. Änderungen werden sofort übernommen und wirken sich auf den nächsten Score-Abruf aus.
+
Haushaltskontext
+
+
🥩
Omnivor
Alle Regeln aktiv
+
🥦
Vegetarisch
Protein deaktiviert
+
🌱
Vegan
Protein deaktiviert
+
+
+
Erweiterte Einstellungen
▸
+
+
Bereits Standard-Einstellungen
+
+
+
+
+
Aktueller Score
+
7.4 / 10
+
Keine Änderungen aktiv
+
+
📊
+
+
Aktive Regeln
+
+
ProteinMittel
+
KücheMittel
+
ZutatenNiedrig
+
Letzte WochenMittel
+
DuplikateHoch
+
+
+
+
+
+
+
+
+
+
+
E4 · S1 Default
+
/* Load: GET /v1/households/mine/variety-config → 404 if no custom config.
+ * On 404: use defaults (Omnivor preset), show Omnivor chip as selected.
+ * Score banner: show actual GET /v1/week-plans/{id}/variety-score (no simulation).
+ * "Bereits Standard-Einstellungen" replaces reset link if no custom config exists.
+ * Accordion: closed. */
+
| Element | Wert | Notizen |
+ | Laden |
+ | Config-Load | GET /v1/households/mine/variety-config | 404 → Defaults verwenden, Omnivor selected |
+ | Score-Load | GET /v1/week-plans/{id}/variety-score | Nur wenn weekPlan existiert; sonst Score-Banner ausblenden |
+ | Kontext-Chips |
+ | Omnivor | repeatTagTypes: ["protein","cuisine"], alle Gewichte Standard | Default-Preset = backend defaults |
+ | Vegetarisch | repeatTagTypes: ["cuisine"], wTagRepeat Standard | Protein deaktiviert |
+ | Vegan | repeatTagTypes: ["cuisine"], wTagRepeat Standard | Identisch zu Vegetarisch in v1 |
+ | Individuell | Erscheint automatisch wenn Advanced abweicht vom Preset | Kein manuell wählbarer Chip — nur automatisch |
+ | Score-Banner (S1) |
+ | Wert | Aktueller Score (keine Simulation) | Label: "Aktueller Score" |
+ | Sub-Label | "Keine Änderungen" | Neutral-Farbe (#6B6A63) |
+
+
+
+
+
+
+
+
S2 · Vegetarisch ausgewählt — Score-Simulation
E4
+
Planer tippt auf "Vegetarisch". Config wird sofort per PATCH gespeichert. Score-Banner lädt die simulierte Punktzahl: wie würde der aktuelle Plan mit der neuen Config abschneiden. Delta wird grün hervorgehoben. Protein-Pill wechselt zu "off". Erweiterte Einstellungen zeigt Protein-Toggle als deaktiviert.
+
S2 · Vegetarisch selected · Score-Preview = simuliert · Protein-Pill = off
+
+
+
+
Mobile · 320px
+
+
9:41●●●
+
+
+
+
Passe den Algorithmus an deinen Haushalt an. Änderungen werden sofort übernommen.
+
+
Haushaltskontext
+
+
🥩
Omnivor
Alle Regeln aktiv
+
🥦
Vegetarisch
Protein deaktiviert
+
🌱
Vegan
Protein deaktiviert
+
+
+
Aktive Regeln
+
+
– Protein
+
✓ Küche
+
✓ Zutaten · Mittel
+
✓ Letzte Wochen · Mittel
+
⚠ Duplikate · Hoch
+
+
+
+
Erweiterte Einstellungen
▸
+
+
+
+
+
Mit diesen Einstellungen
+
8.9
+
↑ +1.5 gegenüber vorher
+
+
📈
+
+
+
Auf Standard zurücksetzen
+
+
+
+
+
+
+
+
Desktop · 1040px
+
+
+
+
+
Planung
+
📅 Wochenplan
+
🛒 Einkaufsliste
+
🍳 Rezepte
+
Haushalt
+
⚙️ Einstellungen
+
+
+
+
Einstellungen › Vielfalt-Einstellungen
Vielfalt-Einstellungen
+
+
+
+
Passe den Algorithmus an deinen Haushaltskontext an. Änderungen werden sofort übernommen und wirken sich auf den nächsten Score-Abruf aus.
+
Haushaltskontext
+
+
🥩
Omnivor
Alle Regeln aktiv
+
🥦
Vegetarisch
Protein deaktiviert
+
🌱
Vegan
Protein deaktiviert
+
+
+
Erweiterte Einstellungen
▸
+
+
Auf Standard zurücksetzen
+
+
+
+
+
Mit diesen Einstellungen
+
8.9 / 10
+
↑ +1.5 gegenüber vorher
+
+
📈
+
+
Aktive Regeln
+
+
ProteinDeaktiviert
+
KücheMittel
+
ZutatenNiedrig
+
Letzte WochenMittel
+
DuplikateHoch
+
+
+
+
+
+
+
+
+
+
+
E4 · S2 Vegetarisch
+
/* On chip tap (Vegetarisch):
+ * 1. Optimistic UI: swap selected chip, update pills, update sum-rows immediately.
+ * 2. PATCH /v1/households/mine/variety-config { repeatTagTypes: ["cuisine"],
+ * wTagRepeat: 1.5, wIngredientOverlap: 0.3, wRecentRepeat: 1.0, wPlanDuplicate: 2.0 }
+ * 3. On PATCH success: fire GET /v1/week-plans/{id}/variety-score?simulate=true
+ * with same config body → update score-banner with simulated score + delta.
+ * 4. On PATCH error: rollback to previous chip selection + show toast "Fehler beim Speichern".
+ * Score-Banner during load: show spinner in place of val. */
+
| Element | Wert | Notizen |
+ | Score-Banner (S2) |
+ | Label | "Mit diesen Einstellungen" | Statt "Aktueller Score" |
+ | Delta | "↑ +X.X gegenüber vorher" | Grün (#6FCF97) wenn positiv; rot wenn negativ; neutral wenn = 0 |
+ | Simulation-Endpoint | POST /v1/week-plans/{id}/variety-score/simulate | Body: VarietyScoreConfig-Felder. Neuer Endpoint nötig (Backend-Task). |
+ | Kein Plan | Score-Banner ausblenden | Kein simulierter Score ohne Plan möglich |
+ | Chip-Preset Vegetarisch |
+ | repeatTagTypes | ["cuisine"] | Protein entfernt |
+ | wTagRepeat | 1.5 (Standard) | Unverändert |
+ | wIngredientOverlap | 0.3 (Standard) | Unverändert |
+ | wRecentRepeat | 1.0 (Standard) | Unverändert |
+ | wPlanDuplicate | 2.0 (Standard) | Unverändert |
+
+
+
+
+
+
+
+
S3 · Erweiterte Einstellungen geöffnet
E4
+
Planer öffnet das Accordion "Erweiterte Einstellungen". Er sieht Segmented Controls (Niedrig / Mittel / Hoch) für jeden Gewichts-Parameter. Ändert er einen Wert, der nicht mehr dem aktuellen Preset entspricht, erscheint automatisch ein vierter Chip "Individuell" (lila) und ersetzt den aktiven Preset-Chip. Score-Banner aktualisiert sich nach jeder Änderung.
+
S3 · Erweiterte Einstellungen offen · "Individuell"-Chip erschienen (Planer hat Zutaten-Gewicht angepasst)
+
+
+
+
Mobile · 320px
+
+
9:41●●●
+
+
+
+
Haushaltskontext
+
+
+
+
– Protein
+
✓ Küche
+
✓ Zutaten · Hoch
+
✓ Letzte Wochen · Mittel
+
⚠ Duplikate · Hoch
+
+
+
+
Erweiterte Einstellungen
▾
+
+
Protein ist über den Kontext deaktiviert. Die übrigen Gewichte kannst du hier anpassen.
+
+
+
+
+
+
+
+
+
+
Mit diesen Einstellungen
+
8.1
+
↑ +0.7 gegenüber vorher
+
+
📈
+
+
Auf Standard zurücksetzen
+
+
+
+
+
+
+
+
Desktop · 1040px
+
+
+
+
+
Planung
+
📅 Wochenplan
+
🛒 Einkaufsliste
+
🍳 Rezepte
+
Haushalt
+
⚙️ Einstellungen
+
+
+
+
Einstellungen › Vielfalt-Einstellungen
Vielfalt-Einstellungen
+
+
+
+
Haushaltskontext
+
+
+
+
+
✦
Individuell
Benutzerdefiniert
+
+
+
Erweiterte Einstellungen
▾
+
+
Protein ist über den Haushaltskontext deaktiviert. Passe die Stärke der übrigen Regeln an.
+
+
Küchen-Wiederholung
Gleiche Küche an aufeinanderfolgenden Tagen
+
+
+
+
Zutaten-Überschneidung
Gleiche Zutaten an aufeinanderfolgenden Tagen
+
+
+
+
Letzte Wochen
Kochverlauf (14 Tage)
+
+
+
+
Doppelte Rezepte
Gleiches Rezept mehrfach im Plan
+
+
+
+
+
Auf Standard zurücksetzen
+
+
+
+
+
Mit diesen Einstellungen
+
8.1 / 10
+
↑ +0.7 gegenüber vorher
+
+
📈
+
+
Aktive Regeln
+
+
ProteinDeaktiviert
+
KücheMittel
+
ZutatenHoch ↑
+
Letzte WochenMittel
+
DuplikateHoch
+
+
+
+
+
+
+
+
+
+
+
E4 · S3 Erweiterte Einstellungen
+
/* Accordion öffnet sich per Click/Tap auf acc-hd. Keine Animation nötig — display toggle reicht.
+ * Erweiterte Einstellungen zeigt NUR aktive Tag-Typen als Gewichts-Rows.
+ * Wenn Protein deaktiviert (über Preset): Protein-Row wird in acc-b NICHT angezeigt.
+ * "Individuell"-Chip: erscheint automatisch wenn die Kombination repeatTagTypes+weights
+ * nicht exakt einem der drei Presets entspricht. Kein manueller Auslöser.
+ * Gewichts-Änderung → PATCH → Score-Simulation → Banner-Update.
+ * Debounce der Simulation: 300ms nach letzter Interaktion. */
+
| Element | Wert | Notizen |
+ | Gewicht-Mapping |
+ | Niedrig | Faktor 0.5 × Standard-Gewicht | wTagRepeat: 0.75, wIngredient: 0.15, wRecent: 0.5, wDuplicate: 1.0 |
+ | Mittel | Faktor 1.0 (Standard) | wTagRepeat: 1.5, wIngredient: 0.3, wRecent: 1.0, wDuplicate: 2.0 |
+ | Hoch | Faktor 1.5 × Standard-Gewicht | wTagRepeat: 2.25, wIngredient: 0.45, wRecent: 1.5, wDuplicate: 3.0 |
+ | Individuell-Chip |
+ | Trigger | Wenn gespeicherter Config ≠ Omnivor, Vegetarisch, oder Vegan Preset | Lila Border + Hintergrund |
+ | Symbol | ✦ (U+2726) | Statt Emoji |
+ | Label | Individuell | Nicht anklickbar — nur Status-Indikator |
+ | Simulation-Debounce |
+ | Delay | 300ms | Nach letzter Segmented-Control-Interaktion |
+ | Während Laden | Score-Wert zeigt Spinner (CSS animation) | Kein Skeleton — nur val-Bereich |
+
+
+
+
+
+
+
+
S4 · Reset-Bestätigung
E4
+
Planer tippt "Auf Standard zurücksetzen". Ein Dialog erscheint und benennt explizit, was zurückgesetzt wird. Bestätigung löscht den Custom-Config-Eintrag (DELETE) und stellt die Omnivor-Defaults wieder her. Kein Backdrop-Dismiss — der Planer muss explizit wählen.
+
S4 · Modal über S2-Zustand · Backdrop nicht anklickbar · Mobile: Bottom Sheet
+
+
+
+
Mobile · 320px (Bottom Sheet)
+
+
9:41●●●
+
+
+
+
+
+
+
+
Auf Standard zurücksetzen?
+
Alle individuellen Einstellungen werden gelöscht. Der Algorithmus verwendet dann wieder:
• Protein: Aktiv
• Küche: Aktiv
• Alle Gewichte: Mittel
+
Zurücksetzen
+
Abbrechen
+
+
+
+
+
+
+
+
Desktop · 1040px (Centered Modal)
+
+
+
+
+
+
Auf Standard zurücksetzen?
+
Alle individuellen Einstellungen werden gelöscht. Der Algorithmus verwendet dann wieder die Standard-Werte:
+ Protein-Prüfung: Aktiv
+ Küchen-Vielfalt: Aktiv
+ Alle Gewichte: Mittel
+
+
Zurücksetzen
+
Abbrechen
+
+
+
+
+
+
+
+
+
E4 · S4 Reset-Bestätigung
+
/* Reset-Link Tap → Dialog öffnet (kein Backdrop-Dismiss, kein Escape-Dismiss).
+ * "Zurücksetzen" → DELETE /v1/households/mine/variety-config
+ * On success: optimistic reset von UI zu S1 (Omnivor), Score-Banner zeigt echten Score.
+ * On error: Toast "Fehler beim Zurücksetzen".
+ * Mobile: Bottom Sheet (position:fixed, bottom 0, border-radius 20px 20px 0 0).
+ * Desktop: centered modal, backdrop rgba(28,28,24,0.4), max-width 380px. */
+
| Element | Wert | Notizen |
+ | Dialog-Inhalt |
+ | Titel | "Auf Standard zurücksetzen?" | Fraunces 18px (Mobile), 20px (Desktop) |
+ | Body | Auflistung der zurückgesetzten Werte | Muss konkret benennen: Protein aktiv, Küche aktiv, alle Gewichte Mittel |
+ | Primär-Aktion | "Zurücksetzen" → DELETE | Hintergrund: --red, Text: weiß |
+ | Sekundär-Aktion | "Abbrechen" | Ghost-Button, schließt Dialog |
+ | API |
+ | Endpoint | DELETE /v1/households/mine/variety-config | Löscht Custom-Config-Row; Backend fällt auf Defaults zurück |
+ | On Success | UI reset zu S1 | Omnivor chip selected, Score-Banner: echter Score |
+
+
+
+