mickeywu520's picture
first commit
cd9bca9
raw
history blame
3.15 kB
from pydantic import BaseModel, Field
from typing import Optional, Dict, Any, List
from datetime import datetime
from enum import Enum
class QueryType(str, Enum):
"""查詢類型枚舉"""
SEARCH = "search"
CREATE = "create"
UPDATE = "update"
DELETE = "delete"
ANALYTICS = "analytics"
UNKNOWN = "unknown"
class NLPAnalysisRequest(BaseModel):
"""NLP 分析請求模型"""
message: str = Field(..., description="用戶輸入的訊息")
user_id: Optional[str] = Field(None, description="用戶ID")
context: Optional[Dict[str, Any]] = Field(default_factory=dict, description="上下文資訊")
class NLPAnalysisResult(BaseModel):
"""NLP 分析結果模型"""
query_type: QueryType = Field(..., description="查詢類型")
intent: str = Field(..., description="用戶意圖")
entities: Dict[str, Any] = Field(default_factory=dict, description="提取的實體")
confidence: float = Field(..., ge=0.0, le=1.0, description="信心度")
parameters: Dict[str, Any] = Field(default_factory=dict, description="查詢參數")
class DatabaseQuery(BaseModel):
"""資料庫查詢模型"""
table_name: str = Field(..., description="資料表名稱")
operation: str = Field(..., description="操作類型")
conditions: Optional[Dict[str, Any]] = Field(default_factory=dict, description="查詢條件")
data: Optional[Dict[str, Any]] = Field(default_factory=dict, description="要操作的資料")
limit: Optional[int] = Field(None, description="查詢限制數量")
offset: Optional[int] = Field(None, description="查詢偏移量")
class DatabaseResult(BaseModel):
"""資料庫查詢結果模型"""
success: bool = Field(..., description="是否成功")
data: Optional[List[Dict[str, Any]]] = Field(default_factory=list, description="查詢結果資料")
count: Optional[int] = Field(None, description="結果數量")
error: Optional[str] = Field(None, description="錯誤訊息")
class LineMessage(BaseModel):
"""LINE 訊息模型"""
user_id: str = Field(..., description="用戶ID")
message: str = Field(..., description="訊息內容")
timestamp: datetime = Field(default_factory=datetime.now, description="時間戳記")
message_type: str = Field(default="text", description="訊息類型")
class UserProfile(BaseModel):
"""用戶資料模型"""
user_id: str = Field(..., description="用戶ID")
display_name: Optional[str] = Field(None, description="顯示名稱")
status_message: Optional[str] = Field(None, description="狀態訊息")
picture_url: Optional[str] = Field(None, description="頭像URL")
created_at: datetime = Field(default_factory=datetime.now, description="建立時間")
updated_at: datetime = Field(default_factory=datetime.now, description="更新時間")
class APIResponse(BaseModel):
"""API 回應模型"""
success: bool = Field(..., description="是否成功")
message: str = Field(..., description="回應訊息")
data: Optional[Any] = Field(None, description="回應資料")
error: Optional[str] = Field(None, description="錯誤訊息")