3a44141eac
**src/ 路径迁移配套**:
- docker-compose.yml: backend context ./backend → ./src/backend
- docker-compose.yml: bind mount ./app → ./src/backend/app
- docker-compose.dev.yml: 3 个 bind mount 同步调整
- Dify 双路径超时从 12s 提到 20s(2026-07-20 用户反馈高峰期超时)
**nginx SPA 路由修复**(前端路由 /itagent/x → /itagent/index.html):
- nginx/nginx.conf: 加 try_files $uri /itagent/index.html
**生产环境 nginx 反代重写**:
- deploy-server/nginx.conf: 从 33 行 localhost 模板改为 357 行完整反代
- 新增 /itdesk /itagent /itadmin /itportal /itterminal/itportal/meetingroom
路由规则
- 反代到 backend:8000 (API + WS)
- / 根路径反代到数据查询平台
**架构图简化**(精简但保留关键类/时序):
- docs/class-diagram.mermaid: 215 行 → 59 行
- docs/sequence-diagram.mermaid: 115 行 → 35 行
合计 6 文件 + 470 行 / - 293 行
37 lines
1.4 KiB
Plaintext
37 lines
1.4 KiB
Plaintext
sequenceDiagram
|
|
autonumber
|
|
actor User as 员工
|
|
participant H5 as H5 ConversationStore
|
|
participant WS as FastAPI ws.py
|
|
participant DB as PostgreSQL/messages
|
|
participant WSM as ws_manager
|
|
participant Agent as 坐席 Store/MessageBubble
|
|
participant Task as h5_ai_task.py
|
|
participant Dify as Dify Workflow
|
|
participant REST as messages.py
|
|
|
|
User->>H5: 点击选项
|
|
H5->>H5: 首次生成 client_msg_id(UUID)
|
|
H5->>WS: option_select(6字段)
|
|
WS->>DB: BEGIN + pg_advisory_xact_lock(key)
|
|
WS->>DB: 查询同会话同 client_msg_id
|
|
alt 5秒内重复
|
|
DB-->>WS: 返回首次 Message
|
|
WS-->>H5: 不重复落库/广播/Dify
|
|
else 首次受理
|
|
WS->>DB: INSERT Message(msg_type=option_select)
|
|
WS->>DB: COMMIT
|
|
WS->>WSM: broadcast new_message(masked message)
|
|
WSM-->>Agent: new_message
|
|
Agent->>Agent: 追加消息并按 question_id 计算最新
|
|
WS->>Task: create_task(feedback_context)
|
|
Task->>Dify: inputs{feedback_type, question_id, option_id...}
|
|
Dify-->>Task: 下一轮结构化回复
|
|
end
|
|
Agent-xWSM: 网络断开
|
|
Agent->>REST: GET /conversations/{id}/messages
|
|
REST->>DB: SELECT conversation_id ORDER BY created_at
|
|
DB-->>REST: 含 option_select 历史
|
|
REST-->>Agent: masked items
|
|
Agent->>Agent: 用 created_at + id 恢复最新高亮
|