# 工单系统开发路线图

**最后更新**: 2025-12-25

> 开发待办事项 - 追踪工单系统的开发进度
>
> **模块标识**: `platform_tickets`  
> **创建日期**: 2025-12-11  
> **更新日期**: 2025-12-12

---

## 📊 开发进度概览

| 阶段 | 内容 | 状态 | 预计周期 |
|------|------|------|----------|
| Phase 0 | 需求分析与设计 | ✅ 已完成 | 1 周 |
| Phase 1 | 基础工单管理 | ✅ 全栈完成 | 2 周 |
| Phase 2 | 自动分配与路由 | ✅ 全栈完成 | 1 周 |
| Phase 3 | 协作与沟通 | ✅ 全栈完成 | 1 周 |
| Phase 4 | SLA 管理 | 📋 待开发 | 1 周 |
| Phase 5 | 统计分析 | ✅ 全栈完成 | 1 周 |
| Phase 6 | 高级功能 | 📋 待规划 | 2 周 |

**总体完成度**: 约 70% （5/7 阶段完成）

---

## Phase 0: 需求分析与设计 ✅

### 已完成

- [x] PRD 产品需求文档
- [x] ARCHITECTURE 架构设计文档
- [x] API 接口文档
- [x] 数据库 Schema 设计
- [x] 创建模块目录结构

**完成日期**: 2025-12-11

---

## Phase 1: 基础工单管理 ✅

### 后端开发 ✅

#### 数据库

- [x] 创建 `platform_tickets.prisma` Schema 文件
- [x] 创建数据库迁移
- [x] 添加必要的数据库索引

#### 模块基础

- [x] 创建 `tickets.module.ts`
- [x] 配置模块依赖
- [x] 注册权限点 (17 个权限)

#### 工单 CRUD

- [x] 创建 DTO 文件
  - [x] `create-ticket.dto.ts`
  - [x] `update-ticket.dto.ts`
  - [x] `query-ticket.dto.ts`
- [x] 实现 `tickets.service.ts`
  - [x] `create()` - 创建工单
  - [x] `findAll()` - 查询工单列表（含权限过滤）
  - [x] `findById()` - 获取工单详情
  - [x] `update()` - 更新工单
  - [x] `delete()` - 删除工单（软删除）
- [x] 实现 `tickets.controller.ts`
  - [x] POST `/tickets` - 创建工单
  - [x] GET `/tickets` - 获取工单列表
  - [x] GET `/tickets/:id` - 获取工单详情
  - [x] PATCH `/tickets/:id` - 更新工单

#### 工单编号生成

- [x] 实现工单编号生成服务
- [x] 格式: `TK-{YYYYMMDD}-{序号}`
- [x] 从数据库读取当日最大序号，保证唯一性

#### 状态管理

- [x] 实现状态流转逻辑
- [x] PATCH `/tickets/:id/status` - 更新状态
- [ ] 状态变更事件发布

#### 分类管理

- [x] 实现 `category.service.ts`
- [x] GET `/tickets/admin/categories` - 获取分类列表
- [x] POST `/tickets/admin/categories` - 创建分类
- [x] PATCH `/tickets/admin/categories/:id` - 更新分类

### 前端开发 ✅

#### 工单创建

- [x] 工单创建表单组件 (`/tickets/new/page.tsx`)
- [x] 分类选择器组件
- [x] 优先级选择器组件
- [ ] 附件上传组件 (需集成文件服务)
- [x] 表单验证

#### 工单列表

- [x] 工单列表页面 (`/tickets/list/page.tsx`)
- [x] 筛选器组件（状态、分类、优先级）
- [x] 搜索组件
- [x] 分页组件
- [x] 视图切换（我的工单页面 `/tickets/my`）

#### 工单详情

- [x] 工单详情页面 (`/tickets/[id]/page.tsx`)
- [x] 基本信息展示
- [x] 状态标签
- [x] 操作按钮（状态流转）
- [x] 评论功能
- [x] 满意度评价

#### 管理端

- [x] 分类管理页面 (`/tickets/admin/categories`)
- [x] 处理组管理页面 (`/tickets/admin/groups`)
- [x] 统计分析页面 (`/tickets/admin/stats`)

### 测试 ✅

- [x] 工单 CRUD E2E 测试（结构化用例）
- [x] 状态流转测试
- [ ] 权限过滤测试 (需不同角色用户)
- [x] E2E 测试（`docs/modules/tickets/10-e2e-test-spec.md`）

**完成日期**: 2025-12-12

---

## Phase 2: 自动分配与路由 ✅

### 后端开发 ✅

#### 处理组管理

- [x] 实现 `group.service.ts`
- [x] GET `/tickets/admin/groups` - 获取处理组列表
- [x] POST `/tickets/admin/groups` - 创建处理组
- [x] PATCH `/tickets/admin/groups/:id` - 更新处理组
- [x] POST `/tickets/admin/groups/:id/members` - 添加成员
- [x] DELETE `/tickets/admin/groups/:id/members` - 移除成员

#### 分配策略

- [x] 定义策略接口 (内置于 `assign.service.ts`)
- [x] 实现轮询分配 (`roundRobinAssign`)
- [x] 实现负载均衡 (`loadBalanceAssign`)
- [ ] 实现策略工厂 `AssignmentStrategyFactory` (Phase 3)

#### 分配服务

- [x] 实现 `assign.service.ts`
- [x] `autoAssign()` - 自动分配
- [x] `reassign()` - 转派
- [ ] `claim()` - 认领

#### API 接口

- [x] POST `/tickets/:id/assign` - 分配工单
- [ ] POST `/tickets/:id/reassign` - 转派工单 (使用 assign)
- [ ] POST `/tickets/:id/claim` - 认领工单

### 前端开发

- [ ] 处理组管理页面
- [ ] 成员管理组件
- [ ] 分配策略配置
- [ ] 工单分配对话框
- [ ] 工单认领按钮

### 测试 ✅

- [x] E2E 测试 (覆盖分配功能)
- [x] 轮询分配测试
- [ ] 负载均衡测试 (需更多数据验证)
- [ ] 认领流程测试 (需前端配合)

**完成日期**: 2025-12-12

---

## Phase 3: 协作与沟通 ✅

### 后端开发 ✅

#### 评论系统

- [x] 实现评论功能 (内置于 `tickets.service.ts`)
- [x] GET `/tickets/:id/comments` - 获取评论列表
- [x] POST `/tickets/:id/comments` - 添加评论
- [x] DELETE `/tickets/:id/comments/:commentId` - 删除评论

#### 附件管理

- [x] 附件模型定义 (Prisma Schema)
- [x] 支持评论附件上传
- [ ] 集成独立文件上传服务

#### 关注功能

- [x] POST `/tickets/:id/watch` - 关注
- [x] DELETE `/tickets/:id/watch` - 取消关注
- [x] POST `/tickets/:id/watchers/:watcherId` - 添加关注人
- [x] DELETE `/tickets/:id/watchers/:watcherId` - 移除关注人

#### 活动日志

- [x] 实现活动日志记录
- [x] GET `/tickets/:id/activities` - 获取活动日志

#### 事件与通知

- [ ] 定义工单事件
- [ ] 实现事件监听器
- [ ] 集成通知服务

### 前端开发

- [ ] 评论列表组件
- [ ] 评论编辑器（富文本）
- [ ] @提醒功能
- [ ] 附件预览组件
- [ ] 活动时间线组件
- [ ] 关注按钮

### 测试 ✅

- [x] 评论 CRUD E2E 测试
- [x] 内部评论测试
- [ ] 附件上传测试 (需集成文件服务)
- [ ] 通知发送测试 (需集成通知服务)

**完成日期**: 2025-12-12

---

## Phase 4: SLA 管理 📋

### 后端开发

#### SLA 配置

- [ ] 实现 `sla.service.ts`
- [ ] GET `/tickets/slas` - 获取 SLA 列表
- [ ] POST `/tickets/slas` - 创建 SLA
- [ ] PATCH `/tickets/slas/:id` - 更新 SLA

#### SLA 计时

- [ ] 工作时间计算逻辑
- [ ] 节假日排除逻辑
- [ ] SLA 暂停/恢复
- [ ] 到期时间计算

#### SLA 监控

- [ ] 实现 SLA 检查定时任务
- [ ] 即将超时预警
- [ ] 超时升级逻辑

#### 升级策略

- [ ] 实现升级规则配置
- [ ] 自动升级处理

### 前端开发

- [ ] SLA 配置页面
- [ ] 工作时间配置
- [ ] 升级规则配置
- [ ] 工单详情 SLA 进度显示
- [ ] SLA 预警提示

### 测试

- [ ] SLA 时间计算测试
- [ ] 工作时间过滤测试
- [ ] 暂停/恢复测试
- [ ] 升级触发测试

**预计完成**: 2025-12 下旬

---

## Phase 5: 统计分析 ✅

### 后端开发 ✅

#### 统计服务

- [x] 实现 `stats.service.ts`
- [x] GET `/tickets/admin/stats/overview` - 统计概览
- [x] GET `/tickets/admin/stats/trends` - 趋势数据
- [x] GET `/tickets/admin/stats/status-distribution` - 状态分布
- [x] GET `/tickets/admin/stats/category-distribution` - 分类分布
- [x] GET `/tickets/admin/stats/workload` - 处理人工作量

#### 满意度

- [x] POST `/tickets/:id/satisfaction` - 提交评价
- [x] 满意度统计 (包含在 overview 中)

### 前端开发

- [ ] 统计仪表盘页面
- [ ] 工单状态分布图
- [ ] 趋势图表
- [ ] SLA 达成率图表
- [ ] 满意度图表
- [ ] 人员绩效表格
- [ ] 满意度评价弹窗

### 测试 ✅

- [x] 统计 API E2E 测试
- [x] 满意度评价 E2E 测试
- [ ] 性能测试（大数据量）

**完成日期**: 2025-12-12

---

## Phase 6: 高级功能 📋

### 工单模板

- [ ] 工单模板管理
- [ ] 模板快速创建

### 自定义字段

- [ ] 按分类配置自定义字段
- [ ] 集成表单引擎

### 知识库集成

- [ ] 知识库文章关联
- [ ] 解决方案推荐

### 批量操作

- [ ] 批量分配
- [ ] 批量状态更新
- [ ] 批量关闭

### 与审批引擎集成

- [ ] 需要审批的工单类型
- [ ] 审批流程触发
- [ ] 审批结果回调

### 与 AI 智能助手集成

- [ ] POST `/tickets/from-ai` - 从 AI 对话升级创建工单
- [ ] 对话历史作为 AI_CONTEXT 评论
- [ ] POST `/tickets/ai/suggest-category` - AI 推荐分类
- [ ] channelMetadata 字段支持

### 多区域/多租户支持

- [ ] 区域隔离
- [ ] 区域管理员权限
- [ ] 跨区域协作
- [ ] 租户级别隔离 (tenantId)
- [ ] 租户独立配置

**预计开始**: 2026-Q1

---

## 📝 问题与风险

### 待确认问题

| 问题 | 状态 | 负责人 |
|------|------|--------|
| 附件存储方案（S3/本地） | 待确认 | - |
| 富文本编辑器选型 | 待确认 | - |
| 实时通知方案（WebSocket/轮询） | 待确认 | - |
| SLA 节假日数据来源 | 待确认 | - |

### 技术风险

| 风险 | 影响 | 缓解措施 |
|------|------|----------|
| 大量工单时的查询性能 | 高 | 优化索引、缓存策略 |
| SLA 计时精确度 | 中 | 定时任务兜底检查 |
| 并发分配冲突 | 中 | 乐观锁处理 |

---

## 📊 功能完成度统计

### 后端功能（20/27）

- ✅ 工单 CRUD（5/5）
- ✅ 状态管理（1/2）
- ✅ 分类管理（3/3）
- ✅ 处理组管理（5/5）
- ✅ 分配服务（2/3）
- ✅ 评论系统（3/4）
- ✅ 关注功能（4/4）
- ✅ 活动日志（1/1）
- ✅ 统计服务（6/6）
- ❌ SLA 管理（0/8）
- ❌ 高级功能（0/10+）

**完成率**: 74% (20/27)

### 前端功能（8/20+）

- ✅ 工单创建（4/5）
- ✅ 工单列表（5/5）
- ✅ 工单详情（5/5）
- ✅ 管理后台（3/3）
- ❌ 处理组管理（0/5）
- ❌ 统计仪表盘（0/7）
- ❌ 协作功能（0/6）
- ❌ SLA 功能（0/5）

**完成率**: 约 40%

---

## 🎯 下一步计划

### 短期（1-2周）

1. **完成 Phase 4**: SLA 管理功能
   - SLA 配置和计时逻辑
   - 超时预警和自动升级
   - 前端 SLA 进度展示

2. **前端完善**: 补充未完成的前端页面
   - 处理组管理界面
   - 统计仪表盘
   - 协作功能组件

### 中期（1-2个月）

1. **集成优化**:
   - 文件上传服务集成
   - 通知服务集成
   - 事件系统完善

2. **性能优化**:
   - 数据库查询优化
   - 缓存策略
   - 大数据量测试

### 长期（3-6个月）

1. **Phase 6 高级功能**:
   - 工单模板
   - 自定义字段（集成表单引擎）
   - 知识库集成
   - 与 AI 智能助手深度集成
   - 多区域/多租户支持

---

## 🔗 相关文档

- [PRD.md](./01-prd.md) - 产品需求文档
- [ARCHITECTURE.md](./03-architecture.md) - 架构设计文档
- [API.md](./07-api.md) - API 接口文档
- [README.md](./README.md) - 模块概览

---

**创建日期**: 2025-12-11  
**最后更新**: 2025-12-25  
**版本**: v1.3
