業務查詢系統使用指南
概述
本系統為您的 LINE 官方帳號提供了智能業務查詢功能,用戶可以透過自然語言詢問商品、庫存、訂單等業務資訊。系統整合了 Pydantic AI 進行語意分析,並提供友善的中文回應。
系統架構
LINE 用戶訊息 → LINE Bot Service → Business Query Service → NLP Service + Database Service → 回應用戶
核心組件
NLP Service (
backend/services/nlp_service.py
)- 自然語言處理和意圖識別
- 實體提取和信心度計算
- 支援業務相關的查詢模式
Database Service (
backend/services/database_service.py
)- 資料庫查詢操作
- 業務專用查詢方法
- 支援商品、庫存、訂單等查詢
Business Query Service (
backend/services/business_query_service.py
)- 整合 NLP 和資料庫服務
- 統一的查詢處理入口
- 格式化回應訊息
LINE Bot Service (
backend/services/line_bot_service.py
)- 處理 LINE 平台的訊息
- 用戶管理和對話流程
- 快速回覆按鈕生成
支援的查詢類型
1. 商品查詢
用戶可以這樣問:
- "查詢商品 iPhone"
- "有什麼筆記型電腦"
- "商品價格查詢"
- "找找看有沒有滑鼠"
系統回應範例:
找到商品:
名稱:iPhone 14 Pro
描述:最新款智慧型手機
價格:$35,900
類別:手機
2. 庫存查詢
用戶可以這樣問:
- "庫存查詢 iPhone"
- "筆記型電腦還有多少"
- "查詢存貨狀況"
- "iPhone 的庫存"
系統回應範例:
庫存資訊:
商品:iPhone 14 Pro
目前庫存:25 件
類別:手機
價格:$35,900
3. 訂單查詢
用戶可以這樣問:
- "我的訂單"
- "查詢訂單狀態"
- "訂單編號 ORD001"
- "購買記錄"
系統回應範例:
找到 3 筆訂單:
1. ORD001 - 已出貨 - $15,000
2. ORD002 - 處理中 - $8,500
3. ORD003 - 已完成 - $12,300
4. 低庫存警告
用戶可以這樣問:
- "低庫存商品"
- "缺貨商品查詢"
- "庫存不足的商品"
系統回應範例:
⚠️ 發現 3 個低庫存商品:
1. iPhone 13 - 剩餘:5 件
2. MacBook Air - 剩餘:2 件
3. AirPods Pro - 剩餘:8 件
5. 業務統計
用戶可以這樣問:
- "業務摘要"
- "統計報表"
- "總計資料"
- "業務狀況"
系統回應範例:
📊 業務摘要:
商品總數:156 個
訂單總數:89 筆
用戶總數:45 人
低庫存商品:3 個
統計時間:2024-01-15T10:30:00
特殊指令
幫助指令
help
,幫助
,說明
,指令
選單指令
menu
,選單
,功能
快速開始
1. 測試業務查詢功能
python tmp_rovodev_test_business_query.py
2. 測試 LINE Bot 整合
python tmp_rovodev_test_line_integration.py
3. 在您的應用中使用
from backend.services.line_bot_service import LineBotService
# 初始化服務
line_service = LineBotService()
# 處理用戶訊息
response = line_service.handle_text_message(
user_id="U1234567890",
message_text="查詢商品 iPhone",
display_name="張小明"
)
print(response['text']) # 系統回應
自訂擴展
1. 新增查詢類型
在 nlp_service.py
中新增意圖模式:
self.business_intent_patterns = {
# 現有模式...
"new_query_type": [
r"新查詢.*模式",
r"特殊.*查詢"
]
}
在 database_service.py
中新增對應方法:
def new_query_method(self, param1: str = None) -> DatabaseResult:
"""新的查詢方法"""
# 實作查詢邏輯
pass
2. 自訂回應格式
在 nlp_service.py
中修改格式化方法:
def _format_custom_response(self, data: List[Dict[str, Any]]) -> str:
"""自訂回應格式"""
# 實作自訂格式
pass
3. 整合其他資料源
您可以修改 database_service.py
來連接其他資料庫或 API:
def search_external_data(self, query: str) -> DatabaseResult:
"""查詢外部資料源"""
# 連接外部 API 或資料庫
pass
注意事項
資料庫結構: 目前的實作基於現有的
Product
,Order
,User
模型。如果您的資料庫結構不同,請相應調整查詢方法。權限控制: 系統目前允許所有查詢。在生產環境中,建議實作適當的權限控制。
效能考量: 對於大量資料,建議加入分頁和快取機制。
錯誤處理: 系統已包含基本的錯誤處理,但建議根據實際需求進一步完善。
參考資料
another_proj_schemas.py
: 包含完整的業務模型定義backend/database/models.py
: 資料庫模型定義backend/models/schemas.py
: API 回應模型定義
技術支援
如需技術支援或功能擴展,請參考:
- 測試腳本中的使用範例
- 各服務類別的文檔字串
- 錯誤日誌輸出
注意: 這是一個基礎實作,您可以根據實際業務需求進行擴展和優化。