Spaces:
Running
Running
# models.py | |
from pydantic import BaseModel, Field | |
from typing import List, Dict, Optional | |
class TravelDataInput(BaseModel): | |
destination: Optional[str] = Field(None, description="e.g., Neelum Valley") | |
location_type: str = Field(..., description="City, Beach, Mountain, etc.") | |
province: str = Field(..., description="Punjab, Sindh, etc.") | |
starting_location: str = Field(..., description="e.g., Islamabad") | |
gender: str = Field(..., description="Male, Female, Mixed") | |
num_people: int = Field(..., gt=0, description="Number of people") | |
has_children: bool = Field(False, description="Whether children are present") | |
activity_type: str = Field(..., description="Adventure, Sightseeing, Both") | |
travel_group: str = Field(..., description="Solo, With partner, etc.") | |
preferences: List[str] = Field([], description="Cultural Experience, Food, etc.") | |
budget: int = Field(0, ge=0, description="Budget in PKR") | |
num_days: int = Field(..., gt=0, description="Number of days") | |
additional_preferences: Optional[str] = Field(None, description="Any other requests") | |
class PlanResponse(BaseModel): | |
plan_text: str | |
destination_used: str | |
images: List[Dict] | |
image_queries_used: List[str] | |
source: str | |
class ExtractionInput(BaseModel): | |
plan_text: str | |
class PackageData(BaseModel): | |
packageName: str | |
packageDescription: str | |
packageDestination: str | |
packageDays: int | |
packageNights: int | |
packageAccommodation: str | |
packageTransportation: str | |
packageMeals: str | |
packageActivities: str | |
packagePrice: Optional[float] | |
packageDiscountPrice: Optional[float] | |
packageOffer: bool | |
packageRating: int | |
packageTotalRatings: int | |
packageImages: Optional[List[Dict]] = None | |
class ChatMessage(BaseModel): | |
role: str # user or assistant | |
content: str | |
class ChatInput(BaseModel): | |
plan_text: str | |
destination: str | |
num_days: int | |
chat_history: List[ChatMessage] | |
user_input: str | |
class ChatResponse(BaseModel): | |
assistant_response: str | |