Skip to content

开发资产:应急抢修调度

← 上一阶段:方案设计 | 下一阶段:系统落地 →


概述

在开发这个场景的过程中,我们沉淀了以下可复用的开发资产:

  1. Cursor Skill - 应急事件分级与智能派单规则
  2. PROMPT 模板 - 实时定位与状态管理逻辑生成
  3. 实施指南 - 如何快速复现这个场景

这些资产可以帮助快速复用这个场景的开发经验。


1. Cursor Skill:应急事件分级与智能派单规则

使用场景

当你需要开发类似的"应急调度/智能派单"场景时,可以使用这个 Skill 让 AI 理解业务规则。

Skill 内容

markdown
# 应急事件分级与智能派单规则

## 业务场景
应急抢修、紧急调度等场景中,需要根据事件紧急程度快速派单,并考虑多个维度选择最合适的执行人员。

## 核心业务规则

### 1. 事件分级规则

**分级标准:**
- 一级(危急):5分钟内响应,如电梯困人、消防报警
- 二级(紧急):15分钟内响应,如水管爆裂、电路跳闸
- 三级(重要):30分钟内响应,如门禁故障
- 四级(普通):2小时内响应,如一般维修

### 2. 智能派单算法

**评分计算:**
```typescript
function calculateDispatchScore(
  worker: Worker,
  task: EmergencyTask
): number {
  // 技能匹配度(0-100分)
  const skillMatch = worker.skills.includes(task.skillType) ? 100 : 0;
  
  // 距离得分(0-100分)
  const distance = calculateDistance(worker.location, task.location);
  const distanceScore = Math.max(0, 100 - (distance / 1000) * 20);
  
  // 工作量得分(0-100分)
  const workload = worker.currentTasks.length;
  const maxTasks = worker.maxConcurrentTasks || 3;
  const workloadScore = Math.max(0, 100 - (workload / maxTasks) * 100);
  
  // 班次得分(0-100分)
  const shiftScore = isInShift(worker, task.time) ? 100 : 0;
  
  // 加权计算
  return (
    skillMatch * 0.25 +
    distanceScore * 0.25 +
    workloadScore * 0.15 +
    shiftScore * 0.1
  );
}

3. 一级危急事件处理

处理规则:

  • 立即广播通知所有在线师傅
  • 支持抢单模式
  • 2分钟内无人接单,自动升级通知主管

数据模型

应急任务(EmergencyTask)

typescript
interface EmergencyTask {
  urgency: 'critical' | 'urgent' | 'important' | 'normal';
  skillType: string;
  location: { lat: number; lng: number };
  requiredTools?: string[];
}

开发注意事项

  1. 实时性:应急调度对实时性要求极高,需要WebSocket实时通信
  2. 位置更新:师傅位置需要实时更新,建议每30秒更新一次
  3. 超时处理:需要定时任务检查超时情况
  4. 广播机制:一级危急事件需要广播通知,确保及时响应

相似场景复用

这个规则可以复用到:

  • 医院应急 - 手术室、ICU设备故障应急
  • 工厂设备故障 - 生产线停机抢修
  • 道路抢险 - 市政设施应急处理

---

## 2. PROMPT 模板:实时定位与状态管理逻辑生成

### 使用场景

当需要快速生成类似的"实时定位/状态管理"代码时,使用这个 PROMPT 模板。

### PROMPT 模板

```text
你是一个业务逻辑开发专家。请根据以下业务规则,生成完整的实时定位与状态管理逻辑代码。

## 业务场景
[描述你的具体场景,例如:应急抢修实时定位]

## 状态定义
[列出所有状态,例如:
- 在线空闲:在线,无任务
- 在线忙碌:在线,有任务
- 在线不可用:在线,但不可接单
- 离线:不在线
]

## 位置更新规则
[描述位置更新规则,例如:
- 每30秒更新一次位置
- 位置变化超过50米才更新
- 离线超过5分钟,状态自动变为离线
]

## 输出要求
1. TypeScript 代码实现
2. 包含完整的状态管理逻辑
3. 包含位置更新逻辑
4. 包含WebSocket实时通信
5. 包含单元测试用例
6. 包含注释说明

请生成代码。

3. 实施指南

快速复现步骤

如果你需要在新项目中实现类似的场景,按照以下步骤:

步骤 1:需求确认(1 小时)

  • [ ] 确认事件分级标准
  • [ ] 确认派单规则(评分权重)
  • [ ] 确认响应时间要求
  • [ ] 确认师傅技能分类

步骤 2:数据库设计(30 分钟)

sql
-- 应急任务表
CREATE TABLE emergency_tasks (
  id VARCHAR(50) PRIMARY KEY,
  task_no VARCHAR(50) UNIQUE,
  urgency VARCHAR(20),
  task_type VARCHAR(50),
  skill_type VARCHAR(50),
  location_lat DECIMAL(10,6),
  location_lng DECIMAL(10,6),
  assigned_worker_id VARCHAR(50),
  status VARCHAR(20),
  reported_time TIMESTAMP,
  created_at TIMESTAMP
);

-- 师傅信息表
CREATE TABLE workers (
  id VARCHAR(50) PRIMARY KEY,
  name VARCHAR(100),
  skills JSON,
  location_lat DECIMAL(10,6),
  location_lng DECIMAL(10,6),
  status VARCHAR(20),
  current_tasks JSON,
  created_at TIMESTAMP
);

步骤 3:开发派单逻辑(3 小时)

使用上述 Cursor Skill,快速生成派单逻辑代码。

步骤 4:开发实时定位(2 小时)

使用 PROMPT 模板生成实时定位和状态管理逻辑。

步骤 5:集成通知(1 小时)

  • 推送通知
  • 短信通知(紧急情况)
  • 电话通知(一级危急)

步骤 6:测试(2 小时)

  • 派单逻辑测试
  • 实时定位测试
  • 应急响应测试
  • 边界值测试

总开发时间:约 9-11 小时


下一步

查看 系统落地 → 了解这个场景在完整系统中的实现。


相关链接

基于 AI 辅助开发,快速、灵活、可靠