from datetime import date from enum import Enum from pydantic import BaseModel class TimePeriod(str, Enum): TODAY = "today" YESTERDAY = "yesterday" LAST_7_DAYS = "last_7_days" LAST_30_DAYS = "last_30_days" THIS_MONTH = "this_month" LAST_MONTH = "last_month" THIS_YEAR = "this_year" ALL_TIME = "all_time" class SalesSummary(BaseModel): period: TimePeriod total_sales: float total_orders: int average_order_value: float refunded_amount: float class DateSales(BaseModel): date: date total_sales: float order_count: int class SalesOverTime(BaseModel): period: TimePeriod data: list[DateSales] total_sales: float total_orders: int class CategorySales(BaseModel): category_id: str category_name: str total_sales: float percentage: float class TopCategorySales(BaseModel): period: TimePeriod categories: list[CategorySales] total_sales: float class ProductSales(BaseModel): product_id: str product_name: str quantity_sold: int total_sales: float class TopProductSales(BaseModel): period: TimePeriod products: list[ProductSales] total_sales: float class CustomerSales(BaseModel): user_id: str user_name: str order_count: int total_spent: float class TopCustomerSales(BaseModel): period: TimePeriod customers: list[CustomerSales] total_sales: float class DashboardSummary(BaseModel): sales_summary: SalesSummary pending_orders: int low_stock_products: int new_customers: int total_products: int total_customers: int class OrdersPerStatus(BaseModel): status: str count: int percentage: float