from datetime import date, datetime from typing import List, Optional from pydantic import BaseModel from app.models.transaction import TransactionType class InventoryValueItem(BaseModel): id: int name: str sku: str quantity: int price: float total_value: float class InventoryValueReport(BaseModel): total_inventory_value: float items: List[InventoryValueItem] report_date: datetime = datetime.utcnow() class CategorySummaryItem(BaseModel): category_id: int category_name: str item_count: int total_value: float average_price: float class CategorySummaryReport(BaseModel): categories: List[CategorySummaryItem] report_date: datetime = datetime.utcnow() class LowStockItem(BaseModel): id: int name: str sku: str quantity: int reorder_level: int category_name: Optional[str] = None class LowStockReport(BaseModel): low_stock_items: List[LowStockItem] report_date: datetime = datetime.utcnow() class TransactionSummaryItem(BaseModel): transaction_type: TransactionType count: int total_quantity: int total_value: Optional[float] = None class TransactionSummaryReport(BaseModel): start_date: date end_date: date transactions: List[TransactionSummaryItem] report_date: datetime = datetime.utcnow()