TriVenture-BE / src /langgraph /models /model_validator.py
ABAO77's picture
Upload 157 files
ec6867d verified
from pydantic import BaseModel, Field, EmailStr
# from typing import Optional
# from datetime import datetime, timezone
# class BaseDocument(BaseModel):
# created_at: Optional[datetime] = Field(
# default_factory=lambda: datetime.now(timezone.utc)
# )
# updated_at: Optional[datetime] = Field(
# default_factory=lambda: datetime.now(timezone.utc)
# )
# class Config:
# arbitrary_types_allowed = True
# class Activity(BaseDocument):
# id: Optional[str] = Field("", description="Activity's id")
# user_id: str = Field("", description="User's id")
# activity_category: str = Field("", description="Activity's category")
# description: str = Field("", description="Activity's description")
# start_time: Optional[datetime] = Field("", description="Activity's start time")
# end_time: Optional[datetime] = Field("", description="Activity's end time")
# class BookHotel(BaseDocument):
# hotel_name: str = Field("", description="Hotel's name")
# address: str = Field("", description="Hotel's address")
# phone_number: str = Field("", description="Hotel's phone number")
# hotel_email: EmailStr = Field("", description="Hotel's email")
# start_time: Optional[datetime] = Field("", description="Start time of the booking")
# end_time: Optional[datetime] = Field("", description="End time of the booking")
# rating: str = Field("", description="Hotel's rating")
# website: str = Field("", description="Hotel's website")
# class Config:
# json_schema_extra = {
# "example": {
# "hotel_name": "Blue Lagoon Resort",
# "address": "123 Beachside Blvd, Paradise City, Island Nation 54321",
# "phone_number": "+1234567890",
# "hotel_email": "baohtqe170017@fpt.edu.vn",
# "start_time": "2025-01-05T14:00:00.000+00:00",
# "end_time": "2025-01-10T11:00:00.000+00:00",
# "rating": "4.5",
# "website": "https://www.bluelagoonresort.com",
# }
# }
class NearlyDestinationRecommendation(BaseModel):
query: str = Field(
...,
title="Query related to wanting to go somewhere",
description="Auto extracted from user's message. Using Vietnamese language for better results.",
)
places: str = Field(..., title="Places", description="place mention in query")
kinds: str = Field(
...,
title="Kinds",
description="""
Kinds of places you want to find choose one of options:
["architecture", "historic", "cultural", "natural", "sport", "religion", "accomodations", "foods", "shops", "other"]""",
)
class Config:
json_schema_extra = {
"example": {"query": "Địa điểm gần Hà Nội" "places" "Hà Nội"}
}