场景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
function checkWaterLevelThreshold(
currentLevel: number
): WaterLevelThreshold数据模型:
typescript
interface WaterLevelThreshold {
// 水位阈值
warningLevel: number; // 警戒水位(50米)
guaranteeLevel: number; // 保证水位(55米)
designLevel: number; // 设计水位(58米)
// 预警级别
alertLevel: 'normal' | 'warning' | 'alarm' | 'emergency';
}业务规则:
- 正常状态:水位 ≤ 警戒水位 → normal
- 黄色预警:警戒水位 < 水位 ≤ 保证水位 → warning
- 橙色预警:保证水位 < 水位 ≤ 设计水位 → alarm
- 红色预警:水位 > 设计水位 → emergency
算法要求:
- 阈值比较:简单数值比较
- 复杂度:O(1)
- 技术难点:阈值配置化,支持不同水库的不同阈值
规则2:水位快速上升预警
接口签名:
typescript
function checkWaterLevelRiseRate(
records: WaterLevelRecord[],
guaranteeLevel: number
): WaterLevelRiseRate数据模型:
typescript
interface WaterLevelRiseRate {
// 时间窗口
timeWindow: number; // 时间窗口(秒)
riseThreshold: number; // 上升阈值(米)
// 判定结果
isRapidRise: boolean; // 是否快速上升
riseRate: number; // 上升速度(米/小时)
estimatedTime: number; // 预计到达保证水位的时间(分钟)
}业务规则:
- 时间窗口:获取指定时间窗口内的水位记录
- 上升速度计算:(最新水位 - 最早水位) / 时间差
- 快速上升判定:时间窗口内上升量 > 上升阈值 → 快速上升
- 到达时间预测:(保证水位 - 当前水位) / 上升速度
算法要求:
- 时间序列分析:需要处理时间窗口内的数据
- 线性预测:基于当前上升速度预测到达时间
- 复杂度:O(n),n为时间窗口内的记录数
- 技术难点:
- 数据缺失处理(传感器故障)
- 异常值过滤(传感器误报)
- 上升速度波动平滑处理
规则3:自动响应规则
接口签名:
typescript
function triggerAutoResponse(
alertLevel: 'warning' | 'alarm' | 'emergency' | 'rapidRise',
context: AlertContext
): AutoResponse数据模型:
typescript
interface AutoResponse {
// 报警配置
alert: {
channels: string[]; // 推送渠道
sound: string; // 报警音
message: string; // 报警消息
};
// 自动动作
actions: string[]; // 需要执行的动作列表
}
interface AlertContext {
reservoirId: string;
currentLevel: number;
riseRate?: number;
estimatedTime?: number;
}业务规则:
黄色预警(警戒水位):
- 推送渠道:调度室大屏、值班人员手机
- 自动动作:加密监测频率、通知防汛办、准备泄洪预案
橙色预警(保证水位):
- 推送渠道:调度室大屏、值班人员手机、防汛办主任手机
- 自动动作:启动应急预案、通知下游乡镇、调度闸门
红色预警(设计水位):
- 推送渠道:所有相关人员、应急广播
- 自动动作:立即泄洪、通知居民转移、上报上级
快速上升预警:
- 推送渠道:值班人员、防汛办主任
- 自动动作:查看上游降雨、提前准备泄洪
技术难点:
- 多渠道推送协调(APP、短信、语音、广播)
- 推送确认机制(重要预警必须确认)
- 推送失败重试策略
- 动作执行状态跟踪
2.2 技术方案
技术架构
水位计 → 数据采集 → 规则引擎 → 报警推送
↓
数据存储(时序数据)
↓
可视化大屏 + 移动端核心技术点
1. 水位数据采集
- 采集频率:正常模式 vs 预警模式(频率动态调整)
- 数据格式:
{ reservoirId, level, timestamp, sensorStatus } - 数据校验:异常值过滤(传感器故障检测)
2. 水位异常检测
- 实时监测:事件驱动架构,数据到达即检查
- 阈值判定:多级阈值比较
- 趋势判定:时间窗口内的上升速度计算
3. 规则引擎
- 多规则并行:阈值规则 + 上升速度规则同时判断
- 规则配置化:阈值、时间窗口可动态调整
- 规则测试:支持模拟数据验证
4. 报警推送
- 多通道协调:大屏、APP、短信、语音、广播
- 分级推送:根据预警级别推送不同人员
- 推送确认:重要预警需确认机制
复杂度评估:
- 数据采集:低复杂度,标准传感器接口
- 异常检测:中等复杂度,需要时间序列分析
- 规则引擎:中等复杂度,多规则协调
- 报警推送:高复杂度,多渠道协调和确认机制
技术难点:
- 传感器数据可靠性(故障检测、数据补偿)
- 实时性要求(秒级响应)
- 误报控制(避免频繁误报)
- 多渠道推送协调(确保消息送达)
关键依赖:
- 时序数据库(存储水位历史数据)
- 消息队列(异步推送)
- 规则引擎框架(支持动态规则配置)
- 多渠道推送服务(短信、语音、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 开发复杂度评估
基于已有资产(矿山场景):
原型验证阶段:
- 复用规则引擎,调整监测对象和阈值
- 增加"上升速度"判断,测试预警场景
- 复杂度:低,主要是配置调整
首版上线阶段:
- 完善报警推送逻辑,对接水位监测设备
- 测试各级预警场景
- 部署上线
- 复杂度:中等,需要设备对接和多场景测试
技术难点:
- 水位传感器数据可靠性保障
- 上升速度计算的准确性(数据平滑处理)
- 多渠道推送的协调和确认机制
- 误报率控制
关键依赖:
- 水位监测设备接口
- 时序数据库(存储历史数据)
- 消息推送服务(短信、语音、APP)
- 规则引擎框架
四、开发资产
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米,
并增加快速上升预警(时间窗口内上升超过阈值)。"
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复杂度评估:
- 环境准备:低复杂度
- Skill使用:低复杂度,主要是配置调整
- 配置调整:低复杂度
- 测试验证:中等复杂度,需要模拟多种场景
关键注意事项:
- 确保水位监测设备接口稳定可靠
- 时序数据库性能优化(大量历史数据)
- 推送渠道测试(确保消息送达)
- 误报率监控和调优
五、下一步行动
如果您对这个场景感兴趣
- 快速验证:基于模拟数据做原型演示
- 技术对接:提供水位监测设备接口文档,评估对接工作量
- 成本预估:根据水库数量、监测点数量,给出详细报价
复杂度评估:
- 原型验证:低复杂度,主要是规则配置
- 技术对接:中等复杂度,取决于设备接口标准化程度
- 生产部署:中高复杂度,需要考虑高可用、实时性、误报控制
相关场景
- 场景02:闸门控制异常监测 - 设备控制类场景
- 场景03:设备维护到期提醒 - 计划任务类场景

