Autocomplete feedback loop: implicit rejection + weekly rating

A) Implicit: HomeViewModel tracks auto-assigned slot IDs after each
   autocomplete run. When the user manually replaces one of those dishes,
   the rejected dish ID is recorded in FeedbackStore (UserDefaults).
   AutocompleteEngine applies a 25% penalty per rejection (floor 0.30).

B) Explicit: WeekPlan gains userRating (0/1/-1). Past weeks with dishes
   show a compact 👍/👎 row (Premium only). Liked weeks boost their
   dishes (+0.20 each, max +0.50); disliked weeks penalise them
   (-0.25 each, max -0.50). Signal is intentionally modest so the
   period cycle score remains dominant.

Also adds Stats + week-rating localization strings to all 6 languages
(were missing from the previous commit).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-05-27 18:09:15 +02:00
parent e13771fa06
commit 84b74f9ea4
12 changed files with 195 additions and 6 deletions
@@ -325,3 +325,16 @@
"notification_sunday_title" = "Plane deine nächste Woche";
"notification_sunday_body" = "Es ist Sonntag — nimm dir 2 Minuten, um die Mahlzeiten der nächsten Woche zu planen.";
/* Stats */
"stats_title" = "Statistiken";
"stats_streak_label" = "Wochen-Serie";
"stats_weeks_planned_label" = "Geplante Wochen";
"stats_complete_weeks_label" = "Vollständige Wochen";
"stats_completion_rate_label" = "Abschlussrate";
"stats_top_dishes_title" = "Meistgenutzte Gerichte";
"stats_tags_title" = "Nach Kategorie";
"stats_no_data" = "Noch keine Daten";
/* Week rating */
"week_rating_prompt" = "Wie war diese Woche?";