场景01:水库水位异常预警
当前阶段: 🔍 探索中 | 行业: 水利行业 | 关键词: 水位监测、防汛预警、应急响应 | 返回水利场景 →
一、需求探索
1.1 痛点时刻
具体场景:
凌晨3点,某水库上游突降暴雨,水位在1小时内从48米上升到50米。调度室值班人员正在处理其他事务,等发现水位异常时已经过去1小时,此时水位已达到51.5米,接近保证水位(55米)。
如果再晚发现30分钟,可能需要紧急泄洪,影响下游居民安全。调度员不知道:
- 水位上升速度是否还在加快
- 需要立即开闸泄洪还是继续观察
- 应该通知哪些部门和人员
业务背景:
- 水库规模:中型水库,库容5000万立方米,保护下游10万人口
- 监测设备:水位计每5分钟上报一次数据
- 汛期特点:5-9月为汛期,夜间降雨频繁,值班人员容易疲劳
- 安全标准:警戒水位50米,保证水位55米,设计水位58米
1.2 核心痛点
问题1:发现滞后
- 水位数据每5分钟上报,但调度员可能30分钟才看一次
- 没有自动预警机制,依赖人工盯屏
- 夜间值班人员少,容易漏看关键数据
问题2:判断困难
- 不知道水位上升速度是否异常(正常上升 vs 快速上升)
- 不知道按当前速度多久会达到保证水位
- 不知道上游降雨情况和未来趋势
问题3:响应慢
- 发现异常后,人工查找应急预案,耗时长
- 人工通知相关部门,容易遗漏
- 事后追溯困难,责任不清
1.3 业务规则(行业标准)
《水库大坝安全管理条例》相关要求:
- 水库必须安装水位监测设备(第15条)
- 水位超过警戒水位应立即报告(第18条)
- 水位接近保证水位应启动应急预案(第19条)
实际业务规则(基于行业调研):
- 警戒水位规则:水位 > 50米 → 预警(黄色)
- 保证水位规则:水位 > 55米 → 报警(橙色)
- 设计水位规则:水位 > 58米 → 紧急(红色)
- 快速上升规则:1小时内上升 > 2米 → 立即报警(无论当前水位)
成本测算:
- 误报成本:启动应急预案,通知相关部门,人工成本约500元/次
- 漏报成本:延误泄洪时机,可能造成溃坝,损失无法估量
- 平衡点:宁可误报,不可漏报
二、方案设计
2.1 业务规则设计
规则1:水位阈值预警
typescript
// 水位阈值预警规则
interface WaterLevelThreshold {
// 水位阈值
warningLevel: number; // 警戒水位(50米)
guaranteeLevel: number; // 保证水位(55米)
designLevel: number; // 设计水位(58米)
// 预警级别
alertLevel: 'normal' | 'warning' | 'alarm' | 'emergency';
}
// 判定逻辑
function checkWaterLevelThreshold(
currentLevel: number
): WaterLevelThreshold {
if (currentLevel > 58) {
return {
warningLevel: 50,
guaranteeLevel: 55,
designLevel: 58,
alertLevel: 'emergency' // 红色预警
};
} else if (currentLevel > 55) {
return {
warningLevel: 50,
guaranteeLevel: 55,
designLevel: 58,
alertLevel: 'alarm' // 橙色预警
};
} else if (currentLevel > 50) {
return {
warningLevel: 50,
guaranteeLevel: 55,
designLevel: 58,
alertLevel: 'warning' // 黄色预警
};
}
return { alertLevel: 'normal' };
}规则2:水位快速上升预警
typescript
// 水位快速上升预警规则
interface WaterLevelRiseRate {
// 时间窗口
timeWindow: number; // 时间窗口(秒)
riseThreshold: number; // 上升阈值(米)
// 判定结果
isRapidRise: boolean; // 是否快速上升
riseRate: number; // 上升速度(米/小时)
estimatedTime: number; // 预计到达保证水位的时间(分钟)
}
// 判定逻辑
function checkWaterLevelRiseRate(
records: WaterLevelRecord[],
guaranteeLevel: number = 55
): WaterLevelRiseRate {
// 获取最近1小时的数据
const oneHourAgo = new Date(Date.now() - 3600 * 1000);
const recentRecords = records.filter(r => r.timestamp > oneHourAgo);
if (recentRecords.length < 2) {
return { isRapidRise: false, riseRate: 0, estimatedTime: 0 };
}
// 计算上升速度
const firstRecord = recentRecords[0];
const lastRecord = recentRecords[recentRecords.length - 1];
const timeDiff = (lastRecord.timestamp.getTime() - firstRecord.timestamp.getTime()) / 1000;
const levelDiff = lastRecord.level - firstRecord.level;
const riseRate = (levelDiff / timeDiff) * 3600; // 米/小时
// 判定是否快速上升
const isRapidRise = levelDiff > 2; // 1小时上升超过2米
// 预计到达保证水位的时间
let estimatedTime = 0;
if (riseRate > 0) {
const remainingLevel = guaranteeLevel - lastRecord.level;
estimatedTime = (remainingLevel / riseRate) * 60; // 分钟
}
return {
timeWindow: 3600,
riseThreshold: 2,
isRapidRise,
riseRate,
estimatedTime
};
}规则3:自动响应规则
typescript
// 自动响应动作
interface AutoResponse {
// 黄色预警(警戒水位)
warning: {
alert: {
channels: ['调度室大屏', '值班人员手机'];
sound: '普通报警音';
message: '水位超过警戒线:当前水位50.5米';
};
actions: [
'加密监测频率(每1分钟上报)',
'通知防汛办值班人员',
'准备泄洪预案'
];
};
// 橙色预警(保证水位)
alarm: {
alert: {
channels: ['调度室大屏', '值班人员手机', '防汛办主任手机'];
sound: '高优先级报警音';
message: '水位超过保证水位:当前水位55.5米';
};
actions: [
'启动应急预案',
'通知下游乡镇做好转移准备',
'调度闸门准备泄洪'
];
};
// 红色预警(设计水位)
emergency: {
alert: {
channels: ['调度室大屏', '所有相关人员手机', '应急广播'];
sound: '紧急报警音';
message: '水位超过设计水位:当前水位58.5米,立即泄洪!';
};
actions: [
'立即启动紧急泄洪',
'通知下游居民紧急转移',
'上报上级防汛指挥部'
];
};
// 快速上升预警
rapidRise: {
alert: {
channels: ['调度室大屏', '值班人员手机', '防汛办主任手机'];
sound: '高优先级报警音';
message: '水位快速上升:1小时内上升2.5米,预计30分钟后达到保证水位';
};
actions: [
'立即查看上游降雨情况',
'提前准备泄洪预案',
'通知下游做好准备'
];
};
}2.2 技术方案
技术架构
水位计 → 数据采集 → 规则引擎 → 报警推送
↓
数据存储(时序数据)
↓
可视化大屏 + 移动端核心技术点
1. 水位数据采集
- 采集频率:正常5分钟/次,预警时1分钟/次
- 数据格式:
{ reservoirId, level, timestamp, sensorStatus } - 数据校验:异常值过滤(如传感器故障导致的突变)
2. 水位异常检测
- 实时监测:每次收到数据立即检查
- 阈值判定:与警戒水位、保证水位、设计水位对比
- 趋势判定:计算最近1小时的上升速度
3. 规则引擎
- 支持多条规则并行判断(阈值规则 + 上升速度规则)
- 支持规则配置(阈值、时间窗口可调整)
- 支持规则测试(模拟水位上升场景)
4. 报警推送
- 多通道推送:大屏、手机APP、短信、语音电话、应急广播
- 分级推送:不同预警级别推送给不同人员
- 推送确认:重要预警必须确认收到
数据模型
typescript
// 水位记录
interface WaterLevelRecord {
id: string;
reservoirId: string; // 水库ID
reservoirName: string; // 水库名称
level: number; // 水位(米)
timestamp: Date; // 采集时间
sensorStatus: 'normal' | 'abnormal'; // 传感器状态
}
// 预警事件记录
interface AlertEvent {
id: string;
reservoirId: string;
reservoirName: string;
alertType: 'THRESHOLD' | 'RAPID_RISE'; // 预警类型
alertLevel: 'warning' | 'alarm' | 'emergency'; // 预警级别
detectedAt: Date; // 检测到异常的时间
currentLevel: number; // 当前水位
riseRate?: number; // 上升速度(米/小时)
estimatedTime?: number; // 预计到达保证水位的时间(分钟)
status: 'PENDING' | 'CONFIRMED' | 'RESOLVED';
// 处置记录
disposal: {
confirmedBy: string; // 确认人
confirmedAt: Date;
actions: string[]; // 处置措施
result: string; // 处置结果
resolvedAt: Date;
};
}三、AI辅助开发方案
3.1 技术迁移分析
复用已有资产:矿山场景的"环境监测异常预警"规则
相似点:
- 都是基于传感器数据的异常监测
- 都需要实时判断 + 自动报警
- 都需要分级预警 + 升级机制
差异点:
| 维度 | 矿山场景(瓦斯监测) | 水利场景(水位监测) |
|---|---|---|
| 监测对象 | 瓦斯浓度 | 水位高度 |
| 异常判断 | 浓度 > 阈值 | 水位 > 阈值 OR 上升速度 > 阈值 |
| 预警级别 | 2级(预警、报警) | 4级(正常、黄色、橙色、红色) |
| 响应动作 | 停止作业、人员撤离 | 加密监测、准备泄洪、紧急泄洪 |
技术复用度:85%
- 规则引擎逻辑:100%复用
- 报警推送逻辑:100%复用
- 异常判断逻辑:需要增加"上升速度"判断(15%新开发)
3.2 Cursor Skill设计
Skill名称: environment-monitoring-alert.md(已存在,可直接复用)
复用说明:
- 矿山场景的"环境监测异常预警"规则可以直接应用到水位监测
- 只需调整监测对象(瓦斯浓度 → 水位)和阈值配置
- 增加"上升速度"判断逻辑
3.3 PROMPT模板
PROMPT 1:生成水位异常检测代码
你是一个业务逻辑开发专家。请根据以下业务规则,生成水位异常检测的代码。
## 业务场景
水库水位监测,当水位超过警戒线或短时间内快速上升时,需要自动报警并启动应急响应。
## 业务规则
1. 阈值预警:
- 水位 > 50米(警戒水位)→ 黄色预警
- 水位 > 55米(保证水位)→ 橙色预警
- 水位 > 58米(设计水位)→ 红色预警
2. 快速上升预警:
- 1小时内上升 > 2米 → 立即报警(无论当前水位)
- 计算预计到达保证水位的时间
3. 自动响应:
- 黄色预警:通知值班人员,加密监测频率
- 橙色预警:启动应急预案,通知下游乡镇
- 红色预警:立即泄洪,通知居民转移
- 快速上升:提前准备泄洪预案
## 数据模型
- WaterLevelRecord:水位记录(reservoirId, level, timestamp)
- AlertEvent:预警事件记录(alertType, alertLevel, currentLevel, status)
## 技术要求
- 使用TypeScript
- 实时监测(每次收到数据立即检查)
- 支持规则配置(阈值可调整)
- 记录所有预警事件和处置过程
请参考 environment-monitoring-alert.md 中的规则,生成完整的代码实现。PROMPT 2:生成分级报警推送逻辑
你是一个业务逻辑开发专家。请根据以下业务规则,生成分级报警推送的代码。
## 业务场景
水位异常需要根据预警级别推送给不同人员,并触发不同的应急响应动作。
## 业务规则
1. 黄色预警(警戒水位):
- 推送到:调度室大屏、值班人员手机
- 动作:加密监测频率、通知防汛办、准备泄洪预案
2. 橙色预警(保证水位):
- 推送到:调度室大屏、值班人员手机、防汛办主任手机
- 动作:启动应急预案、通知下游乡镇、调度闸门
3. 红色预警(设计水位):
- 推送到:所有相关人员、应急广播
- 动作:立即泄洪、通知居民转移、上报上级
4. 快速上升预警:
- 推送到:值班人员、防汛办主任
- 动作:查看上游降雨、提前准备泄洪
## 技术要求
- 支持多通道推送(APP、短信、语音电话、应急广播)
- 推送确认机制(重要预警必须确认收到)
- 推送失败重试(最多3次)
请生成完整的代码实现。3.4 开发周期预估
基于已有资产(矿山场景):
原型验证:1-2天
- Day 1:复用规则引擎,调整监测对象和阈值
- Day 2:增加"上升速度"判断,测试预警场景
首版上线:3-5天
- Day 3:完善报警推送逻辑,对接水位监测设备
- Day 4:测试各级预警场景
- Day 5:部署上线
迭代优化:根据实际使用反馈调整阈值、优化预警策略
四、开发资产
4.1 Cursor Skill
文件名: environment-monitoring-alert.md(已存在)
复用说明: 矿山场景的"环境监测异常预警"规则可以直接应用到水位监测,只需调整以下配置:
typescript
// 监测对象配置
const MONITORING_CONFIG = {
// 矿山场景:瓦斯浓度
mining: {
metric: 'gasConcentration',
unit: '%',
thresholds: [0.5, 1.0, 1.5] // 预警、报警、紧急
},
// 水利场景:水位
waterConservancy: {
metric: 'waterLevel',
unit: 'm',
thresholds: [50, 55, 58], // 警戒、保证、设计
riseRateThreshold: 2, // 1小时上升2米
riseRateWindow: 3600 // 时间窗口(秒)
}
};4.2 技术迁移说明
可复用的已有资产:
矿山场景:环境监测异常预警规则
- 复用:规则引擎框架、报警推送逻辑、分级预警机制
- 调整:监测对象(瓦斯浓度 → 水位)、阈值配置
- 新增:上升速度判断逻辑
- 复用度:85%
医废场景:超期预警规则
- 复用:时间窗口判断、升级机制
- 调整:时间窗口(46/47/48小时 → 1小时)
- 复用度:70%
需要新开发的部分:
- 上升速度计算逻辑(10%)
- 预计到达时间计算(5%)
4.3 实施指南
步骤1:准备环境
bash
# 安装依赖
npm install
# 配置水位监测设备接口
# 编辑 config/water-level-config.json步骤2:使用Cursor Skill
1. 确认 environment-monitoring-alert.md 已存在于 .cursor/rules/
2. 在Cursor中告诉AI:
"参考 environment-monitoring-alert.md 中的业务规则,
实现水位异常监测功能。监测对象是水位,阈值为50/55/58米,
并增加1小时上升2米的快速上升预警。"
3. AI会基于规则生成代码步骤3:调整配置
typescript
// config/alert-rules.ts
export const WATER_LEVEL_CONFIG = {
warningLevel: 50, // 警戒水位(米)
guaranteeLevel: 55, // 保证水位(米)
designLevel: 58, // 设计水位(米)
riseRateThreshold: 2, // 上升速度阈值(米/小时)
riseRateWindow: 3600, // 时间窗口(秒)
monitoringInterval: 300, // 正常监测间隔(秒)
alertInterval: 60, // 预警时监测间隔(秒)
};步骤4:测试验证
bash
# 运行测试
npm test
# 模拟水位上升场景
npm run simulate:water-level-rise五、下一步行动
如果您对这个场景感兴趣
- 快速验证:我们可以用1-2天时间,基于模拟数据做原型演示
- 技术对接:提供水位监测设备接口文档,评估对接工作量
- 成本预估:根据水库数量、监测点数量,给出详细报价
相关场景
- 场景02:闸门控制异常监测 - 设备控制类场景
- 场景03:设备维护到期提醒 - 计划任务类场景

