from pydantic import BaseModel from typing import Optional, List, Dict from enum import Enum class ProductCategory(str, Enum): FOOD = "food" BEVERAGE = "beverage" PERSONAL_CARE = "personal_care" HOUSEHOLD = "household" ELECTRONICS = "electronics" CLOTHING = "clothing" OTHER = "other" class EnvironmentalFactors(BaseModel): deforestation_risk: float # 0-10 pollution_risk: float # 0-10 biodiversity_impact: float # 0-10 class Product(BaseModel): id: Optional[int] = None name: str category: ProductCategory ingredients: List[str] = [] materials: List[str] = [] packaging: List[str] = [] is_organic: bool = False is_recyclable: bool = False contains_palm_oil: bool = False contains_chemicals: bool = False water_usage: str = "medium" # low, medium, high carbon_footprint: str = "medium" # low, medium, high class EcoScoreResult(BaseModel): product_name: str eco_score: float # 1-10 factors: EnvironmentalFactors breakdown: Dict[str, float] class AlternativeProduct(BaseModel): name: str category: str eco_score: float reason: str