场景03:设备巡检漏检预警
当前阶段: 🔍 探索中 | 行业: 矿山安全 | 关键词: 设备巡检、超期预警、计划任务 | 返回矿山场景 →
一、需求探索
1.1 痛点时刻
具体场景:
周一上午10点,机电科发现:
- 3号主通风机应该在9:00完成巡检,但巡检记录显示"未执行"
- 巡检员李四说:"早上有个紧急故障,先去处理了,忘记巡检通风机了"
- 此时已经超期1小时,但系统没有任何提醒
主通风机是井下通风的核心设备,如果故障会导致全矿停产。按规定每天必须巡检,不能漏检。
业务背景:
- 设备规模:井下有200-500台设备需要定期巡检(通风机、水泵、提升机等)
- 巡检频率:日检、周检、月检、季检,不同设备频率不同
- 巡检内容:检查设备运行状态、记录参数、发现隐患
- 人员配置:机电科10-20人,每人负责多台设备
1.2 核心痛点
问题1:漏检难发现
- 巡检计划在纸上或Excel表格中,容易遗漏
- 巡检员可能因为其他紧急任务忘记巡检
- 管理人员不知道哪些设备漏检了,只能事后发现
问题2:责任不清
- 不知道是巡检员忘记了,还是设备无法巡检(如正在维修)
- 不知道漏检多长时间了,是否需要补检
- 事后追责困难,容易扯皮
问题3:风险高
- 重点设备(如主通风机)漏检,可能导致重大安全事故
- 普通设备漏检,可能导致设备故障、影响生产
- 没有预警机制,只能靠人工盯
1.3 业务规则(行业标准)
《煤矿安全规程》相关要求:
- 主要通风机必须每天检查一次(第133条)
- 排水设备必须每天检查一次(第289条)
- 提升设备必须每天检查一次(第407条)
实际业务规则(基于行业调研):
- 到期+30分钟预警:巡检到期后30分钟未执行 → 黄色预警,提醒巡检员
- 到期+2小时报警:巡检到期后2小时未执行 → 红色报警,通知管理层
- 重点设备立即报警:主通风机、提升机等重点设备,到期未执行 → 立即报警
- 补检规则:漏检后必须补检,并记录漏检原因
成本测算:
- 漏检成本:设备故障导致停产,损失约10万元/天
- 预警成本:系统开发 + 运维,约5万元/年
- 投资回报:避免一次重大设备故障,即可收回成本
二、方案设计
2.1 业务规则设计
规则1:巡检到期判定规则
typescript
// 巡检到期判定
interface InspectionOverdue {
// 判定条件
equipment: Equipment; // 设备信息
scheduledTime: Date; // 计划巡检时间
currentTime: Date; // 当前时间
lastInspectionTime?: Date; // 最后巡检时间
// 判定结果
isOverdue: boolean; // 是否超期
overdueDuration: number; // 超期时长(分钟)
severity: 'warning' | 'alarm' | 'critical';
}
// 判定逻辑
function checkInspectionOverdue(
equipment: Equipment,
scheduledTime: Date,
currentTime: Date
): InspectionOverdue {
const overdueDuration = (currentTime.getTime() - scheduledTime.getTime()) / 1000 / 60;
if (overdueDuration <= 0) {
return { isOverdue: false };
}
// 重点设备:到期立即报警
if (equipment.isCritical) {
return {
equipment,
scheduledTime,
currentTime,
isOverdue: true,
overdueDuration,
severity: 'critical'
};
}
// 普通设备:到期+30分钟预警,+2小时报警
if (overdueDuration > 120) { // 2小时
return {
equipment,
scheduledTime,
currentTime,
isOverdue: true,
overdueDuration,
severity: 'alarm'
};
} else if (overdueDuration > 30) { // 30分钟
return {
equipment,
scheduledTime,
currentTime,
isOverdue: true,
overdueDuration,
severity: 'warning'
};
}
return { isOverdue: false };
}规则2:自动响应规则
typescript
// 自动响应动作
interface AutoResponse {
// 黄色预警(普通设备,到期+30分钟)
warning: {
alert: {
channels: ['巡检员手机'];
message: '3号水泵巡检超期30分钟,请尽快完成';
};
autoActions: [
'推送提醒给巡检员',
'记录预警事件'
];
};
// 红色报警(普通设备,到期+2小时)
alarm: {
alert: {
channels: ['巡检员手机', '班组长手机', '机电科长手机'];
message: '3号水泵巡检超期2小时,请立即处理';
};
autoActions: [
'推送报警给管理层',
'记录报警事件',
'要求说明原因'
];
};
// 强制报警(重点设备,到期立即报警)
critical: {
alert: {
channels: ['巡检员手机', '班组长手机', '机电科长', '值班矿长'];
sound: '高优先级报警音';
message: '3号主通风机巡检超期,请立即处理';
};
autoActions: [
'推送报警给所有相关人员',
'记录报警事件',
'启动应急预案(如设备异常)'
];
};
}规则3:补检规则
typescript
// 补检规则
interface MakeUpInspection {
// 补检要求
required: boolean; // 是否需要补检
deadline: Date; // 补检截止时间
mustRecordReason: boolean; // 是否必须记录漏检原因
// 补检流程
steps: [
{
step: 1;
action: '巡检员完成补检';
timeLimit: 4; // 4小时内完成
},
{
step: 2;
action: '记录漏检原因';
mustRecord: ['原因类型', '详细说明', '责任人'];
},
{
step: 3;
action: '班组长审核';
mustApprove: true;
}
];
}
// 补检逻辑
async function handleMakeUpInspection(overdue: InspectionOverdue) {
// 创建补检任务
const makeUpTask = await createMakeUpTask({
equipmentId: overdue.equipment.id,
originalScheduledTime: overdue.scheduledTime,
overdueDetectedAt: overdue.currentTime,
deadline: new Date(overdue.currentTime.getTime() + 4 * 60 * 60 * 1000), // 4小时后
assignedTo: overdue.equipment.inspector
});
// 推送补检通知
await notifyInspector({
inspector: overdue.equipment.inspector,
message: `${overdue.equipment.name}巡检超期,请在4小时内完成补检并说明原因`,
task: makeUpTask
});
return makeUpTask;
}2.2 技术方案
技术架构
巡检计划 → 定时任务 → 规则引擎 → 报警推送
↓
巡检记录存储
↓
可视化大屏 + 移动端核心技术点
1. 巡检计划管理
- 支持多种巡检频率:日检、周检、月检、季检
- 自动生成巡检任务(如每天9:00生成当天的巡检任务)
- 支持计划调整(如设备维修期间暂停巡检)
2. 超期检测
- 定时任务:每10分钟检查一次所有巡检任务
- 超期判定:当前时间 > 计划时间 + 容忍时间
- 分级判断:重点设备 vs 普通设备
3. 规则引擎
- 基于时间窗口的规则判断
- 支持规则配置(容忍时间、报警级别可调整)
- 支持规则测试(模拟超期场景)
4. 报警推送
- 分级推送:黄色预警、红色报警、强制报警
- 多通道推送:手机APP、短信、语音电话
- 推送确认:必须确认收到,否则持续推送
数据模型
typescript
// 设备信息
interface Equipment {
id: string;
name: string; // 设备名称(如"3号主通风机")
type: string; // 设备类型
location: string; // 位置
isCritical: boolean; // 是否重点设备
inspector: string; // 负责巡检的人员
inspectionFrequency: 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY';
}
// 巡检任务
interface InspectionTask {
id: string;
equipmentId: string;
equipmentName: string;
scheduledTime: Date; // 计划巡检时间
status: 'PENDING' | 'COMPLETED' | 'OVERDUE';
assignedTo: string; // 巡检员
// 执行记录
execution?: {
completedAt: Date;
completedBy: string;
result: 'NORMAL' | 'ABNORMAL';
notes: string; // 巡检备注
photos: string[]; // 巡检照片
};
// 超期记录
overdue?: {
detectedAt: Date;
overdueDuration: number;
alertLevel: 'warning' | 'alarm' | 'critical';
reason: string; // 漏检原因
madeUpAt?: Date; // 补检时间
};
}
// 超期事件记录
interface OverdueEvent {
id: string;
taskId: string;
equipmentId: string;
equipmentName: string;
scheduledTime: Date;
detectedAt: Date;
overdueDuration: number;
alertLevel: 'warning' | 'alarm' | 'critical';
// 处置记录
disposal: {
notifiedTo: string[]; // 通知人员
acknowledgedBy: string; // 确认人
acknowledgedAt: Date;
madeUpAt?: Date; // 补检时间
reason: string; // 漏检原因
resolvedAt: Date;
};
}三、AI辅助开发方案
3.1 技术迁移分析
复用已有资产:生鲜场景的"冷库巡检"规则 + 医废场景的"超期预警"规则
相似点:
- 都是基于计划任务的超期监测
- 都需要判断是否超期 + 自动报警
- 都需要记录执行情况 + 事后追溯
差异点:
| 维度 | 生鲜场景 | 医废场景 | 矿山场景 |
|---|---|---|---|
| 监测对象 | 冷库巡检 | 医废转运 | 设备巡检 |
| 超期判断 | 到期+2小时 | 到期+46/47/48小时 | 到期+30分钟/2小时 |
| 分级规则 | 无 | 46/47/48小时分级 | 重点设备 vs 普通设备 |
| 响应动作 | 推送提醒 | 推送报警 | 推送报警 + 补检流程 |
技术复用度:90%
- 规则引擎逻辑:100%复用(超期判断 + 分级报警)
- 报警推送逻辑:100%复用
- 补检流程:需要新开发(10%)
3.2 Cursor Skill设计
Skill名称: inspection-overdue-alert.md
Skill内容: (见下一节"开发资产")
3.3 PROMPT模板
PROMPT 1:生成超期检测代码
你是一个业务逻辑开发专家。请根据以下业务规则,生成巡检超期检测的代码。
## 业务场景
矿山设备需要定期巡检,巡检到期未执行需要自动预警,重点设备立即报警。
## 业务规则
1. 超期判定:
- 重点设备:到期立即报警
- 普通设备:到期+30分钟预警,+2小时报警
2. 自动响应:
- 黄色预警:推送给巡检员
- 红色报警:推送给巡检员 + 管理层
- 强制报警:推送给所有相关人员
3. 补检流程:
- 创建补检任务,4小时内完成
- 记录漏检原因
- 班组长审核
## 数据模型
- Equipment:设备信息(id, name, isCritical, inspector)
- InspectionTask:巡检任务(equipmentId, scheduledTime, status)
- OverdueEvent:超期事件记录(taskId, detectedAt, disposal)
## 技术要求
- 使用TypeScript
- 定时检测(每10分钟检查一次)
- 支持规则配置(容忍时间可调整)
- 记录所有超期事件和处置过程
请生成完整的代码实现。PROMPT 2:生成补检流程代码
你是一个业务逻辑开发专家。请根据以下业务规则,生成巡检补检流程的代码。
## 业务场景
巡检超期后,需要创建补检任务,并记录漏检原因。
## 业务规则
1. 创建补检任务:
- 分配给原巡检员
- 4小时内完成
- 必须记录漏检原因
2. 补检流程:
- 步骤1:巡检员完成补检
- 步骤2:记录漏检原因(原因类型、详细说明、责任人)
- 步骤3:班组长审核
3. 补检通知:
- 推送给巡检员
- 推送给班组长
- 超时未完成 → 升级报警
## 技术要求
- 使用TypeScript
- 支持补检任务管理
- 支持原因记录和审核
- 记录补检全流程
请生成完整的代码实现。3.4 开发周期预估
基于已有资产(生鲜 + 医废场景):
原型验证:1天
- Day 1:复用超期检测规则,调整阈值和分级逻辑
首版上线:3-4天
- Day 2:开发补检流程
- Day 3:对接巡检系统、测试
- Day 4:部署上线
迭代优化:根据实际使用反馈调整容忍时间、优化报警策略
四、开发资产
4.1 Cursor Skill
文件名: inspection-overdue-alert.md
内容:
markdown
# 巡检超期预警规则
## 业务场景
矿山、工厂、物业等场景中,需要定期巡检设备或场所,发现超期未执行时自动报警。
## 核心业务规则
### 1. 超期判定规则
**规则一:超期检测**
```typescript
// 检测巡检任务是否超期
function checkInspectionOverdue(
task: InspectionTask,
currentTime: Date,
toleranceMinutes: number = 30 // 容忍时间(分钟)
): boolean {
if (task.status === 'COMPLETED') {
return false;
}
const overdueDuration = (currentTime.getTime() - task.scheduledTime.getTime()) / 1000 / 60;
return overdueDuration > toleranceMinutes;
}规则二:分级判断
typescript
// 判断超期严重程度
function getOverdueSeverity(
equipment: Equipment,
overdueDuration: number
): 'warning' | 'alarm' | 'critical' {
// 重点设备:到期立即报警
if (equipment.isCritical) {
return 'critical';
}
// 普通设备:分级判断
if (overdueDuration > 120) { // 2小时
return 'alarm';
} else if (overdueDuration > 30) { // 30分钟
return 'warning';
}
return 'warning';
}2. 自动响应规则
规则一:分级报警
typescript
async function triggerOverdueAlert(
task: InspectionTask,
severity: 'warning' | 'alarm' | 'critical'
) {
const alertConfig = {
warning: {
channels: ['巡检员手机'],
priority: 'MEDIUM',
message: `${task.equipmentName}巡检超期,请尽快完成`
},
alarm: {
channels: ['巡检员手机', '班组长手机', '管理层手机'],
priority: 'HIGH',
message: `${task.equipmentName}巡检超期2小时,请立即处理`
},
critical: {
channels: ['巡检员手机', '班组长手机', '管理层手机', '值班领导'],
priority: 'CRITICAL',
message: `${task.equipmentName}(重点设备)巡检超期,请立即处理`
}
};
const config = alertConfig[severity];
await alertService.push({
channels: config.channels,
priority: config.priority,
message: config.message,
data: {
task,
equipment: task.equipment,
overdueDuration: task.overdueDuration
}
});
}3. 补检流程规则
规则一:创建补检任务
typescript
async function createMakeUpTask(overdue: OverdueEvent): Promise<MakeUpTask> {
const makeUpTask = {
id: generateId(),
originalTaskId: overdue.taskId,
equipmentId: overdue.equipmentId,
equipmentName: overdue.equipmentName,
assignedTo: overdue.task.assignedTo,
deadline: new Date(Date.now() + 4 * 60 * 60 * 1000), // 4小时后
status: 'PENDING',
mustRecordReason: true
};
await db.makeUpTasks.insert(makeUpTask);
// 推送补检通知
await notifyInspector({
inspector: makeUpTask.assignedTo,
message: `${makeUpTask.equipmentName}巡检超期,请在4小时内完成补检并说明原因`,
task: makeUpTask
});
return makeUpTask;
}规则二:补检流程
typescript
interface MakeUpProcess {
step1: {
action: '巡检员完成补检';
timeLimit: 240; // 4小时
recordRequired: ['巡检结果', '设备状态', '巡检照片'];
};
step2: {
action: '记录漏检原因';
mustRecord: ['原因类型', '详细说明', '责任人'];
reasonTypes: [
'紧急故障处理',
'人员调配',
'设备维修中',
'其他'
];
};
step3: {
action: '班组长审核';
mustApprove: true;
approveFields: ['补检结果', '漏检原因', '责任认定'];
};
}数据模型
设备信息
typescript
interface Equipment {
id: string;
name: string;
type: string;
location: string;
isCritical: boolean; // 是否重点设备
inspector: string; // 负责巡检的人员
inspectionFrequency: 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'QUARTERLY';
}巡检任务
typescript
interface InspectionTask {
id: string;
equipmentId: string;
equipmentName: string;
scheduledTime: Date;
status: 'PENDING' | 'COMPLETED' | 'OVERDUE';
assignedTo: string;
execution?: {
completedAt: Date;
completedBy: string;
result: 'NORMAL' | 'ABNORMAL';
notes: string;
photos: string[];
};
overdue?: {
detectedAt: Date;
overdueDuration: number;
alertLevel: 'warning' | 'alarm' | 'critical';
reason: string;
madeUpAt?: Date;
};
}超期事件记录
typescript
interface OverdueEvent {
id: string;
taskId: string;
equipmentId: string;
equipmentName: string;
scheduledTime: Date;
detectedAt: Date;
overdueDuration: number;
alertLevel: 'warning' | 'alarm' | 'critical';
disposal: {
notifiedTo: string[];
acknowledgedBy: string;
acknowledgedAt: Date;
madeUpAt?: Date;
reason: string;
resolvedAt: Date;
};
}关键处理流程
- 定时检测 → 每10分钟检查所有巡检任务
- 超期判定 → 当前时间 > 计划时间 + 容忍时间
- 分级报警 → 重点设备 vs 普通设备
- 创建补检任务 → 4小时内完成 + 记录原因
- 处置闭环 → 记录补检过程 + 审核 + 归档
开发注意事项
- 容忍时间可配置:不要硬编码30分钟,支持运营人员配置
- 重点设备标识:支持动态调整重点设备列表
- 推送确认:必须确认收到,否则持续推送
- 数据留痕:所有超期事件和补检过程必须记录
相似场景复用
这个规则可以复用到:
- 冷链物流:冷库巡检超期预警
- 物业管理:设施巡检超期预警
- 工厂生产:设备点检超期预警
- 医院管理:医疗设备巡检超期预警
### 4.2 技术迁移说明
**可复用的已有资产:**
1. **生鲜场景:冷库巡检规则**
- 复用:超期检测逻辑、报警推送
- 调整:容忍时间(2小时 → 30分钟/2小时)
- 复用度:90%
2. **医废场景:超期预警规则**
- 复用:时间窗口判断、分级报警
- 调整:阈值(46/47/48小时 → 30分钟/2小时)
- 复用度:90%
**需要新开发的部分:**
- 补检流程管理(10%)
- 原因记录和审核功能
### 4.3 实施指南
**步骤1:准备环境**
```bash
# 安装依赖
npm install
# 配置巡检计划
# 编辑 config/inspection-config.json步骤2:使用Cursor Skill
1. 将 inspection-overdue-alert.md 保存到 .cursor/rules/
2. 在Cursor中告诉AI:
"参考 inspection-overdue-alert.md 中的业务规则,
实现设备巡检超期预警功能"
3. AI会基于规则生成代码步骤3:调整配置
typescript
// config/overdue-rules.ts
export const OVERDUE_CONFIG = {
tolerance: {
critical: 0, // 重点设备:到期立即报警
normal: 30 // 普通设备:到期+30分钟预警
},
escalation: {
alarm: 120 // 到期+2小时报警
},
makeUp: {
deadline: 240 // 补检截止时间(4小时)
}
};步骤4:测试验证
bash
# 运行测试
npm test
# 模拟超期场景
npm run simulate:overdue五、下一步行动
如果您对这个场景感兴趣
- 快速验证:我们可以用1天时间,基于模拟数据做原型演示
- 技术对接:提供巡检系统接口文档,评估对接工作量
- 成本预估:根据设备数量、巡检频率,给出详细报价
相关场景
- 场景01:井下人员定位异常预警 - 人员定位类场景
- 场景02:瓦斯浓度异常预警 - 环境监测类场景

