井下定位与应急撤离规则
适用于矿山井下作业、隧道施工与地下工程的人员定位与应急撤离场景。
规则文件内容
请复制以下内容,保存为 .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,accuracyalert_events必须包含:person_id,alert_type,level,occurred_at,resolved_atevacuation_routes必须包含:route_id,exit_id,is_available,risk_level,distance
7. 实施注意事项
- 井下弱信号环境建议支持本地缓存后补传。
- 关键告警链路必须支持重试与人工确认。
- 定位与撤离路径计算建议使用独立服务,避免阻塞主业务。
## 适用场景
- 矿山井下人员管理
- 隧道施工定位与撤离
- 地下工程安全调度
