方案设计:应急抢修调度
← 返回场景概览 | 上一阶段:需求探索 → | 下一阶段:开发资产 →
方案概览
本方案设计了一套高效的应急抢修调度系统,通过智能派单、实时定位、紧急响应机制,解决应急抢修响应时间长、调度规则不清晰、资源管理混乱等痛点,实现应急抢修的快速响应和高效调度。
1. 应急事件分级
1.1 紧急程度分级
| 紧急程度 | 典型场景 | 要求响应时间 | 要求完成时间 | 通知方式 |
|---|---|---|---|---|
| 一级(危急) | 电梯困人、消防报警、天然气泄漏 | 5 分钟 | 30 分钟 | 广播通知+电话+短信 |
| 二级(紧急) | 水管爆裂、电路跳闸、空调故障(夏季) | 15 分钟 | 2 小时 | 推送通知+短信 |
| 三级(重要) | 门禁故障、灯具损坏 | 30 分钟 | 4 小时 | 推送通知 |
| 四级(普通) | 墙面污损、设施老化 | 2 小时 | 24 小时 | 推送通知 |
1.2 事件上报流程
2. 智能派单规则
2.1 派单维度
派单考虑因素:
- 紧急程度:一级危急优先,二级紧急次之
- 技能匹配:根据故障类型匹配有相应技能的师傅
- 距离优先:优先派给距离最近的师傅
- 负载均衡:优先派给当前工作量较少的师傅
- 班次考虑:夜间只派给值班师傅
- 工具设备:需要特殊工具的,优先派给有工具的师傅
2.2 派单算法
评分计算:
typescript
function calculateDispatchScore(
worker: Worker,
task: EmergencyTask,
options: DispatchOptions
): number {
// 1. 紧急程度得分(0-100分)
const urgencyScore = task.urgency === 'critical' ? 100 :
task.urgency === 'urgent' ? 80 :
task.urgency === 'important' ? 60 : 40;
// 2. 技能匹配度(0-100分)
const skillMatchScore = worker.skills.includes(task.skillType) ? 100 : 0;
// 3. 距离得分(0-100分,距离越近得分越高)
const distance = calculateDistance(worker.location, task.location);
const distanceScore = Math.max(0, 100 - (distance / 1000) * 20); // 每公里扣20分
// 4. 工作量得分(0-100分,工作量越少得分越高)
const currentTasks = worker.currentTasks.length;
const maxTasks = worker.maxConcurrentTasks || 3;
const workloadScore = Math.max(0, 100 - (currentTasks / maxTasks) * 100);
// 5. 班次得分(0-100分)
const shiftScore = isInShift(worker, task.time) ? 100 : 0;
// 6. 工具匹配度(0-100分)
const toolMatchScore = hasRequiredTools(worker, task.requiredTools) ? 100 : 0;
// 7. 加权计算总分
const totalScore =
urgencyScore * 0.2 +
skillMatchScore * 0.25 +
distanceScore * 0.25 +
workloadScore * 0.15 +
shiftScore * 0.1 +
toolMatchScore * 0.05;
return totalScore;
}2.3 一级危急事件处理
处理规则:
- 立即广播通知所有在线师傅
- 支持抢单模式:师傅抢单后立即派单
- 支持指派模式:系统自动指派最近的师傅
- 如果 2 分钟内无人接单,自动升级通知主管
- 主管可以强制指派师傅
3. 实时状态管理
3.1 师傅状态
状态定义:
- 在线空闲:在线,无任务,可以接单
- 在线忙碌:在线,有任务,可以接新任务(如果允许)
- 在线不可用:在线,但不可接单(如休息中)
- 离线:不在线,不可接单
状态更新:
- 师傅手动更新状态
- 系统根据任务状态自动更新
- 位置实时更新(GPS定位)
3.2 任务状态
状态流转:
待派单 → 已派单 → 已接单 → 前往现场 → 处理中 → 已完成
↓
已拒绝(师傅拒单)
↓
重新派单3.3 超时处理
超时规则:
- 一级危急:5 分钟未接单,自动升级通知主管
- 二级紧急:15 分钟未接单,自动升级通知主管
- 三级重要:30 分钟未接单,提醒调度员
- 四级普通:2 小时未接单,提醒调度员
4. 资源管理
4.1 师傅技能管理
技能分类:
- 电工:电路故障、电气设备维修
- 水工:水管维修、水暖设备维修
- 电梯工:电梯故障、电梯维护
- 空调工:空调故障、空调维护
- 综合维修:一般维修、杂项维修
技能标签:
- 每个师傅可以有多个技能标签
- 技能等级:初级、中级、高级
- 技能认证:持证上岗
4.2 工具设备管理
工具登记:
- 师傅携带的工具清单
- 工具状态:可用、维修中、缺失
- 特殊工具:需要特殊工具的故障,优先派给有工具的师傅
4.3 班次管理
班次类型:
- 白班:8:00-18:00
- 夜班:18:00-次日8:00
- 值班:24小时待命
班次规则:
- 夜间只派给值班师傅
- 非值班师傅夜间不接单
- 班次排班可配置
5. 数据模型设计
5.1 应急任务(EmergencyTask)
typescript
interface EmergencyTask {
id: string;
taskNo: string; // 任务编号
projectId: string; // 项目ID
urgency: 'critical' | 'urgent' | 'important' | 'normal';
taskType: string; // 任务类型(电梯、水管、电路等)
skillType: string; // 所需技能
location: { // 位置
lat: number;
lng: number;
address: string;
};
description: string; // 问题描述
reportedBy: string; // 上报人
reportedTime: Date; // 上报时间
assignedWorkerId?: string; // 分配的师傅
assignedTime?: Date; // 派单时间
acceptTime?: Date; // 接单时间
arriveTime?: Date; // 到达时间
startTime?: Date; // 开始时间
completeTime?: Date; // 完成时间
status: 'pending' | 'assigned' | 'accepted' | 'in-progress' | 'completed' | 'rejected';
requiredTools?: string[]; // 所需工具
createdAt: Date;
updatedAt: Date;
}5.2 师傅信息(Worker)
typescript
interface Worker {
id: string;
name: string;
phone: string;
skills: string[]; // 技能列表
skillLevels: { // 技能等级
[skill: string]: 'junior' | 'intermediate' | 'senior';
};
location: { // 当前位置
lat: number;
lng: number;
};
status: 'online-idle' | 'online-busy' | 'online-unavailable' | 'offline';
currentTasks: string[]; // 当前任务列表
maxConcurrentTasks: number; // 最大并发任务数
tools: string[]; // 携带工具
shift: 'day' | 'night' | 'on-call'; // 班次
avgResponseTime: number; // 平均响应时间(分钟)
createdAt: Date;
updatedAt: Date;
}6. 权限设计
6.1 角色定义
| 角色 | 权限 |
|---|---|
| 超级管理员 | 所有权限 |
| 调度主管 | 查看所有数据、统计数据、强制派单 |
| 调度员 | 派单、查看任务、手动调整 |
| 维修师傅 | 查看自己的任务、接单、完成任务 |
| 上报人员 | 上报事件、查看事件进度 |
7. 技术架构
7.1 前端
- 上报端:微信小程序(快速上报)
- 师傅端:移动 App(接单、定位、完成任务)
- 调度端:Web 后台(派单、监控、统计)
7.2 后端
- API 服务:RESTful API
- 实时通信:WebSocket(实时位置、状态更新)
- 消息推送:任务通知、状态变更通知
7.3 核心功能模块
- 事件管理模块:事件上报、确认、分级
- 智能派单模块:派单算法、任务分配
- 实时定位模块:GPS定位、位置更新
- 资源管理模块:师傅管理、技能管理、工具管理
- 统计分析模块:响应时间统计、完成率统计
8. 关键业务规则总结
8.1 派单规则
- 紧急程度优先:一级危急 > 二级紧急 > 三级重要 > 四级普通
- 智能派单:技能匹配 → 距离优先 → 负载均衡 → 班次考虑
- 一级危急:广播通知+抢单/指派
8.2 响应时间要求
- 一级危急:5 分钟内响应
- 二级紧急:15 分钟内响应
- 三级重要:30 分钟内响应
- 四级普通:2 小时内响应
8.3 超时处理
- 一级危急:5 分钟未接单,自动升级
- 二级紧急:15 分钟未接单,自动升级
- 其他:超时提醒调度员
下一步:开发资产
在开发资产阶段,我们将:
- 创建 Cursor Skills(业务规则、数据模型)
- 创建 PROMPT 模板(需求调研、方案设计)
- 创建代码模板(API 接口、前端组件)

