File size: 3,151 Bytes
cd9bca9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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="錯誤訊息")