场景02:资质到期提醒
当前阶段: 🔍 探索中 | 行业: 建筑施工 | 关键词: 资质管理、特种作业、到期提醒 | 返回建筑场景 →
一、需求探索
1.1 痛点时刻
具体场景:
某工地塔吊司机张三的特种作业操作证于2024年3月15日到期,但项目部没有及时发现。3月20日,安全监督部门检查时发现张三无证上岗,对项目部罚款5万元,并责令停工整改。此时:
- 项目部需要紧急找替代人员,但合格的塔吊司机很难找
- 停工整改影响施工进度,造成经济损失10-50万元
- 项目经理和安全员面临行政处罚,甚至刑事责任
业务背景:
- 人员规模:一个大型工地有数十名特种作业人员(塔吊司机、电工、焊工、架子工等)
- 资质类型:特种作业操作证、安全生产考核证、职业资格证书等
- 有效期:一般为6年,每3年复审一次
- 管理难点:人员流动性大、证书种类多、到期时间不一致、纸质证书容易遗漏
1.2 核心痛点
问题1:发现滞后
- 证书到期后,可能数天甚至数周才发现
- 没有自动提醒机制,依赖人工查台账
- 安全员每月检查一次,发现时已经到期
问题2:责任重大
- 无证上岗属于严重违法行为,罚款5-10万元
- 如果发生事故,项目经理和安全员要承担刑事责任
- 影响企业信誉,可能被列入黑名单
问题3:管理困难
- 人员流动性大,新入场人员证书容易漏查
- 证书种类多,不同证书有效期不同
- 纸质证书容易丢失、伪造
1.3 业务规则(行业标准)
《安全生产法》相关要求:
- 特种作业人员必须持证上岗(第30条)
- 特种作业操作证有效期为6年,每3年复审一次(第31条)
- 无证上岗的,责令限期改正,处5万元以上10万元以下罚款(第94条)
实际业务规则(基于行业调研):
- 到期提醒规则:
- 到期前30天:黄色预警,提醒本人和项目部
- 到期前7天:橙色预警,提醒项目经理和公司人力资源部
- 到期当天:红色报警,禁止上岗,通知所有相关人员
- 复审提醒规则:
- 复审期前60天:提醒本人办理复审
- 复审期前30天:提醒项目部协助办理
- 复审期前7天:报警,准备替代人员
- 入场检查规则:
- 新入场人员必须检查证书有效期
- 证书有效期 < 30天:不允许入场
成本测算:
- 无证上岗成本:罚款5-10万元,停工整改损失10-50万元,合计15-60万元/次
- 提前换人成本:招聘、培训新人,成本约5000-10000元/人
- 平衡点:宁可提前换人,不可无证上岗
二、方案设计
2.1 业务规则设计
规则1:证书到期判定规则
typescript
// 证书到期判定
interface CertificateExpiry {
// 判定条件
workerId: string; // 人员ID
workerName: string; // 姓名
certificateType: string; // 证书类型(特种作业操作证、安全生产考核证等)
certificateNo: string; // 证书编号
issueDate: Date; // 发证日期
expiryDate: Date; // 到期日期
reviewDate: Date; // 复审日期
currentDate: Date; // 当前日期
// 判定结果
status: 'normal' | 'warning' | 'alarm' | 'expired';
daysUntilExpiry: number; // 距离到期天数
level: 'low' | 'medium' | 'high' | 'critical'; // 风险等级
}
// 判定逻辑
function checkCertificateExpiry(
worker: Worker,
certificate: Certificate,
currentDate: Date
): CertificateExpiry {
const daysUntilExpiry = (certificate.expiryDate.getTime() - currentDate.getTime()) / (1000 * 60 * 60 * 24);
const daysUntilReview = (certificate.reviewDate.getTime() - currentDate.getTime()) / (1000 * 60 * 60 * 24);
// 判定1:已到期
if (daysUntilExpiry <= 0) {
return {
workerId: worker.id,
workerName: worker.name,
certificateType: certificate.type,
status: 'expired',
daysUntilExpiry,
level: 'critical',
reason: '证书已到期,禁止上岗'
};
}
// 判定2:到期前7天
if (daysUntilExpiry <= 7) {
return {
status: 'alarm',
daysUntilExpiry,
level: 'high',
reason: '证书即将到期,准备替代人员'
};
}
// 判定3:到期前30天
if (daysUntilExpiry <= 30) {
return {
status: 'warning',
daysUntilExpiry,
level: 'medium',
reason: '证书即将到期,请尽快办理换证'
};
}
// 判定4:复审期前30天
if (daysUntilReview <= 30 && daysUntilReview > 0) {
return {
status: 'warning',
daysUntilExpiry,
level: 'low',
reason: '证书即将到复审期,请办理复审'
};
}
return { status: 'normal' };
}规则2:自动提醒规则
typescript
// 自动提醒动作
interface AutoReminder {
// 到期前30天:黄色预警
warning_before30days: {
alert: {
channels: ['本人手机', '项目部安全员手机'];
message: '证书到期提醒:您的特种作业操作证将于30天后到期,请尽快办理换证';
};
displayInfo: {
workerInfo: '姓名、工种、证书编号';
certificateInfo: '发证日期、到期日期、发证机关';
renewalProcess: '换证流程、所需材料、办理地点';
contactInfo: '公司人力资源部联系方式';
};
};
// 到期前7天:橙色预警
warning_before7days: {
alert: {
channels: ['本人手机', '项目经理手机', '公司人力资源部手机'];
message: '证书到期预警:张三的特种作业操作证将于7天后到期,请准备替代人员';
};
autoActions: [
'通知项目经理协调资源',
'查找替代人员',
'准备换证材料'
];
};
// 到期当天:红色报警
alarm_expiry_day: {
alert: {
channels: ['本人手机', '项目经理手机', '公司人力资源部手机', '公司安全部手机'];
message: '证书到期报警:张三的特种作业操作证已到期,禁止上岗';
};
autoActions: [
'系统自动禁止该人员上岗(如有门禁系统集成)',
'上报公司安全部',
'记录到期事件',
'启动应急预案(安排替代人员)'
];
};
// 复审期前30天:黄色预警
warning_review_before30days: {
alert: {
channels: ['本人手机', '项目部安全员手机'];
message: '证书复审提醒:您的特种作业操作证将于30天后到复审期,请办理复审';
};
};
}规则3:入场检查规则
typescript
// 入场检查规则
interface EntryCheckRule {
// 检查项
checkItems: {
certificateValidity: {
rule: '证书必须在有效期内';
minValidDays: 30; // 证书有效期必须 > 30天
action: '有效期 < 30天,不允许入场';
};
certificateAuthenticity: {
rule: '证书必须真实有效';
checkMethod: '扫描二维码或查询官网';
action: '证书无法验证,不允许入场';
};
certificateType: {
rule: '证书类型必须与工种匹配';
action: '证书类型不匹配,不允许入场';
};
};
// 自动动作
autoActions: {
pass: [
'记录入场信息',
'自动生成到期提醒计划',
'发放门禁卡'
];
reject: [
'拒绝入场',
'通知项目经理',
'记录拒绝原因'
];
};
}规则4:处置闭环规则
typescript
// 处置流程
interface DisposalProcess {
// 步骤1:本人确认(必须)
step1_confirm: {
action: '确认收到提醒 + 确认换证时间';
timeLimit: 7; // 7天内确认
recordRequired: true; // 必须记录确认结果
};
// 步骤2:办理换证(必须)
step2_renew: {
action: '按计划办理换证';
timeLimit: 30; // 30天内完成
requiredDocuments: [
'身份证',
'原证书',
'体检证明',
'培训证明(如需复审)'
];
reportRequired: true; // 必须上传新证书
};
// 步骤3:证书验证(必须)
step3_verify: {
action: '验证新证书真实性';
checkMethod: '扫描二维码或查询官网';
recordRequired: true; // 必须记录验证结果
};
// 步骤4:结果记录(必须)
step4_record: {
mustRecord: [
'换证日期',
'新证书编号、到期日期',
'证书照片',
'验证结果'
];
autoArchive: true; // 自动归档到人员档案
};
}2.2 技术方案
技术架构
证书信息 → 到期检测 → 规则引擎 → 提醒推送
↓
数据存储(证书、提醒、事件)
↓
可视化大屏 + 移动端核心技术点
1. 证书信息管理
- 证书录入:支持手动录入、OCR识别、扫码录入
- 证书验证:对接官方数据库,验证证书真实性
- 证书查询:按人员、按证书类型、按到期时间查询
2. 到期检测
- 实时监测:每天凌晨检查一次所有人员的证书
- 到期判定:基于到期日期计算剩余天数
- 分级提醒:到期前30天、到期前7天、到期当天分级提醒
3. 规则引擎
- 基于到期时间的分级规则(30天/7天/0天)
- 支持规则配置(提醒时间可调整)
- 支持规则测试(模拟到期场景)
4. 提醒推送
- 多通道推送:手机APP、短信、微信
- 推送确认:必须确认收到,否则持续推送
- 推送记录:记录所有推送历史,便于追溯
数据模型
typescript
// 人员信息
interface Worker {
id: string;
name: string; // 姓名
idCard: string; // 身份证号
phone: string; // 手机号
workType: string; // 工种(塔吊司机、电工、焊工等)
projectId: string; // 所属项目
entryDate: Date; // 入场日期
status: 'active' | 'inactive'; // 在岗状态
}
// 证书信息
interface Certificate {
id: string;
workerId: string;
workerName: string;
certificateType: string; // 证书类型
certificateNo: string; // 证书编号
issueDate: Date; // 发证日期
expiryDate: Date; // 到期日期
reviewDate: Date; // 复审日期
issuingAuthority: string; // 发证机关
photo: string; // 证书照片
status: 'valid' | 'expired' | 'revoked';
}
// 提醒记录
interface ReminderRecord {
id: string;
workerId: string;
workerName: string;
certificateId: string;
certificateType: string;
reminderType: 'warning' | 'alarm' | 'expired';
reminderDate: Date;
daysUntilExpiry: number;
status: 'pending' | 'confirmed' | 'resolved';
confirmedBy: string;
confirmedAt: Date;
}
// 到期事件
interface ExpiryEvent {
id: string;
workerId: string;
workerName: string;
certificateId: string;
certificateType: string;
expiryDate: Date;
detectedAt: Date;
status: 'PENDING' | 'CONFIRMED' | 'RESOLVED';
// 处置记录
disposal: {
confirmedBy: string; // 确认人
confirmedAt: Date;
renewedBy: string; // 换证人
renewedAt: Date;
newCertificateId: string; // 新证书ID
resolvedAt: Date;
};
}三、AI辅助开发方案
3.1 技术迁移分析
复用已有资产:已有的"资质到期提醒"规则
相似点:
- 都是基于到期时间的监测
- 都需要提前提醒 + 到期报警
- 都需要分级响应(预警/报警)
差异点:
| 维度 | 通用场景(资质到期) | 建筑场景(特种作业证) |
|---|---|---|
| 监测对象 | 各类资质证书 | 特种作业操作证 |
| 提醒时间 | 到期前30天/7天/0天 | 到期前30天/7天/0天 |
| 响应动作 | 提醒换证 | 提醒换证 + 禁止上岗 |
| 入场检查 | 无 | 有(证书有效期 > 30天) |
技术复用度:95%
- 规则引擎逻辑:100%复用
- 提醒推送逻辑:100%复用
- 到期判定逻辑:100%复用
- 需要增加:入场检查规则(5%新开发)
3.2 Cursor Skill设计
Skill名称: qualification-expiry-alert.md
复用说明:
- 该Skill已在通用场景中验证,可直接复用
- 需要调整的参数:监测对象(资质证书 → 特种作业操作证)
- 需要增加的逻辑:入场检查规则(证书有效期 > 30天)
3.3 PROMPT模板
PROMPT 1:生成证书到期检测代码
你是一个业务逻辑开发专家。请根据以下业务规则,生成特种作业操作证到期检测的代码。
## 业务场景
建筑工地特种作业人员必须持证上岗,证书到期前30天提醒,到期前7天报警,到期当天禁止上岗。
## 业务规则
1. 到期判定:
- 基于到期日期计算剩余天数
- 到期前30天:黄色预警
- 到期前7天:橙色预警
- 到期当天:红色报警,禁止上岗
2. 复审提醒:
- 复审期前60天:提醒本人办理复审
- 复审期前30天:提醒项目部协助办理
- 复审期前7天:报警,准备替代人员
3. 入场检查:
- 新入场人员必须检查证书有效期
- 证书有效期 < 30天:不允许入场
4. 自动提醒:
- 推送到本人、项目经理、公司人力资源部、公司安全部
- 显示证书信息、换证流程、联系方式
## 数据模型
- Worker:人员信息(workerId, name, workType)
- Certificate:证书信息(certificateId, expiryDate, reviewDate)
- ExpiryEvent:到期事件(workerId, daysUntilExpiry, disposal)
## 技术要求
- 使用TypeScript
- 每天凌晨检查一次
- 支持规则配置(提醒时间可调整)
- 记录所有到期事件和处置过程
请参考 qualification-expiry-alert.md 中的规则,生成完整的代码实现。PROMPT 2:生成分级提醒推送逻辑
你是一个业务逻辑开发专家。请根据以下业务规则,生成分级提醒推送的代码。
## 业务场景
特种作业操作证到期需要分级提醒,到期前不同时间点,推送对象和内容不同。
## 业务规则
1. 到期前30天(黄色预警):
- 推送到:本人、项目部安全员
- 推送内容:证书信息、换证流程、所需材料、办理地点
2. 到期前7天(橙色预警):
- 推送到:本人、项目经理、公司人力资源部
- 推送内容:到期提醒、准备替代人员
3. 到期当天(红色报警):
- 推送到:本人、项目经理、公司人力资源部、公司安全部
- 推送内容:证书已到期、禁止上岗、启动应急预案
- 自动动作:系统自动禁止该人员上岗(如有门禁系统集成)
4. 复审期前30天(黄色预警):
- 推送到:本人、项目部安全员
- 推送内容:复审提醒、复审流程
## 技术要求
- 支持多通道推送(APP、短信、微信)
- 推送确认机制(必须确认收到)
- 推送失败重试(最多3次)
请生成完整的代码实现。3.4 开发周期预估
基于已有资产(通用场景):
原型验证:0.5天
- 复用规则引擎,调整监测对象和提醒内容
首版上线:1-2天
- Day 1:增加入场检查规则、完善处置流程
- Day 2:对接人员管理系统、测试、部署上线
迭代优化:根据实际使用反馈调整提醒时间、优化推送策略
四、开发资产
4.1 Cursor Skill
文件名: qualification-expiry-alert.md
复用说明: 该Skill已在通用场景中验证,可直接复用到建筑场景(特种作业操作证)。
需要调整的参数:
typescript
// 通用场景(资质到期)
const EXPIRY_CONFIG = {
warningDays: 30, // 到期前30天预警
alarmDays: 7 // 到期前7天报警
};
// 建筑场景(特种作业证)
const EXPIRY_CONFIG = {
warningDays: 30, // 到期前30天预警
alarmDays: 7, // 到期前7天报警
expiryDay: 0, // 到期当天禁止上岗
minValidDays: 30, // 入场最低有效期(天)
reviewWarningDays: 60 // 复审期前60天提醒
};需要增加的逻辑:
typescript
// 入场检查规则
function checkEntryEligibility(certificate: Certificate): boolean {
const daysUntilExpiry = (certificate.expiryDate.getTime() - new Date().getTime()) / (1000 * 60 * 60 * 24);
return daysUntilExpiry > 30; // 证书有效期必须 > 30天
}4.2 技术迁移说明
可复用的已有资产:
通用场景:资质到期提醒规则
- 复用:规则引擎框架、提醒推送逻辑、到期判定逻辑
- 调整:监测对象(资质证书 → 特种作业操作证)
- 复用度:95%
矿山场景:设备巡检到期预警规则
- 复用:分级响应机制、升级机制
- 调整:判断逻辑(巡检到期 → 证书到期)
- 复用度:70%
需要新开发的部分:
- 入场检查规则(证书有效期 > 30天)(5%)
- 证书真伪验证(可选,对接官方数据库)
4.3 实施指南
步骤1:准备环境
bash
# 安装依赖
npm install
# 配置人员管理系统接口
# 编辑 config/worker-management-config.json步骤2:使用Cursor Skill
1. 将 qualification-expiry-alert.md 保存到 .cursor/rules/
2. 在Cursor中告诉AI:
"参考 qualification-expiry-alert.md 中的业务规则,
实现特种作业操作证到期检测功能。
需要支持入场检查:证书有效期必须 > 30天"
3. AI会基于规则生成代码步骤3:调整配置
typescript
// config/expiry-rules.ts
export const CERTIFICATE_EXPIRY_CONFIG = {
warningDays: 30, // 到期前30天预警
alarmDays: 7, // 到期前7天报警
expiryDay: 0, // 到期当天禁止上岗
minValidDays: 30, // 入场最低有效期(天)
reviewWarningDays: 60, // 复审期前60天提醒
checkTime: '00:00', // 每天凌晨检查
};步骤4:测试验证
bash
# 运行测试
npm test
# 模拟到期场景
npm run simulate:expiry
npm run simulate:entry-check五、下一步行动
如果您对这个场景感兴趣
- 快速验证:我们可以用0.5天时间,基于模拟数据做原型演示
- 技术对接:提供人员管理系统接口文档,评估对接工作量
- 成本预估:根据人员数量、证书数量,给出详细报价
相关场景
- 场景01:施工安全检查漏检 - 计划任务类场景
- 矿山场景:设备巡检漏检预警 - 相似场景参考
- 电力场景:输电线路巡检漏检 - 相似场景参考

