44e77dcb0e
**重构前**(旧编号 02-11): - docs/02-产品需求/ → 00 产品规划/PRD - docs/03-技术架构/ → 01-05 子目录散落 - docs/04-原型设计/ → 01-02 产品设计(HTML 原型) - docs/05-原型设计/ → screens/ - docs/06-测试素材/ → 02-E2E / 03-功能 / 04-版本测试 - docs/07-项目管理/ → 任务说明书/日报/计划 - docs/08-安全审计/ → 审计报告 - docs/09-堡垒运维/ → toolbox / deploy - docs/10-项目管理/ → 任务说明书(重复) - docs/11-历史归档/ → deploy-nas-archived **重构后**(新编号 00-07,语义化): - docs/00-产品开发流程与文档管理规范.md - docs/00-版本迭代总览.md - docs/01-产品文档/ (PRD/原型/认证/会话/AI 服务/坐席/集成) - docs/02-技术文档/ (技术方案/架构图/重构记录/前端改造/实现配置) - docs/03-测试文档/ (E2E/功能用例/版本报告/缺陷单) - docs/04-运维文档/ (部署运维/运维指南) - docs/05-运营文档/ (品牌推广/用户手册) - docs/06-安全审计/ (审计报告) - docs/07-项目管理/ (任务说明书/日报/计划/看板) **净收益**: - 目录编号与产品文档管理规范对齐(按文档阶段 01-07 编号) - 消除 02-产品需求 与 10-项目管理 的编号重叠 - 子目录按文档类型分组(如 01-产品文档/00-产品规划、01-产品文档/01-认证与登录) - 把运维/安全/项目管理从 0X 散落改为 04/06/07 合计 494 文件 + 78495 行 / - 14076 行
63 lines
2.1 KiB
Plaintext
63 lines
2.1 KiB
Plaintext
sequenceDiagram
|
|
participant Browser as 坐席浏览器
|
|
participant App as Vue3 App
|
|
participant Store as Pinia Store
|
|
participant API as Backend API
|
|
participant DB as PostgreSQL
|
|
|
|
Note over Browser,App: 页面加载
|
|
|
|
Browser->>App: 挂载 Workspace.vue
|
|
App->>Store: 初始化 conversationStore
|
|
Store->>API: GET /api/conversations
|
|
API->>DB: SELECT * FROM conversations WHERE status IN ('queued','serving') ORDER BY ...
|
|
DB-->>API: 会话列表
|
|
API-->>Store: 会话数据
|
|
Store-->>App: 渲染会话列表
|
|
|
|
loop 每3秒 setInterval
|
|
App->>Store: pollConversations()
|
|
Store->>API: GET /api/conversations?page=1&page_size=50
|
|
API->>DB: SELECT ... (同上)
|
|
DB-->>API: 最新会话列表
|
|
API-->>Store: 最新数据
|
|
|
|
alt 数据有变化
|
|
Store->>Store: diff 比较,更新变化的会话
|
|
Store-->>App: 触发响应式更新
|
|
App->>App: 更新列表项标签/排序/未读数
|
|
else 数据无变化
|
|
Store-->>App: 无需更新
|
|
end
|
|
end
|
|
|
|
Note over App: 用户点击某个会话
|
|
|
|
App->>Store: selectConversation(id)
|
|
Store->>API: GET /api/conversations/{id}/messages?limit=50
|
|
API->>DB: SELECT * FROM messages WHERE conversation_id=... ORDER BY created_at
|
|
DB-->>API: 消息列表
|
|
API-->>Store: messages
|
|
Store-->>App: 渲染对话区
|
|
|
|
loop 选中会话的消息轮询
|
|
App->>Store: pollMessages(conv_id)
|
|
Store->>API: GET /api/conversations/{id}/messages?limit=20&before=latest_id
|
|
API->>DB: SELECT ... WHERE created_at > latest
|
|
DB-->>API: 新消息
|
|
API-->>Store: 新消息列表
|
|
alt 有新消息
|
|
Store->>Store: 追加消息到列表
|
|
Store-->>App: 滚动到底部,显示新消息
|
|
end
|
|
end
|
|
|
|
Note over App: 坐席发送回复
|
|
|
|
App->>Store: sendMessage(conv_id, content)
|
|
Store->>API: POST /api/conversations/{id}/messages {content}
|
|
API->>DB: INSERT INTO messages ...
|
|
API-->>Store: 发送的消息对象
|
|
Store->>Store: 追加到消息列表
|
|
Store-->>App: 显示在对话区
|