E4 — Vielfalt-Einstellungen

Implementierungsspezifikation · V2 Kontext-Preset · Journey J9

v1.0
Screens: E1 (Update) + E4
States: 5
Rolle: Planer only
J9

Vielfalt-Algorithmus konfigurieren

Planer passt Bewertungsregeln an den Haushaltskontext an — primär das Deaktivieren der Protein-Prüfung für vegetarische Haushalte.

E1 → E4 → C3 · Planer only · Auto-Save · Reset benötigt Bestätigung
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●●●
Einstellungen
12
Vorräte
Zutaten immer vorrätig
Bearbeiten →
3
Haushalt
Mitglieder
Verwalten →
7.4
Vielfalt
Diese Woche
Einstellungen →
📅
Plan
🛒
Einkauf
🍳
Rezepte
⚙️
Einstellungen
Desktop · 1040px
Planung
📅 Wochenplan
🛒 Einkaufsliste
🍳 Rezepte
Haushalt
⚙️ Einstellungen
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. */
ElementWertNotizen
Vielfalt-Kachel
KennzahlvarietyScore.score, 1 DezimalstelleFarbe: --purple normal, --orange wenn < 6.0
LabelVielfalt-EinstellungenDesktop; Mobile: "Vielfalt"
Sub-Label"Diese Woche" / "Kein Plan" / "–"Kein Plan = kein weekPlan für aktuelle Woche
Randborder-left: 3px solid --purpleAnalog zu Vorräte → --green-dark
AktionTap → navigate /settings/varietyRoute: +page.svelte unter (app)/settings/variety/
Grid-Layout
MobileVorräte fullwidth + grid-template-columns: 1fr 1fr untenGap: 12px
DesktopVorräte fullwidth + grid-template-columns: 1fr 1fr untenMax-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●●●
← Einstellungen
Vielfalt
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
📊
📅
Plan
🛒
Einkauf
🍳
Rezepte
⚙️
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
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. */
ElementWertNotizen
Laden
Config-LoadGET /v1/households/mine/variety-config404 → Defaults verwenden, Omnivor selected
Score-LoadGET /v1/week-plans/{id}/variety-scoreNur wenn weekPlan existiert; sonst Score-Banner ausblenden
Kontext-Chips
OmnivorrepeatTagTypes: ["protein","cuisine"], alle Gewichte StandardDefault-Preset = backend defaults
VegetarischrepeatTagTypes: ["cuisine"], wTagRepeat StandardProtein deaktiviert
VeganrepeatTagTypes: ["cuisine"], wTagRepeat StandardIdentisch zu Vegetarisch in v1
IndividuellErscheint automatisch wenn Advanced abweicht vom PresetKein manuell wählbarer Chip — nur automatisch
Score-Banner (S1)
WertAktueller 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●●●
← Einstellungen
Vielfalt
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
📈
📅
Plan
🛒
Einkauf
🍳
Rezepte
⚙️
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
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. */
ElementWertNotizen
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-EndpointPOST /v1/week-plans/{id}/variety-score/simulateBody: VarietyScoreConfig-Felder. Neuer Endpoint nötig (Backend-Task).
Kein PlanScore-Banner ausblendenKein simulierter Score ohne Plan möglich
Chip-Preset Vegetarisch
repeatTagTypes["cuisine"]Protein entfernt
wTagRepeat1.5 (Standard)Unverändert
wIngredientOverlap0.3 (Standard)Unverändert
wRecentRepeat1.0 (Standard)Unverändert
wPlanDuplicate2.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●●●
← Einstellungen
Vielfalt
Haushaltskontext
🥩
Omnivor
🥦
Vegetarisch
🌱
Vegan
Individuell
– 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.
Küche
Tag-Wiederholung
Niedrig
Mittel
Hoch
Zutaten
Überschneidung
Niedrig
Mittel
Hoch
Letzte Wochen
Kochverlauf
Niedrig
Mittel
Hoch
Duplikate
Im Plan
Niedrig
Mittel
Hoch
Mit diesen Einstellungen
8.1
↑ +0.7 gegenüber vorher
📈
📅
Plan
🛒
Einkauf
🍳
Rezepte
⚙️
Einstellungen
Desktop · 1040px
Planung
📅 Wochenplan
🛒 Einkaufsliste
🍳 Rezepte
Haushalt
⚙️ Einstellungen
Einstellungen Vielfalt-Einstellungen
Vielfalt-Einstellungen
Haushaltskontext
🥩
Omnivor
Alle Regeln
🥦
Vegetarisch
Protein aus
🌱
Vegan
Protein aus
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
Niedrig
Mittel
Hoch
Zutaten-Überschneidung
Gleiche Zutaten an aufeinanderfolgenden Tagen
Niedrig
Mittel
Hoch
Letzte Wochen
Kochverlauf (14 Tage)
Niedrig
Mittel
Hoch
Doppelte Rezepte
Gleiches Rezept mehrfach im Plan
Niedrig
Mittel
Hoch
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. */
ElementWertNotizen
Gewicht-Mapping
NiedrigFaktor 0.5 × Standard-GewichtwTagRepeat: 0.75, wIngredient: 0.15, wRecent: 0.5, wDuplicate: 1.0
MittelFaktor 1.0 (Standard)wTagRepeat: 1.5, wIngredient: 0.3, wRecent: 1.0, wDuplicate: 2.0
HochFaktor 1.5 × Standard-GewichtwTagRepeat: 2.25, wIngredient: 0.45, wRecent: 1.5, wDuplicate: 3.0
Individuell-Chip
TriggerWenn gespeicherter Config ≠ Omnivor, Vegetarisch, oder Vegan PresetLila Border + Hintergrund
Symbol✦ (U+2726)Statt Emoji
LabelIndividuellNicht anklickbar — nur Status-Indikator
Simulation-Debounce
Delay300msNach letzter Segmented-Control-Interaktion
Während LadenScore-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●●●
← Einstellungen
Vielfalt
🥦
Vegetarisch
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
📅
Plan
🛒
Einkauf
🍳
Rezepte
⚙️
Einstellungen
Desktop · 1040px (Centered Modal)
Vielfalt-Einstellungen
🥦
Vegetarisch

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. */
ElementWertNotizen
Dialog-Inhalt
Titel"Auf Standard zurücksetzen?"Fraunces 18px (Mobile), 20px (Desktop)
BodyAuflistung der zurückgesetzten WerteMuss konkret benennen: Protein aktiv, Küche aktiv, alle Gewichte Mittel
Primär-Aktion"Zurücksetzen" → DELETEHintergrund: --red, Text: weiß
Sekundär-Aktion"Abbrechen"Ghost-Button, schließt Dialog
API
EndpointDELETE /v1/households/mine/variety-configLöscht Custom-Config-Row; Backend fällt auf Defaults zurück
On SuccessUI reset zu S1Omnivor chip selected, Score-Banner: echter Score

Maschinenlesbare Spezifikation — E4 Vielfalt-Einstellungen

Screens

ScreenRouteZugriffZweck
E1 (Update)/settingsPlanerSettings-Hub: dritte Kachel "Vielfalt-Einstellungen" mit aktuellem Score
E4/settings/varietyPlaner onlyVielfalt-Algorithmus per Kontext-Preset und Feineinstellungen konfigurieren

States

StateTriggerBeschreibung
S0E1 loadSettings-Hub zeigt Score-Kachel (lila Kennzahl)
S1E4 load, kein Custom-ConfigOmnivor chip selected, Score = aktueller echter Score, Reset-Link = deaktiviert/neutral
S2Preset-Chip tapChip wechselt, PATCH, Score-Simulation lädt und zeigt Delta
S3Accordion öffnen + Gewicht ändernIndividuell-Chip erscheint, Score-Simulation mit Debounce 300ms
S4Reset-Link tapModal/Bottom Sheet — Bestätigung vor DELETE

API-Endpoints (neu + bestehend)

MethodEndpointNeu?Zweck
GET/v1/households/mine/variety-configNeuAktuellen Config laden; 404 = Defaults verwenden
PATCH/v1/households/mine/variety-configNeuConfig speichern (auto-save bei jedem Preset/Gewicht-Wechsel)
DELETE/v1/households/mine/variety-configNeuCustom-Config löschen, Backend fällt auf Defaults zurück
POST/v1/week-plans/{id}/variety-score/simulateNeuScore simulieren mit temporärem Config-Body (nicht persistiert)
GET/v1/week-plans/{id}/variety-scoreBestehendAktuellen Score laden (für S1 Banner + E1 Kachel)

Kontext-Preset Mapping

PresetrepeatTagTypeswTagRepeatwIngredientOverlapwRecentRepeatwPlanDuplicate
Omnivor (Default)["protein","cuisine"]1.50.31.02.0
Vegetarisch["cuisine"]1.50.31.02.0
Vegan["cuisine"]1.50.31.02.0
IndividuellBeliebig (≠ obige Presets)BeliebigBeliebigBeliebigBeliebig

Gewicht-Preset Mapping

StufeFaktorwTagRepeatwIngredientOverlapwRecentRepeatwPlanDuplicate
Niedrig×0.50.750.150.51.0
Mittel×1.01.50.31.02.0
Hoch×1.52.250.451.53.0

Implementierungsregeln (für Agenten)