Skip to content

井下定位与应急撤离规则

适用于矿山井下作业、隧道施工与地下工程的人员定位与应急撤离场景。

规则文件内容

请复制以下内容,保存为 .cursor/rules/mine-evacuation-routing.mdc

markdown
---
description: 井下人员定位、失联预警与应急撤离路线业务规则
globs: src/modules/underground/**, src/modules/location/**, src/modules/evacuation/**
---

# 井下定位与应急撤离业务规则

## 1. 核心原则
- **定位连续**:井下人员定位必须周期上报并可追溯。
- **预警前置**:危险区域、失联、超时未出井必须主动告警。
- **撤离优先**:紧急情况下优先给出最短安全撤离路径。

## 2. 定位采集规则

### 2.1 上报频率与精度
- 定位标签每 `30` 秒上报一次。
- 定位精度目标 `3~5` 米,超出阈值点标记为低可信。

### 2.2 数据有效性
- 同一人员连续 2 条定位完全重复需标记“可能静止/设备异常”。
- 定位点必须包含 `person_id`, `x`, `y`, `z`, `sampled_at`

## 3. 预警规则

### 3.1 危险区域告警
- 人员进入 `danger_zone` 立即触发 `critical` 告警。
- 告警后 30 秒内未离开危险区,升级二次告警并通知班组长。

### 3.2 失联告警
- 连续 `5` 分钟未收到定位上报,触发 `missing` 告警。
- 连续 `10` 分钟失联,自动升级至调度中心。

### 3.3 超时未出井
- 入井时长超过 `8` 小时未出井,触发 `overtime` 告警。

## 4. 应急撤离规则

### 4.1 可用出口筛选
- 仅允许使用非危险区、未封闭、状态为 `available` 的应急出口。

### 4.2 路径选择策略
- 按“路径安全性 > 距离最短 > 拥堵最少”排序。
- 同级候选路径可按预计耗时最短优先。

```ts
interface RouteCandidate {
  routeId: string;
  isSafe: boolean;
  distance: number;
  congestion: number;
  etaSeconds: number;
}

function pickBestRoute(candidates: RouteCandidate[]): RouteCandidate | null {
  const valid = candidates.filter(c => c.isSafe);
  if (valid.length === 0) return null;
  return valid.sort((a, b) =>
    a.distance - b.distance || a.congestion - b.congestion || a.etaSeconds - b.etaSeconds
  )[0];
}

5. 告警联动与闭环

  • critical 告警必须触发:调度台弹窗 + 短信/电话通知 + 事件工单。
  • 撤离完成后必须写入 evacuation_report(开始时间、路径、到达出口、耗时)。

6. 数据模型约束

  • person_locations 必须包含:person_id, x, y, z, sampled_at, accuracy
  • alert_events 必须包含:person_id, alert_type, level, occurred_at, resolved_at
  • evacuation_routes 必须包含:route_id, exit_id, is_available, risk_level, distance

7. 实施注意事项

  • 井下弱信号环境建议支持本地缓存后补传。
  • 关键告警链路必须支持重试与人工确认。
  • 定位与撤离路径计算建议使用独立服务,避免阻塞主业务。

## 适用场景

- 矿山井下人员管理
- 隧道施工定位与撤离
- 地下工程安全调度

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