Skip to content

场景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 技术迁移说明

可复用的已有资产:

  1. 矿山场景:环境监测异常预警规则

    • 复用:规则引擎框架、报警推送逻辑、分级预警机制
    • 调整:监测对象(瓦斯浓度 → 水位)、阈值配置
    • 新增:上升速度判断逻辑
    • 复用度:85%
  2. 医废场景:超期预警规则

    • 复用:时间窗口判断、升级机制
    • 调整:时间窗口(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. 快速验证:我们可以用1-2天时间,基于模拟数据做原型演示
  2. 技术对接:提供水位监测设备接口文档,评估对接工作量
  3. 成本预估:根据水库数量、监测点数量,给出详细报价

相关场景

相关资产


← 返回水利场景 | 联系合作 →

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