work_order_phase2_design.md 3.1 KB

工单模块第二阶段功能设计方案

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小时未处理提醒

紧急程度分级

  1. Low(低):72小时处理时限
  2. Medium(中):48小时处理时限
  3. High(高):24小时处理时限
  4. Critical(紧急):4小时处理时限

自动升级规则

  1. 超时未处理自动升级
  2. 同一工单被退回3次自动升级
  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. 状态变更弹窗增加必填备注
  2. 超时工单显示红色倒计时
  3. 紧急工单添加特殊标识
  4. 自动刷新超时状态
  5. 状态变更历史记录展示

实施计划

  1. 数据库变更(1天)
  2. 后端API开发(3天)
  3. 前端交互开发(2天)
  4. 联调测试(2天)