128 lines
3.4 KiB
Markdown
128 lines
3.4 KiB
Markdown
|
|
# Workflows / 关键流程
|
|||
|
|
|
|||
|
|
## 1. 应用启动流程
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant Main as start_dashboard.py
|
|||
|
|
participant Log as setup_logging
|
|||
|
|
participant DB as DatabaseManager
|
|||
|
|
participant WS as WebSocket Thread
|
|||
|
|
participant FS as 飞书长连接 Thread
|
|||
|
|
participant Flask as Flask App
|
|||
|
|
|
|||
|
|
Main->>Log: 初始化日志(按启动时间分目录)
|
|||
|
|
Main->>DB: check_database_connection()
|
|||
|
|
alt 连接失败
|
|||
|
|
Main->>Main: sys.exit(1)
|
|||
|
|
end
|
|||
|
|
Main->>WS: 启动守护线程 (port 8765)
|
|||
|
|
Main->>FS: 启动守护线程 (飞书长连接)
|
|||
|
|
Main->>Main: sleep(2) 等待初始化
|
|||
|
|
Main->>Flask: app.run(port=5000, threaded=True)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 2. 用户对话流程 (WebSocket)
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant Client as 浏览器
|
|||
|
|
participant WS as WebSocketServer
|
|||
|
|
participant RCM as RealtimeChatManager
|
|||
|
|
participant DM as DialogueManager
|
|||
|
|
participant KB as KnowledgeManager
|
|||
|
|
participant LLM as LLMClient
|
|||
|
|
|
|||
|
|
Client->>WS: WebSocket 连接
|
|||
|
|
Client->>WS: JSON 消息
|
|||
|
|
WS->>RCM: 转发消息
|
|||
|
|
RCM->>DM: process_message()
|
|||
|
|
DM->>KB: search() 知识库检索
|
|||
|
|
KB-->>DM: 匹配结果
|
|||
|
|
DM->>LLM: 调用 Qwen API(含知识上下文)
|
|||
|
|
LLM-->>DM: AI 回复
|
|||
|
|
DM-->>RCM: 回复内容
|
|||
|
|
RCM-->>WS: 发送回复
|
|||
|
|
WS-->>Client: JSON 回复
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 3. 工单创建与飞书同步
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant User as 用户/AI
|
|||
|
|
participant API as workorders Blueprint
|
|||
|
|
participant DB as Database
|
|||
|
|
participant Sync as WorkOrderSyncService
|
|||
|
|
participant Feishu as 飞书多维表格
|
|||
|
|
|
|||
|
|
User->>API: POST /api/workorders
|
|||
|
|
API->>DB: 创建工单记录
|
|||
|
|
DB-->>API: 工单 ID
|
|||
|
|
|
|||
|
|
opt 飞书同步已配置
|
|||
|
|
API->>Sync: sync_to_feishu(workorder_id)
|
|||
|
|
Sync->>Feishu: 创建/更新记录
|
|||
|
|
Feishu-->>Sync: feishu_record_id
|
|||
|
|
Sync->>DB: 更新 feishu_record_id
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
API-->>User: 工单创建成功
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 4. 知识库搜索流程
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
Q["用户查询"] --> TF["TF-IDF 关键词匹配"]
|
|||
|
|
Q --> EMB{"Embedding 启用?"}
|
|||
|
|
|
|||
|
|
EMB -->|是| VEC["向量语义搜索"]
|
|||
|
|
EMB -->|否| SKIP["跳过"]
|
|||
|
|
|
|||
|
|
TF --> MERGE["合并结果"]
|
|||
|
|
VEC --> MERGE
|
|||
|
|
SKIP --> MERGE
|
|||
|
|
|
|||
|
|
MERGE --> RANK["按相似度排序"]
|
|||
|
|
RANK --> VERIFIED{"已验证条目优先"}
|
|||
|
|
VERIFIED --> RESULT["返回 Top-K 结果"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. 飞书机器人消息处理
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
sequenceDiagram
|
|||
|
|
participant User as 飞书用户
|
|||
|
|
participant Feishu as 飞书服务器
|
|||
|
|
participant LC as FeishuLongConnService
|
|||
|
|
participant DM as DialogueManager
|
|||
|
|
participant LLM as LLMClient
|
|||
|
|
participant FS as FeishuService
|
|||
|
|
|
|||
|
|
User->>Feishu: @机器人 发送消息
|
|||
|
|
Feishu->>LC: 长连接事件推送
|
|||
|
|
LC->>LC: 消息去重
|
|||
|
|
LC->>LC: resolve_tenant_by_chat_id()
|
|||
|
|
LC->>DM: 处理消息(带 tenant_id)
|
|||
|
|
DM->>LLM: 生成回复
|
|||
|
|
LLM-->>DM: AI 回复
|
|||
|
|
DM->>FS: 发送飞书消息
|
|||
|
|
FS->>Feishu: API 回复
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 6. Agent 工具调度
|
|||
|
|
|
|||
|
|
```mermaid
|
|||
|
|
flowchart TD
|
|||
|
|
INPUT["用户输入"] --> THINK["Thought: 分析意图"]
|
|||
|
|
THINK --> ACT["Action: 选择工具"]
|
|||
|
|
ACT --> EXEC["执行工具"]
|
|||
|
|
EXEC --> OBS["Observation: 获取结果"]
|
|||
|
|
OBS --> DONE{"任务完成?"}
|
|||
|
|
DONE -->|否| THINK
|
|||
|
|
DONE -->|是| ANSWER["Final Answer: 返回结果"]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
ReactAgent 注册的工具包括:知识库搜索、车辆查询、数据分析、飞书消息发送等。
|