fix(veckoplan): byt-ratt-fel, navigera veckor, lagg till maltid manuellt

- Byt rätt gav 'något gick fel': limit=30 översteg schemats tak (20).
  Höjt taket till 50, byt rätt hämtar 40 + sök vilken rätt som helst.
- Veckonavigering: pilarna byter nu VECKA (weekOffset) i stället för att
  bara flytta markerad dag -> går att planera nästa vecka. Titel visar
  veckans datumintervall; bakåt spärras före denna vecka.
- Lägg till måltid: ny POST /v1/week-plans/:id/entries + knapp 'Lägg till
  måltid' (väljer måltidstyp -> receptväljaren i lägg-till-läge) + knapp
  'Planera om veckan'. Går nu att fylla en tom dag igen.
Verifierat: swap 200 (40 varierade), add-entry 201, delete 200, api 104/104.
This commit is contained in:
Claude
2026-08-20 00:54:32 +00:00
parent 9b3456b080
commit ceceb63e8e
17 changed files with 232 additions and 34 deletions
+8
View File
@@ -27,6 +27,14 @@ export const updatePlanEntryInputSchema = z.object({
});
export type UpdatePlanEntryInput = z.infer<typeof updatePlanEntryInputSchema>;
/** Lägg till en enskild måltid manuellt i en plan (t.ex. på en tom dag). */
export const addPlanEntryInputSchema = z.object({
date: dateStringSchema,
mealType: z.enum(MEAL_TYPES),
recipeId: uuidSchema,
});
export type AddPlanEntryInput = z.infer<typeof addPlanEntryInputSchema>;
export const weekPlanQuerySchema = z.object({
weekStartDate: dateStringSchema.optional(),
});
+1 -1
View File
@@ -20,7 +20,7 @@ export const whatToEatQuerySchema = z.object({
/** Filtrera på en högtid/säsong (recept-holidayTag-slug, t.ex. "jul"). */
holiday: z.string().max(60).optional(),
includeLeftovers: z.coerce.boolean().default(true),
limit: z.coerce.number().int().min(1).max(20).default(5),
limit: z.coerce.number().int().min(1).max(50).default(5),
/** Personaliseringsvy: smak, hälsa eller lager. Kräver personalization-samtycke. */
view: z.enum(["default", "taste", "health", "pantry", "swap"]).default("default"),
});