Restructure food suggestion data and builder logic

This commit is contained in:
2026-04-13 17:55:11 +02:00
parent 6c7c1f01c9
commit 305440a6b2
5 changed files with 820 additions and 67 deletions
+99
View File
@@ -7,6 +7,15 @@ DAYPARTS = [
{"slug": "late-snack", "name": "Später Snack", "sort_order": 60},
]
DAYPART_SLUG_TO_MEAL_TYPE = {
"breakfast": "breakfast",
"morning-snack": "snack",
"lunch": "lunch",
"afternoon-snack": "snack",
"dinner": "dinner",
"late-snack": "snack",
}
DEFAULT_CATEGORIES = [
"Kohlenhydrate",
"Milchprodukt",
@@ -58,6 +67,42 @@ BUILDER_DESCRIPTIONS = {
BUILDER_OPTIONS = [(key, label) for key, label in BUILDER_LABELS.items()]
FOOD_ROLE_LABELS = {
"main": "Hauptbaustein",
"base": "Basis",
"complement": "Ergänzung",
"topping": "Topping",
"cooking": "Kochzutat",
"snack": "Snack-Baustein",
"solo": "Schnelle Einzelmahlzeit",
}
FOOD_ROLE_DESCRIPTIONS = {
"main": "Kann einen Teller oder eine Hauptmahlzeit deutlich tragen.",
"base": "Passt gut als Grundlage und lässt sich ruhig ergänzen.",
"complement": "Hilft beim Ergänzen, steht aber selten für sich allein.",
"topping": "Passt eher oben drauf oder als kleines Extra.",
"cooking": "Hilft beim Kochen oder Abschmecken, ist aber selten selbst die Mahlzeit.",
"snack": "Passt gut für kleine Zwischenmahlzeiten oder als ruhige Ergänzung.",
"solo": "Kann auch alleine als schnelle, einfache Mahlzeit funktionieren.",
}
FOOD_ROLE_OPTIONS = [(key, label) for key, label in FOOD_ROLE_LABELS.items()]
SUGGESTION_PRIORITY_OPTIONS = [
("prefer", "Gern vorschlagen"),
("normal", "Normal vorschlagen"),
("rare", "Eher selten automatisch vorschlagen"),
("never", "Nie automatisch vorschlagen"),
]
SUGGESTION_PRIORITY_LABELS = {
"prefer": "Gern vorschlagen",
"normal": "Normal vorschlagen",
"rare": "Eher selten automatisch vorschlagen",
"never": "Nie automatisch vorschlagen",
}
ENERGY_DENSITY_OPTIONS = [
("low", "Eher leicht"),
("neutral", "Neutral"),
@@ -74,12 +119,66 @@ SUGGESTION_STYLE_OPTIONS = [
("balanced", "Eher ausgewogen"),
("fitness", "Fitness"),
("protein", "Proteinbetont"),
("easy", "Leicht und einfach"),
("snack", "Snackorientiert"),
]
SUGGESTION_STYLE_LABELS = {
"balanced": "Eher ausgewogen",
"fitness": "Fitness",
"protein": "Proteinbetont",
"easy": "Leicht und einfach",
"snack": "Snackorientiert",
}
PROTEIN_PREFERENCE_OPTIONS = [
("mixed", "Offen gemischt"),
("veg-friendly", "Überwiegend vegetarisch"),
("rare-animal", "Fleisch und Fisch nur selten"),
("plant-forward", "Möglichst pflanzlich"),
]
PROTEIN_PREFERENCE_LABELS = {
"mixed": "Offen gemischt",
"veg-friendly": "Überwiegend vegetarisch",
"rare-animal": "Fleisch und Fisch nur selten",
"plant-forward": "Möglichst pflanzlich",
}
MEAL_TYPE_OPTIONS = [
("breakfast", "Frühstück"),
("lunch", "Mittagessen"),
("dinner", "Abendessen"),
("snack", "Snack"),
]
MEAL_TYPE_LABELS = {
"breakfast": "Frühstück",
"lunch": "Mittagessen",
"dinner": "Abendessen",
"snack": "Snack",
}
MEAL_STYLE_OPTIONS = [
("sweet", "Süß"),
("savory", "Herzhaft"),
("warm", "Warm"),
("cold", "Kalt"),
("quick", "Schnell"),
("simple", "Ruhig und einfach"),
("prep", "Gut vorbereitbar"),
("portable", "Für unterwegs"),
]
MEAL_STYLE_LABELS = {
"sweet": "Süß",
"savory": "Herzhaft",
"warm": "Warm",
"cold": "Kalt",
"quick": "Schnell",
"simple": "Ruhig und einfach",
"prep": "Gut vorbereitbar",
"portable": "Für unterwegs",
}
WEEKDAY_OPTIONS = [