Public Access
44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import date
|
|
from decimal import Decimal
|
|
from typing import Dict, List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class GenerateRequest(BaseModel):
|
|
family_profile_id: UUID
|
|
week_start_date: date
|
|
|
|
|
|
class RegenerateRequest(BaseModel):
|
|
family_profile_id: UUID
|
|
week_start_date: date
|
|
exclude_recipe_ids: List[UUID] = Field(default_factory=list)
|
|
relax_time_max_minutes: Optional[int] = Field(default=None, ge=0)
|
|
relax_calorie_pct: Optional[int] = Field(default=None, ge=0, le=100)
|
|
relax_max_meal_cost: Optional[float] = Field(default=None, ge=0)
|
|
|
|
|
|
class GenerationItem(BaseModel):
|
|
recipe_id: UUID
|
|
day_of_week: int
|
|
estimated_cost: Decimal
|
|
score: float
|
|
components: Dict[str, float]
|
|
|
|
|
|
class GenerationDebug(BaseModel):
|
|
feasible_count: int
|
|
rejected_summary: Dict[str, int]
|
|
set_score: float
|
|
|
|
|
|
class GenerationResponse(BaseModel):
|
|
meal_plan_id: UUID
|
|
week_start_date: date
|
|
items: List[GenerationItem]
|
|
debug: GenerationDebug
|