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
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 |