Skip to content

开发资产:矿山安全巡检系统

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


概述

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

  1. Cursor Skill - 井下人员定位与应急撤离规则
  2. PROMPT 模板 - 设备异常报警逻辑生成
  3. 实施指南 - 如何快速复现这个场景

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


1. Cursor Skill:井下人员定位与应急撤离规则

使用场景

当你需要开发类似的"人员定位/应急撤离"场景时,可以使用这个 Skill 让 AI 理解业务规则。

Skill 内容

markdown
# 井下人员定位与应急撤离规则

## 业务场景
矿山、隧道、地下工程等场景中,需要实时定位井下人员位置,并在紧急情况下快速指导人员撤离。

## 核心业务规则

### 1. 人员定位规则

**定位数据采集:**
- 定位标签每 30 秒上报一次位置
- 定位基站实时接收位置数据
- 数据通过有线/无线网络传输

**定位精度要求:**
- 定位精度:3-5 米
- 定位更新频率:30 秒
- 定位数据保存:至少 30 天

### 2. 异常预警规则

**预警类型:**
- 人员进入危险区域
- 人员超时未出井(超过 8 小时)
- 人员异常聚集
- 人员失联(超过 5 分钟未上报位置)

**预警处理:**
```typescript
async function checkPersonAlerts(personId: string): Promise<Alert[]> {
  const person = await getPersonLocation(personId);
  const alerts = [];
  
  // 检查是否在危险区域
  if (isInDangerZone(person.location)) {
    alerts.push({
      type: 'DANGER_ZONE',
      level: 'critical',
      message: `人员 ${person.name} 进入危险区域`
    });
  }
  
  // 检查是否超时未出井
  const undergroundTime = Date.now() - person.enterTime;
  if (undergroundTime > 8 * 60 * 60 * 1000) { // 8小时
    alerts.push({
      type: 'OVERTIME',
      level: 'warning',
      message: `人员 ${person.name} 超时未出井`
    });
  }
  
  // 检查是否失联
  const lastUpdateTime = Date.now() - person.lastUpdateTime;
  if (lastUpdateTime > 5 * 60 * 1000) { // 5分钟
    alerts.push({
      type: 'MISSING',
      level: 'critical',
      message: `人员 ${person.name} 失联`
    });
  }
  
  return alerts;
}

3. 应急撤离路线计算

路线计算算法:

typescript
function calculateEvacuationRoute(
  personLocation: Location,
  emergencyExits: EmergencyExit[],
  dangerZones: DangerZone[]
): EvacuationRoute {
  // 1. 筛选可用出口(避开危险区域)
  const availableExits = emergencyExits.filter(exit => 
    !isInDangerZone(exit.location, dangerZones)
  );
  
  // 2. 计算到每个出口的距离
  const routes = availableExits.map(exit => ({
    exit,
    distance: calculateDistance(personLocation, exit.location),
    path: calculatePath(personLocation, exit.location, dangerZones)
  }));
  
  // 3. 选择最短安全路线
  routes.sort((a, b) => a.distance - b.distance);
  const bestRoute = routes[0];
  
  return {
    exit: bestRoute.exit,
    distance: bestRoute.distance,
    path: bestRoute.path,
    estimatedTime: bestRoute.distance / 1.5 // 假设步行速度 1.5 m/s
  };
}

数据模型

人员定位(PersonLocation)

typescript
interface PersonLocation {
  personId: string;
  location: { x: number; y: number; z: number };
  timestamp: Date;
  isInDangerZone: boolean;
}

开发注意事项

  1. 定位精度:井下环境复杂,定位精度可能受影响,需要设置合理的容差
  2. 通信稳定性:井下信号可能不稳定,需要支持离线缓存
  3. 应急响应:应急撤离功能必须快速响应,不能有延迟
  4. 数据安全:人员定位数据涉及隐私,需要加密存储

相似场景复用

这个规则可以复用到:

  • 隧道施工人员定位:地铁、公路隧道施工
  • 地下工程人员定位:地下商场、地下停车场
  • 应急撤离系统:大型建筑、工厂应急撤离

---

## 2. PROMPT 模板:设备异常报警逻辑生成

### 使用场景

当需要快速生成类似的"设备异常报警"代码时,使用这个 PROMPT 模板。

### PROMPT 模板

```text
你是一个业务逻辑开发专家。请根据以下业务规则,生成完整的设备异常报警逻辑代码。

## 业务场景
[描述你的具体场景,例如:矿山设备运行监控]

## 设备监测参数
[列出监测参数,例如:
- 通风机:风量、温度
- 水泵:流量、压力
- 瓦斯监测:浓度
]

## 报警规则
[描述报警规则,例如:
- 风量 <80%:一般报警
- 温度 >80°C:严重报警
- 瓦斯浓度 >1%:严重报警,自动启动应急预案
]

## 输出要求
1. TypeScript 代码实现
2. 包含完整的报警逻辑
3. 包含通知机制
4. 包含单元测试用例
5. 包含注释说明

请生成代码。

3. 实施指南

快速复现步骤

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

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

  • [ ] 确认定位技术方案(RFID/蓝牙/UWB)
  • [ ] 确认设备监测参数和报警阈值
  • [ ] 确认应急撤离流程
  • [ ] 确认硬件设备选型

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

sql
-- 人员定位表
CREATE TABLE person_locations (
  id VARCHAR(50) PRIMARY KEY,
  person_id VARCHAR(50),
  location_x DECIMAL(10,2),
  location_y DECIMAL(10,2),
  location_z DECIMAL(10,2),
  timestamp TIMESTAMP,
  is_in_danger_zone BOOLEAN,
  created_at TIMESTAMP
);

-- 设备监控表
CREATE TABLE equipment_monitoring (
  id VARCHAR(50) PRIMARY KEY,
  equipment_id VARCHAR(50),
  parameter_name VARCHAR(50),
  parameter_value DECIMAL(10,2),
  status VARCHAR(20),
  alarm_level VARCHAR(20),
  timestamp TIMESTAMP,
  created_at TIMESTAMP
);

步骤 3:开发定位功能(3 小时)

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

步骤 4:开发设备监控(3 小时)

使用 PROMPT 模板生成设备监控和报警逻辑。

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

  • 短信通知
  • 电话通知(紧急情况)
  • 系统内消息

步骤 6:测试(2 小时)

  • 定位功能测试
  • 设备监控测试
  • 应急撤离测试
  • 边界值测试

总开发时间:约 10-12 小时


下一步

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


相关链接

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