premium: configurar días y comidas de una semana concreta

Hasta ahora includeWeekends y activeMealTypes vivían solo en AppSettings y
aplicaban a todo el calendario. WeekPlan puede ahora sobreescribirlos para su
semana (includeWeekendsOverride / mealTypesOverrideRaw) y WeekSchedule resuelve
qué manda en cada semana: su override si lo tiene, los ajustes globales si no.

Todo lo que pintaba días y comidas —planificador, exports, compartir texto,
widget, watch— pasa por settings.schedule(for:), así que una semana con fin de
semana añadido o con desayuno activo se ve igual en todas partes.

Crear o editar el override es premium; los ya guardados se respetan aunque la
suscripción caduque, para no borrar comidas ya planificadas. La hoja avisa y
pide confirmación cuando quitar un día o una comida se lleva por delante algo
ya planificado.

Refs #32

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013su1ttRiMeMYxkZJ1Y3246
This commit is contained in:
alexandrev-tibco
2026-09-12 12:05:34 +02:00
parent e58227a113
commit 66128e7a5c
21 changed files with 777 additions and 17 deletions
@@ -462,3 +462,19 @@
"stats_dishes_per_tag_title" = "Plats par étiquette";
"violations_banner_title" = "%d repas ne respecte(nt) pas vos règles";
"violations_banner_cta" = "Voir";
/* Per-week schedule (2.1.1, premium) */
"week_schedule_title" = "Cette semaine seulement";
"week_schedule_intro" = "Modifiez les jours et les repas de cette semaine précise, sans toucher à vos réglages généraux.";
"week_schedule_premium_message" = "Personnaliser une seule semaine est réservé au Premium";
"week_schedule_meals_section" = "Repas de cette semaine";
"week_schedule_meals_footer" = "Activez le petit-déjeuner ou le goûter juste pour cette semaine. Au moins un repas doit rester actif.";
"week_schedule_days_section" = "Jours de cette semaine";
"week_schedule_apply" = "Appliquer";
"week_schedule_reset" = "Revenir à mes réglages généraux";
"week_schedule_reset_footer" = "Cette semaine suivra de nouveau vos réglages généraux.";
"week_schedule_warning_title" = "Des repas planifiés seront perdus";
"week_schedule_warning_message" = "En retirant ces jours ou ces repas, %d repas déjà planifiés cette semaine seront supprimés.";
"week_schedule_warning_confirm" = "Retirer quand même";
"toast_week_schedule_updated" = "Semaine mise à jour";
"toast_week_schedule_reset" = "Semaine revenue à vos réglages généraux";