Files
wecom_it_smart_desk/docs/07-项目管理/任务说明书/任务说明书-126-坐席在线状态查询.md
T
Simon 44e77dcb0e chore(docs): docs/ 目录全面重新编号 + 重组
**重构前**(旧编号 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 行
2026-08-03 18:46:55 +08:00

137 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务说明书-126-坐席在线状态查询
> **版本**: v1.0 | **日期**: 2026-07-25
---
## 📋 基本信息
| 项目 | 内容 |
|------|------|
| **任务名称** | 坐席在线状态查询功能开发 |
| **任务ID** | #126 |
| **优先级** | 🟠P1 |
| **类型** | 功能开发 |
| **状态** | ✅ 已完成 |
| **负责人** | Simon |
| **创建日期** | 2026-07-25 |
| **计划完成日期** | 2026-07-25 |
---
## 📥 输入项来源
### 产品需求
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `01-产品文档/05-用户端H5/PRD-REQ-用户-004-坐席在线状态查询-v1.0.md` | §1-§3 | 需求描述、用户故事、功能需求 |
### 技术方案
| 来源文档 | 相关章节 | 说明 |
|----------|----------|------|
| `02-技术文档/技术方案-REQ-用户-004-坐席在线状态查询.md` | §1-§2 | API接口设计、后端实现、前端实现 |
### 原型设计
| 来源文档 | 页面 | 说明 |
|----------|------|------|
| `01-产品文档/05-用户端H5/原型-REQ-用户-000-H5用户端-v2.0.html` | 标题栏区域 | 坐席在线/离线状态显示(已存在) |
### 需了解的现有代码(历史现状)
| 模块/文件 | 说明 | 需了解的内容 |
|-----------|------|-------------|
| `backend/app/api/h5.py` | H5 API 模块 | 新增接口位置、已有接口模式 |
| `frontend-h5/src/stores/conversation.ts` | Pinia 状态管理 | agentOnline 状态定义、轮询实现 |
| `frontend-h5/src/components/chat/ChatPanel.vue` | 聊天面板组件 | 标题栏状态显示逻辑 |
---
## 📤 输出成果要求
### 交付物清单
| # | 交付物 | 类型 | 说明 |
|---|--------|------|------|
| 1 | `backend/app/api/h5.py` 新增接口 | 代码 | `GET /api/h5/agents/online-status` |
| 2 | `frontend-h5/src/stores/conversation.ts` 修改 | 代码 | 实现轮询和可见性处理 |
| 3 | 技术方案文档 | 文档 | 更新验证要点 |
### 代码要求
- 遵循项目代码规范
- 所有新增代码通过 ESLint / Pylint 检查
### 文档要求
- 更新技术方案文档中的验证要点
---
## 🔧 验证方式
### 功能验证
| 验证项 | 验证方法 | 预期结果 |
|--------|----------|-----------|
| API 接口正常 | `curl http://localhost:8000/api/h5/agents/online-status` | 返回 `{"code":0,"data":{"online":true/false}}` |
| 有在线坐席时显示正确 | 手动测试(数据库有 online 坐席) | 显示"坐席在线" |
| 无在线坐席时显示正确 | 手动测试(数据库无 online 坐席) | 显示"坐席离线" |
| 轮询机制正常 | 等待30秒观察 | 状态自动刷新 |
| 页面可见性处理 | 切换浏览器标签页再切回 | 状态立即刷新 |
---
## ✅ 完成标准
### 验收条件
- [x] 后端 API 代码已完成
- [x] 前端轮询逻辑已完成
- [x] 功能验证通过
### 产出确认
- [x] 代码已提交
- [x] 接口测试通过
- [x] 页面显示验证通过
---
## 📊 工作分解
### 子任务
| 子任务 | 负责人 | 预估工时 | 状态 |
|--------|--------|----------|------|
| 后端:新增 `GET /h5/agents/online-status` 接口 | Simon | 0.5h | ✅ 完成 |
| 前端:修改 `conversation.ts` 实现轮询 | Simon | 0.5h | ✅ 完成 |
| 测试:curl 验证 + 浏览器验证 | Simon | 0.5h | ✅ 完成 |
---
## 📞 依赖与阻塞
### 前置依赖
| 依赖任务 | 依赖说明 | 状态 |
|----------|----------|------|
| REQ-用户-004 PRD | 需求已完成 | 已完成 |
| REQ-用户-004 技术方案 | 设计已完成 | 已完成 |
### 阻塞因素
| 阻塞项 | 影响范围 | 解决方案 |
|--------|----------|-----------|
| 无 | - | - |
---
## 📈 变更记录
| 日期 | 变更内容 | 变更人 | 说明 |
|------|----------|--------|------|
| 2026-07-25 | 创建任务 | Simon | 初始版本 |
| 2026-07-25 | 完成 | Simon | API 路径修正为 /h5/agents/online-statusNginx 添加 /h5/agents/ 代理;30秒轮询实现;功能验证通过 |
---
## 📎 附件
- [PRD-REQ-用户-004-坐席在线状态查询-v1.0.md](../01-产品文档/05-用户端H5/PRD-REQ-用户-004-坐席在线状态查询-v1.0.md)
- [技术方案-REQ-用户-004-坐席在线状态查询.md](../02-技术文档/技术方案-REQ-用户-004-坐席在线状态查询.md)
- [原型-REQ-用户-000-H5用户端-v2.0.html](../01-产品文档/05-用户端H5/原型-REQ-用户-000-H5用户端-v2.0.html)