Skip to content

场景01:井下人员定位信号异常预警

当前阶段: 🔍 探索中 | 行业: 矿山安全 | 关键词: 人员定位、异常预警、应急响应 | 返回矿山场景 →


一、需求探索

1.1 痛点时刻

具体场景:

凌晨2点,井下C区作业人员张三的定位信号突然消失。调度室发现时已经过去5分钟,立即呼叫但无人应答。此时无法确定:

  • 是设备故障(定位卡没电、信号干扰)
  • 还是人员遇险(被困、受伤、昏迷)

调度员需要立即启动应急预案,但不知道该派谁去、去哪里找、需要带什么设备。

业务背景:

  • 作业规模:井下同时作业100-500人,分布在多个作业面
  • 定位技术:井下无GPS信号,使用UWB(超宽带)定位系统
  • 作业环境:纵深数公里,通信条件差,存在盲区
  • 时间特点:24小时连续作业,夜班(22:00-6:00)人员较少

1.2 核心痛点

问题1:发现滞后

  • 定位信号消失后,调度室可能5-10分钟才发现
  • 没有自动报警机制,依赖人工盯屏
  • 夜班调度员可能疲劳,容易漏看

问题2:判断困难

  • 不知道是设备故障还是人员遇险
  • 不知道最后位置在哪里(信号消失前的轨迹)
  • 不知道附近有没有其他人员可以协助

问题3:响应慢

  • 人工呼叫、人工派单、人工记录,耗时长
  • 应急预案在纸上,执行时容易遗漏步骤
  • 事后追溯困难,责任不清

1.3 业务规则(行业标准)

《煤矿安全规程》相关要求:

  • 井下人员必须携带定位设备(第447条)
  • 定位系统应能实时显示井下人员位置(第448条)
  • 发现人员定位异常应立即核实并采取措施(第449条)

实际业务规则(基于行业调研):

  • 3分钟判定规则:定位信号消失 > 3分钟 → 判定为异常
  • 15分钟应急响应:异常发生后15分钟内必须完成人员确认
  • 升级规则:10分钟内未处理 → 升级到安全科科长

成本测算:

  • 误报成本:派人下井核实,耗时30分钟,人工成本约200元/次
  • 漏报成本:人员遇险延误救援,可能造成重大伤亡(无法估量)
  • 平衡点:宁可误报,不可漏报

二、方案设计

2.1 业务规则设计

规则1:异常判定规则

异常判定接口规范

接口名称: checkLocationAnomaly

数据模型规范:

typescript
// 输入模型
interface Worker {
  id: string;
  name: string;
  lastLocationUpdate: Date;
  lastKnownLocation: LocationPoint;
}

// 输出模型
interface LocationAnomaly {
  isAnomalous: boolean;
  severity?: 'warning' | 'critical';
  signalLostDuration: number;
  threshold: number;
  lastKnownLocation?: {
    area: string;
    coordinates: { x: number; y: number; z: number };
    timestamp: Date;
  };
}

业务规则定义:

  • 判定条件:定位信号消失时长 > 阈值(默认180秒)
  • 严重程度分级:
    • warning: 3-10分钟
    • critical: > 10分钟

业务约束:

  1. 阈值可配置,默认180秒(3分钟)
  2. 阈值取值范围:[60, 600]秒
  3. 必须记录最后已知位置

规则2:自动响应规则

typescript
// 自动响应动作
interface AutoResponse {
  // 立即动作(0分钟)
  immediate: {
    alert: {
      channels: ['调度室大屏', '调度员手机', '安全科长手机'];
      sound: '高优先级报警音';
      message: '井下人员定位异常:张三(工号001)信号消失3分钟';
    };
    displayInfo: {
      workerInfo: '姓名、工号、班组、联系方式';
      lastLocation: '最后位置、时间、轨迹回放';
      nearbyWorkers: '附近500米内的其他人员列表';
      emergencyContacts: '紧急联系人(家属、班组长)';
    };
  };

  // 10分钟未处理 → 升级
  escalation_10min: {
    notifyTo: ['安全科科长', '值班矿长'];
    message: '人员定位异常未处理:张三信号消失13分钟,请立即处理';
  };

  // 15分钟未确认 → 启动应急预案
  escalation_15min: {
    triggerEmergencyPlan: true;
    notifyTo: ['矿长', '安全科', '救护队'];
    autoActions: [
      '调取该区域监控录像',
      '通知附近人员前往查看',
      '准备救援设备'
    ];
  };
}

规则3:处置闭环规则

typescript
// 处置流程
interface DisposalProcess {
  // 步骤1:调度员确认(必须)
  step1_confirm: {
    action: '呼叫该人员 + 呼叫附近人员';
    timeLimit: 5;  // 5分钟内完成
    recordRequired: true;  // 必须记录呼叫结果
  };

  // 步骤2:现场核实(必须)
  step2_verify: {
    action: '派人前往最后位置核实';
    timeLimit: 15;  // 15分钟内到达
    reportRequired: true;  // 必须上报核实结果
  };

  // 步骤3:结果记录(必须)
  step3_record: {
    mustRecord: [
      '异常原因(设备故障/人员遇险/其他)',
      '处置措施',
      '处置结果',
      '处置时长',
      '责任人'
    ];
    autoArchive: true;  // 自动归档到安全台账
  };
}

2.2 技术方案

技术架构

UWB定位基站 → 定位数据采集 → 规则引擎 → 报警推送

              数据存储(轨迹、事件)

              可视化大屏 + 移动端

核心技术点

1. UWB定位数据采集

  • 定位精度:±30cm(井下环境)
  • 更新频率:1次/秒
  • 数据格式:{ workerId, x, y, z, timestamp, signalStrength }

2. 信号异常检测

  • 实时监测:每秒检查一次所有在井人员的定位数据
  • 异常判定:超过3分钟未收到数据 → 触发报警
  • 误报过滤:排除已出井人员、休息区人员

3. 规则引擎

  • 基于时间窗口的规则判断
  • 支持规则配置(阈值、升级时间可调整)
  • 支持规则测试(模拟异常场景)

4. 报警推送

  • 多通道推送:大屏、手机APP、短信、语音电话
  • 优先级控制:高优先级报警强制弹窗
  • 推送确认:必须确认收到,否则持续推送

数据模型

typescript
// 人员定位记录
interface LocationRecord {
  id: string;
  workerId: string;           // 人员ID
  workerName: string;         // 姓名
  area: string;               // 作业区域
  coordinates: { x: number; y: number; z: number };
  timestamp: Date;
  signalStrength: number;     // 信号强度
}

// 异常事件记录
interface AnomalyEvent {
  id: string;
  workerId: string;
  workerName: string;
  anomalyType: 'SIGNAL_LOST';
  detectedAt: Date;           // 检测到异常的时间
  lastSignalAt: Date;         // 最后信号时间
  lastLocation: LocationRecord;
  status: 'PENDING' | 'CONFIRMED' | 'RESOLVED';

  // 处置记录
  disposal: {
    confirmedBy: string;      // 确认人
    confirmedAt: Date;
    verifiedBy: string;       // 核实人
    verifiedAt: Date;
    cause: string;            // 异常原因
    actions: string[];        // 处置措施
    result: string;           // 处置结果
    resolvedAt: Date;
  };
}

三、AI辅助开发方案

3.1 技术迁移分析

复用已有资产:医废场景的"GPS轨迹验证"规则

相似点:

  • 都是基于位置数据的异常监测
  • 都需要实时判断 + 自动报警
  • 都需要记录轨迹 + 事后追溯

差异点:

维度医废场景矿山场景
定位技术GPS(室外)UWB(井下)
异常判断偏离路线 > 50米信号消失 > 3分钟
响应动作推送报警推送报警 + 应急预案
数据采集4G网络实时上传本地网络(井下无4G)

技术复用度:85%

  • 规则引擎逻辑:100%复用
  • 报警推送逻辑:100%复用
  • 数据采集层:需要适配UWB设备(15%新开发)

3.2 Cursor Skill设计

Skill名称: personnel-location-anomaly.md

Skill内容: (见下一节"开发资产")

3.3 PROMPT模板

PROMPT 1:生成异常检测代码

你是一个业务逻辑开发专家。请根据以下业务规则,生成人员定位异常检测的代码。

## 业务场景
矿山井下人员定位信号消失超过3分钟,需要自动报警并启动应急响应流程。

## 业务规则
1. 异常判定:定位信号消失 > 3分钟 → 判定为异常
2. 严重程度:
   - 3-10分钟:warning(警告)
   - > 10分钟:critical(严重)
3. 自动响应:
   - 立即推送报警(调度室大屏 + 手机APP)
   - 显示最后位置、轨迹回放、附近人员
   - 10分钟未处理 → 升级到安全科科长
   - 15分钟未确认 → 启动应急预案

## 数据模型
- LocationRecord:人员定位记录(workerId, coordinates, timestamp)
- AnomalyEvent:异常事件记录(workerId, detectedAt, lastLocation, status)

## 技术要求
- 使用TypeScript
- 实时监测(每秒检查一次)
- 支持规则配置(阈值可调整)
- 记录所有异常事件和处置过程

请基于以上规范生成代码。

PROMPT 2:生成报警推送逻辑

你是一个业务逻辑开发专家。请根据以下业务规则,生成分级报警推送的代码。

## 业务场景
人员定位异常需要立即推送报警,并根据处理情况自动升级。

## 业务规则
1. 立即推送(0分钟):
   - 推送到:调度室大屏、调度员手机、安全科长手机
   - 推送内容:人员信息、最后位置、附近人员

2. 升级推送(10分钟未处理):
   - 推送到:安全科科长、值班矿长
   - 推送内容:异常持续时长、未处理原因

3. 应急推送(15分钟未确认):
   - 推送到:矿长、安全科、救护队
   - 触发:启动应急预案

## 技术要求
- 支持多通道推送(APP、短信、语音电话)
- 推送确认机制(必须确认收到)
- 推送失败重试(最多3次)

请基于以上规范生成代码。

3.4 技术迁移复杂度评估

阶段一:原型验证

  • 验证目标:确认UWB定位数据能否满足异常检测需求
  • 技术难点:
    • UWB数据采集接口适配
    • 井下网络环境适配(无4G,需本地部署)
    • 规则引擎复用度验证
  • 关键依赖:
    • UWB设备接口文档
    • 井下网络拓扑图
    • 历史定位数据样本(至少1000条)

阶段二:首版上线

  • 核心模块:
    1. UWB数据采集模块(新开发,复杂度:高)
    2. 异常检测模块(复用医废场景,复杂度:低)
    3. 报警推送模块(复用医废场景,复杂度:低)
  • 技术风险:
    • UWB设备兼容性
    • 井下网络稳定性
    • 规则引擎性能(需要实时监测100-500人)
  • 性能要求:
    • 异常检测延迟 < 5秒
    • 报警推送延迟 < 10秒

阶段三:迭代优化

  • 优化方向:根据实际使用反馈调整阈值、优化报警策略
  • 关键指标:误报率、漏报率、响应时长

四、开发资产

4.1 Cursor Skill

文件名: personnel-location-anomaly.md

内容:

markdown
# 人员定位异常监测规则

## 业务场景
矿山、建筑、物流等场景中,需要实时监测人员定位信号,发现异常时自动报警并启动应急响应。

## 核心业务规则

### 1. 异常判定规则

**规则一:信号消失检测接口规范**

**接口签名:**
```typescript
function checkSignalLost(
  worker: Worker,
  currentTime: Date,
  threshold?: number
): boolean

参数说明:

  • worker: 人员信息对象
  • currentTime: 当前时间
  • threshold: 阈值(秒),默认180秒

业务规则:

  • 计算信号消失时长 = 当前时间 - 最后信号时间
  • 时长 > 阈值 → 返回 true
  • 时长 ≤ 阈值 → 返回 false

规则二:严重程度判定接口规范

接口签名:

typescript
function getSeverity(duration: number): 'warning' | 'critical'

业务规则:

  • duration > 600秒(10分钟) → 'critical'
  • duration ≤ 600秒 → 'warning'

2. 自动响应规则

规则一:立即报警(0分钟)

触发条件: 检测到信号消失超过阈值

响应动作规范:

typescript
interface ImmediateAlertAction {
  channels: ['大屏', '手机APP', '短信'];
  priority: 'HIGH';
  message: string;  // 格式: "人员定位异常:{姓名}信号消失{时长}秒"
  data: {
    workerInfo: Worker;
    lastLocation: LocationPoint;
    nearbyWorkers: Worker[];  // 半径500米内
  };
}

规则二:升级报警(10分钟未处理)

触发条件:

  • 异常状态为 PENDING
  • 信号消失时长 > 600秒

响应动作规范:

typescript
interface EscalationAlertAction {
  channels: ['安全科科长', '值班矿长'];
  priority: 'CRITICAL';
  message: string;  // 格式: "人员定位异常未处理:{姓名}信号消失{时长}秒"
}

规则三:启动应急预案(15分钟未确认)

触发条件:

  • 异常状态为 PENDING
  • 信号消失时长 > 900秒

响应动作规范:

typescript
interface EmergencyPlanAction {
  plan: 'PERSONNEL_MISSING';
  notifyTo: ['矿长', '安全科', '救护队'];
  autoActions: [
    '调取监控录像',
    '通知附近人员',
    '准备救援设备'
  ];
}

3. 处置闭环规则

规则一:处置步骤定义

typescript
interface DisposalSteps {
  step1: {
    action: '呼叫该人员 + 呼叫附近人员';
    timeLimit: 300;  // 5分钟
    recordRequired: true;
  };
  step2: {
    action: '派人前往最后位置核实';
    timeLimit: 900;  // 15分钟
    reportRequired: true;
  };
  step3: {
    action: '记录异常原因和处置结果';
    mustRecord: ['原因', '措施', '结果', '时长', '责任人'];
  };
}

数据模型

人员定位记录

typescript
interface LocationRecord {
  id: string;
  workerId: string;
  workerName: string;
  area: string;
  coordinates: { x: number; y: number; z: number };
  timestamp: Date;
  signalStrength: number;
}

异常事件记录

typescript
interface AnomalyEvent {
  id: string;
  workerId: string;
  workerName: string;
  anomalyType: 'SIGNAL_LOST';
  detectedAt: Date;
  lastSignalAt: Date;
  lastLocation: LocationRecord;
  status: 'PENDING' | 'CONFIRMED' | 'RESOLVED';
  disposal: {
    confirmedBy: string;
    confirmedAt: Date;
    verifiedBy: string;
    verifiedAt: Date;
    cause: string;
    actions: string[];
    result: string;
    resolvedAt: Date;
  };
}

关键处理流程

  1. 实时监测 → 每秒检查所有在岗人员的定位数据
  2. 异常判定 → 信号消失 > 阈值 → 触发报警
  3. 自动响应 → 推送报警 + 显示辅助信息
  4. 升级机制 → 10分钟/15分钟自动升级
  5. 处置闭环 → 记录处置过程 + 自动归档

开发注意事项

  1. 阈值可配置:不要硬编码3分钟,支持运营人员配置
  2. 误报过滤:排除已出井人员、休息区人员
  3. 推送确认:必须确认收到,否则持续推送
  4. 数据留痕:所有异常事件和处置过程必须记录

相似场景复用

这个规则可以复用到:

  • 建筑施工:工人进入危险区域超时未出
  • 物流配送:配送员长时间停留或失联
  • 医院运送:运送人员长时间未完成任务

### 4.2 技术迁移说明

**可复用的已有资产:**

1. **医废场景:GPS轨迹验证规则**
   - 复用:规则引擎框架、报警推送逻辑
   - 调整:GPS → UWB,偏离距离 → 信号消失时间
   - 复用度:85%

2. **医废场景:超期预警规则**
   - 复用:时间窗口判断、升级机制
   - 调整:阈值(46/47/48小时 → 3/10/15分钟)
   - 复用度:90%

**需要新开发的部分:**
- UWB定位数据采集接口(15%)
- 井下网络环境适配(本地部署,无4G)

### 4.3 实施指南

**步骤1:准备环境**
```bash
# 安装依赖
npm install

# 配置UWB定位设备接口
# 编辑 config/uwb-config.json

步骤2:使用Cursor Skill

1. 将 personnel-location-anomaly.md 保存到 .cursor/rules/
2. 在Cursor中告诉AI:
   "参考 personnel-location-anomaly.md 中的业务规则,
   实现人员定位异常监测功能"
3. AI会基于规则生成代码

步骤3:调整配置

typescript
// config/anomaly-rules.ts
export const ANOMALY_CONFIG = {
  signalLostThreshold: 180,      // 3分钟(可调整)
  escalationTime_1: 600,         // 10分钟升级
  escalationTime_2: 900,         // 15分钟启动应急预案
  nearbyRadius: 500,             // 附近人员搜索半径(米)
};

步骤4:测试验证

bash
# 运行测试
npm test

# 模拟异常场景
npm run simulate:signal-lost

五、下一步行动

如果您对这个场景感兴趣

  1. 快速验证:基于模拟数据做原型演示,验证业务规则可行性
  2. 技术对接:提供UWB设备接口文档,评估对接工作量
  3. 成本预估:根据人员规模、定位点数量,给出详细报价

相关场景

相关资产


← 返回矿山场景 | 联系合作 →

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