from pydantic import BaseModel from typing import Optional, List from datetime import datetime class ScanRequest(BaseModel): barcode: str class IngredientAnalysis(BaseModel): name: str popular_name: Optional[str] = None explanation: str classification: str # "good", "warning", "bad" reason: str class ScanResult(BaseModel): barcode: str product_name: Optional[str] = None brand: Optional[str] = None category: Optional[str] = None image_url: Optional[str] = None score: int summary: str positives: List[str] negatives: List[str] ingredients: List[IngredientAnalysis] nutri_score: Optional[str] = None nova_group: Optional[int] = None source: str = "open_food_facts" class ScanHistoryItem(BaseModel): id: int barcode: str product_name: Optional[str] = None brand: Optional[str] = None score: int scanned_at: datetime