SCHED-003: 应急调度
优先级: 🔴 高 (16.5分) | 实施周期: 2-3周
客户原话
"农业生产最怕天气突变。去年夏天,天气预报说后天有暴雨,农户着急抢收小麦,一下子来了50个紧急订单。我们只有20台收割机,根本忙不过来。不知道该先去哪家,哪家更紧急。有的农户地块大,有的地块小,有的离得近,有的离得远。手忙脚乱地调度,还是有几家没收完就下雨了,损失惨重。想要个系统能处理这种紧急情况,自动排优先级,快速调度,尽量减少损失。"
—— 某农机合作社理事长
客户类型需求差异
农机合作社(10-50台,本地作业)
需求程度: ⭐⭐⭐⭐⭐ 必需
核心需求:
- 紧急订单快速响应
- 优先级自动排序
- 应急调度方案
- 实时调度调整
关键功能:
- 紧急订单标记
- 优先级计算
- 快速派单
- 实时监控
农机服务站(跨区作业)
需求程度: ⭐⭐⭐⭐⭐ 必需
核心需求:
- 跨区域应急支援
- 多地协同调度
- 应急资源调配
- 应急预案管理
关键功能:
- 跨区域支援
- 应急预案
- 资源调配
- 协同指挥
大型农场(自有农机队)
需求程度: ⭐⭐⭐⭐ 重要
核心需求:
- 农场应急作业
- 设备应急调配
- 应急预案执行
- 损失评估
关键功能:
- 应急预案
- 设备调配
- 进度监控
- 损失统计
农机租赁公司(租赁+作业)
需求程度: ⭐⭐⭐ 一般
核心需求:
- 租赁设备应急调用
- 应急费用计算
- 应急服务保障
关键功能:
- 设备应急调用
- 费用计算
- 服务保障
业务场景描述
典型场景
场景1: 暴雨前抢收
- 天气预报:后天暴雨
- 接到50个紧急抢收订单
- 系统评估:只有20台收割机
- 优先级排序:按地块大小、距离、损失风险
- 快速派单:优先派大地块、近距离、高风险
- 实时监控:跟踪作业进度,动态调整
场景2: 设备故障应急
- 正在作业的收割机突然故障
- 农户着急:必须今天收完
- 系统查找:附近有无空闲机器
- 应急派单:派最近的机器支援
- 故障机器:安排维修,尽快恢复
- 完成作业:按时完成,农户满意
场景3: 跨区域应急支援
- 河北暴雨,订单激增
- 本地机器不足,无法应对
- 系统提示:河南有空闲机器
- 跨区域支援:紧急调10台机器
- 快速转场:高速直达,4小时到达
- 投入作业:立即开始抢收
场景4: 多订单并发应急
- 同时接到多个紧急订单
- 系统分析:订单紧急程度、地块大小、距离
- 智能排序:生成最优作业顺序
- 批量派单:所有机器同时出动
- 协同作业:多台机器协同完成大地块
- 全部完成:赶在暴雨前完成所有订单
场景5: 应急预案启动
- 接到极端天气预警
- 启动应急预案:提前准备
- 通知机手:做好应急准备
- 预留资源:保留部分机器应急
- 快速响应:紧急订单立即处理
- 有序应对:按预案执行,井然有序
核心痛点
- 响应速度慢 - 紧急情况下,人工调度慢,错过最佳时机
- 优先级难定 - 不知道哪个订单更紧急,容易顾此失彼
- 资源调配难 - 紧急情况下,资源紧张,调配困难
- 协调沟通难 - 多方协调靠电话,效率低易出错
- 损失难评估 - 无法评估损失风险,决策缺乏依据
业务流程图
当前人工流程
系统化流程
用户故事
故事1: 调度员快速处理紧急订单
作为 调度员 我想要 系统自动处理紧急订单 以便 快速响应,减少损失
验收标准:
- 紧急订单自动标记
- 系统自动评估紧急程度
- 生成应急调度方案
- 一键快速派单
- 实时监控进度
故事2: 系统智能排优先级
作为 系统 我想要 智能计算订单优先级 以便 优先处理最紧急的订单
验收标准:
- 综合考虑时间、距离、损失风险
- 自动计算优先级评分
- 按优先级排序
- 动态调整优先级
- 提供决策依据
故事3: 机手快速响应
作为 机手 我想要 快速接收紧急任务 以便 立即出发,抢抓时间
验收标准:
- 收到紧急通知(声音、震动)
- 查看紧急程度和原因
- 一键确认接单
- 导航最快路线
- 实时上报进度
故事4: 管理员启动应急预案
作为 管理员 我想要 启动应急预案 以便 有序应对紧急情况
验收标准:
- 查看应急预案列表
- 选择合适的预案
- 一键启动预案
- 自动执行预案步骤
- 监控预案执行
故事5: 系统评估损失风险
作为 系统 我想要 评估订单损失风险 以便 优先处理高风险订单
验收标准:
- 根据天气、时间、作物评估风险
- 计算潜在损失金额
- 标注高风险订单
- 提供风险预警
- 记录实际损失
数据模型
核心实体
1. 应急调度任务 (EmergencyDispatch)
typescript
interface EmergencyDispatch {
id: string
dispatchNo: string
orderId: string
// 紧急信息
emergencyType: 'weather' | 'equipment' | 'customer' | 'other'
emergencyLevel: 'critical' | 'high' | 'medium'
emergencyReason: string
// 优先级
priorityScore: number
priorityFactors: {
timeUrgency: number
lossRisk: number
distance: number
areaSize: number
}
// 时间要求
deadline: Date
remainingTime: number
// 损失评估
estimatedLoss: number
actualLoss?: number
// 调度信息
dispatchedMachines: string[]
dispatchedAt: Date
responseTime: number
// 状态
status: 'pending' | 'dispatched' | 'in_progress' | 'completed' | 'failed'
createdAt: Date
updatedAt: Date
}2. 应急预案 (EmergencyPlan)
typescript
interface EmergencyPlan {
id: string
planName: string
planType: string
// 触发条件
triggers: {
weatherCondition?: string
orderCount?: number
timeWindow?: number
}
// 执行步骤
steps: {
stepNo: number
stepName: string
action: string
responsible: string
timeout: number
}[]
// 资源配置
resources: {
reservedMachines: number
reservedOperators: number
budget: number
}
isActive: boolean
createdAt: Date
updatedAt: Date
}接口设计
1. 创建应急调度
typescript
POST /api/emergency-dispatches
Request:
{
orderId: string,
emergencyType: string,
emergencyLevel: string,
deadline: Date
}
Response:
{
code: 0,
message: "success",
data: {
dispatchId: string,
priorityScore: number,
recommendations: Machine[]
}
}2. 计算优先级
typescript
POST /api/emergency-dispatches/{dispatchId}/calculate-priority
Response:
{
code: 0,
message: "success",
data: {
priorityScore: number,
factors: {
timeUrgency: number,
lossRisk: number,
distance: number,
areaSize: number
},
rank: number
}
}3. 快速派单
typescript
POST /api/emergency-dispatches/{dispatchId}/quick-dispatch
Request:
{
machineIds: string[]
}
Response:
{
code: 0,
message: "success",
data: {
dispatchId: string,
status: "dispatched",
responseTime: number
}
}4. 启动应急预案
typescript
POST /api/emergency-plans/{planId}/activate
Response:
{
code: 0,
message: "success",
data: {
planId: string,
status: "activated",
steps: Step[]
}
}关键业务规则
1. 紧急等级判定
- 极紧急: 6小时内必须完成
- 高紧急: 12小时内必须完成
- 中紧急: 24小时内必须完成
2. 优先级计算
- 时间紧迫度: 40%
- 损失风险: 30%
- 距离远近: 20%
- 地块大小: 10%
3. 应急响应时间
- 极紧急: 15分钟内响应
- 高紧急: 30分钟内响应
- 中紧急: 1小时内响应
技术实现要点
1. 优先级计算算法
typescript
function calculatePriority(dispatch: EmergencyDispatch): number {
const timeScore = calculateTimeUrgency(dispatch.deadline);
const lossScore = calculateLossRisk(dispatch.estimatedLoss);
const distanceScore = calculateDistanceScore(dispatch.distance);
const areaScore = calculateAreaScore(dispatch.area);
return timeScore * 0.4 + lossScore * 0.3 +
distanceScore * 0.2 + areaScore * 0.1;
}2. 损失评估算法
typescript
function estimateLoss(order: Order, weather: Weather): number {
const cropValue = order.area * order.cropType.pricePerMu;
const lossRate = calculateLossRate(weather, order.deadline);
return cropValue * lossRate;
}实施建议
第一阶段: 基础功能(1周)
- [ ] 应急调度任务管理
- [ ] 优先级计算
- [ ] 快速派单
- [ ] 实时监控
第二阶段: 优化功能(1周)
- [ ] 应急预案管理
- [ ] 损失评估
- [ ] 跨区域支援
- [ ] 数据分析
成功案例
案例1: 某农机合作社暴雨抢收
实施前:
- 人工调度,响应慢
- 优先级不明,顾此失彼
- 损失惨重
实施后:
- 系统自动调度,响应快
- 优先级清晰,有序应对
- 损失大幅减少
关键数据:
- 响应时间: 从2小时降到15分钟
- 完成率: 从60%提升到95%
- 损失减少: 80%
相关场景
- SCHED-001 作业调度: 常规订单调度
- SCHED-002 跨区域调度: 跨区域应急支援
常见问题
Q1: 如何判断订单是否紧急?
A: 系统综合考虑时间、天气、损失风险等因素,自动判断紧急程度。
Q2: 紧急订单会打乱原有计划吗?
A: 会的,但系统会评估影响,尽量减少对其他订单的影响。
Q3: 如何保证应急响应速度?
A: 系统自动派单,机手手机收到紧急通知,立即响应。
本场景文档版本: v2.0 | 最后更新: 2024-03-07