LogicGoInfotechSpaces's picture
Integrate OpenAI recommendations
18afae5
from pydantic import BaseModel, Field
from typing import Optional
from datetime import datetime
from enum import Enum
class ExpenseType(str, Enum):
INCOME = "income"
EXPENSE = "expense"
class Expense(BaseModel):
user_id: str
amount: float = Field(..., gt=0, description="Expense amount")
category: str = Field(..., description="Expense category (e.g., Groceries, Transport)")
description: Optional[str] = None
date: datetime
type: ExpenseType = ExpenseType.EXPENSE
class Budget(BaseModel):
user_id: str
category: str
amount: float = Field(..., gt=0, description="Budget amount")
period: str = Field(..., description="Budget period: daily, weekly, monthly, yearly")
start_date: datetime
end_date: Optional[datetime] = None
class BudgetRecommendation(BaseModel):
category: str
average_expense: float
recommended_budget: float
reason: str
confidence: float = Field(..., ge=0, le=1, description="Confidence score (0-1)")
action: Optional[str] = Field(
None,
description="AI suggestion: increase, decrease, or keep"
)
class CategoryExpense(BaseModel):
category: str
average_monthly_expense: float
total_expenses: int
months_analyzed: int