Skip to content

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

可复用的已有资产:

  1. 通用场景:资质到期提醒规则

    • 复用:规则引擎框架、提醒推送逻辑、到期判定逻辑
    • 调整:监测对象(资质证书 → 特种作业操作证)
    • 复用度:95%
  2. 矿山场景:设备巡检到期预警规则

    • 复用:分级响应机制、升级机制
    • 调整:判断逻辑(巡检到期 → 证书到期)
    • 复用度: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

五、下一步行动

如果您对这个场景感兴趣

  1. 快速验证:我们可以用0.5天时间,基于模拟数据做原型演示
  2. 技术对接:提供人员管理系统接口文档,评估对接工作量
  3. 成本预估:根据人员数量、证书数量,给出详细报价

相关场景

相关资产


← 返回建筑场景 | 联系合作 →

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