TriVenture-BE / src /apis /interfaces /api_interface.py
ABAO77's picture
Upload 164 files
0171bb1 verified
Raw History Blame Contribute Delete
4.68 kB
from pydantic import BaseModel, Field
from typing import Optional
from src.apis.models.BaseModel import BaseDocument
from typing import List, Union
class Chat(BaseModel):
message: str = Field(..., title="Message from user")
session_id: Optional[str] = Field(None, title="Session Id")
history: Optional[list] = Field(None, title="Chat history")
lat: Optional[float] = Field(None, title="Latitude")
long: Optional[float] = Field(None, title="Longitude")
intent: Optional[str] = Field(None, title="Intent")
language: Optional[str] = Field("en", title="Language")
class Config:
json_schema_extra = {
"example": {
"message": "Đề xuất cho 1 địa điểm",
"session_id": "6d16c975e8b74d979d6d680e6ff536eb",
"history": [
{"content": "tìm khách sạn xịn ở QUy Nhơn", "type": "human"},
{
"content": "search_hotels_luxury on frontend for user to select",
"type": "ai",
},
],
"lat": 13.717162954654036,
"long": 109.21054173319894,
"intent": None,
"language": "Vietnamese",
}
}
class ChatHistory(BaseModel):
session_id: Optional[str] = Field(None, title="Session Id")
class Config:
json_schema_extra = {"example": {"session_id": "6701fe32d76fde9d8df1de8e"}}
class ChatHistoryManagement(BaseDocument):
session_id: str = Field("6701fe32d76fde9d8df1de8e", title="Session Id")
user_id: str = Field("6701fe32d76fde9d8df1de8e", title="User Id")
intent: Optional[str] = Field(None, title="Intent")
class Config:
json_schema_extra = {
"example": {
"session_id": "6701fe32d76fde9d8df1de8e",
"user_id": "6701fe32d76fde9d8df1de8e",
"intent": "greeting",
}
}
class Location(BaseModel):
lat: float = Field(13.717162954654036, title="Latitude")
long: float = Field(109.21054173319894, title="Longitude")
radius: Optional[int] = Field(5000, title="Radius in meters")
location_text: Optional[str] = Field("Hanoi", title="Location text")
categories: Optional[str] = Field("interesting_places", title="Type of places")
class Config:
json_schema_extra = {
"example": {
"lat": 13.717162954654036,
"long": 109.21054173319894,
"radius": 5000,
"location_text": "Hanoi",
"categories": "interesting_places",
}
}
class Destination(BaseModel):
id: Optional[str] = Field(..., title="Destination Id", min_length=0)
name: Optional[str] = Field(..., title="Destination Name", min_length=1)
description: Optional[str] = Field(..., title="Description", min_length=0)
image: Optional[str] = Field(..., title="Image", min_length=0)
class Planning(BaseModel):
duration: str = Field("7", title="Duration")
start_date: str = Field("June 1-7", title="Start date")
end_date: str = Field("June 1-7", title="End date")
location: str = Field("Quy Nhon, Vietnam", title="Location")
interests: str = Field("natural, cultural", title="Interests")
nation: str = Field("Vietnamese", title="Nation")
include_destination: Optional[List[Union[Destination, str]]] = Field(
[], title="Include destinations"
)
limit_interation: Optional[int] = Field(3, title="Limit interation")
class Config:
json_schema_extra = {
"example": {
"duration": "7",
"start_date": "June 1-7",
"location": "Quy Nhon, Vietnam",
"interests": "natural, cultural",
"nation": "nation",
"include_destination": {
"destination": "Ky Co Beach",
"description": "Ky Co Beach is a beautiful beach in Quy Nhon, Vietnam",
},
"limit_interation": 3,
}
}
{
"duration": "6",
"start_date": "2025-03-18",
"end_date": "2025-03-24",
"include_destination": [
{"id": "", "name": "KHU DÃ NGOẠI TRUNG LƯƠNG", "description": "", "image": ""},
{"id": "", "name": "NÚI VŨNG CHUA", "description": "", "image": ""},
],
"interests": "natural, cultural",
"location": "Quy Nhon, Vietnam",
"nation": "Vietnamese",
"limit_interation": 5,
}