工单模块第二阶段功能设计方案
1. 状态流转设计
状态机模型
stateDiagram-v2
[*] --> Pending
Pending --> InProgress: 开始处理\n(创建人/管理员)
Pending --> Cancelled: 取消\n(创建人)
InProgress --> Resolved: 解决\n(处理人)
InProgress --> Pending: 退回\n(处理人)
InProgress --> Escalated: 升级\n(处理人/系统)
Resolved --> Closed: 确认关闭\n(创建人)
Resolved --> Reopened: 重新打开\n(创建人)
Escalated --> InProgress: 处理\n(上级)
Escalated --> Closed: 强制关闭\n(管理员)
状态转换规则
const statusTransitions = {
Pending: ['InProgress', 'Cancelled'],
InProgress: ['Resolved', 'Pending', 'Escalated'],
Resolved: ['Closed', 'Reopened'],
Escalated: ['InProgress', 'Closed'],
Reopened: ['InProgress', 'Closed']
};
权限控制矩阵
| 操作 |
允许角色 |
| 开始处理 |
创建人、管理员 |
| 取消 |
创建人 |
| 解决 |
处理人 |
| 退回 |
处理人 |
| 升级 |
处理人、系统自动 |
| 确认关闭 |
创建人 |
| 重新打开 |
创建人 |
| 强制关闭 |
管理员 |
2. 处理时限设计
超时提醒机制
- 普通工单:48小时未处理提醒
- 紧急工单:12小时未处理提醒
- 重大工单:2小时未处理提醒
紧急程度分级
- Low(低):72小时处理时限
- Medium(中):48小时处理时限
- High(高):24小时处理时限
- Critical(紧急):4小时处理时限
自动升级规则
- 超时未处理自动升级
- 同一工单被退回3次自动升级
- 客户投诉触发升级
3. 技术实现方案
数据库变更
-- 新增字段
ALTER TABLE work_orders ADD COLUMN deadline TIMESTAMP;
ALTER TABLE work_orders ADD COLUMN timeout_count INTEGER DEFAULT 0;
ALTER TABLE work_orders ADD COLUMN escalation_level INTEGER DEFAULT 0;
-- 超时日志表
CREATE TABLE work_order_timeout_logs (
id SERIAL PRIMARY KEY,
work_order_id INTEGER REFERENCES work_orders(id),
timeout_at TIMESTAMP NOT NULL,
notified_at TIMESTAMP,
resolved_at TIMESTAMP
);
API接口扩展
// 状态变更接口增强
POST /work-orders/:id/status
// 请求体新增参数
{
"status": "in_progress",
"operator": "user123", // 操作人
"comment": "开始处理" // 变更备注
}
// 新增接口
POST /work-orders/:id/escalate // 工单升级
GET /work-orders/timeout // 获取超时工单
POST /work-orders/:id/remind // 发送提醒
前端交互优化
- 状态变更弹窗增加必填备注
- 超时工单显示红色倒计时
- 紧急工单添加特殊标识
- 自动刷新超时状态
- 状态变更历史记录展示
实施计划
- 数据库变更(1天)
- 后端API开发(3天)
- 前端交互开发(2天)
- 联调测试(2天)