资质到期提醒规则
适用于施工安全、设备合规、人员持证上岗等资质有效期管理场景。
规则文件内容
请复制以下内容,保存为 .cursor/rules/qualification-expiry-alert.mdc:
markdown
---
description: 资质到期提醒、状态管控与到期禁用业务规则
globs: src/modules/certificates/**, src/modules/compliance/**, src/modules/alerts/**
---
# 资质到期提醒业务规则
## 1. 核心原则
- **提前预警**:到期前分层提醒,避免临期失控。
- **到期即管控**:到期后自动禁止相关作业或使用。
- **提醒可追踪**:每次提醒必须留痕,避免重复轰炸。
## 2. 资质分类规则
- 人员资质:特种作业证、安全员证等。
- 设备资质:检测报告、使用登记证等。
- 企业资质:施工资质、安全生产许可证等。
## 3. 到期提醒规则
### 3.1 提醒节点
- 提前 `30` 天:第一次提醒
- 提前 `15` 天:第二次提醒
- 提前 `7` 天:第三次提醒
- 到期当天:最终提醒
### 3.2 告警等级
- `days_left <= 7`:`critical`
- `7 < days_left <= 15`:`warning`
- `15 < days_left <= 30`:`notice`
## 4. 到期处理规则
- `days_left < 0`:状态置为 `expired`
- 到期资质对应的人员/设备自动置为不可用(按策略开关控制)
- 已过期资质不允许被派单、审批通过、或用于合规校验
```ts
type ReminderLevel = 'notice' | 'warning' | 'critical';
function getReminderLevel(daysLeft: number): ReminderLevel | null {
if (daysLeft < 0) return null;
if (daysLeft <= 7) return 'critical';
if (daysLeft <= 15) return 'warning';
if (daysLeft <= 30) return 'notice';
return null;
}5. 去重与频控规则
- 同一证书同一提醒节点只发送一次。
- 同一负责人每天同类型提醒最多 3 条(可配置)。
- 短信/邮件失败必须重试并记录失败原因。
6. 数据模型约束
certificates必须包含:owner_type,owner_id,certificate_type,expiry_date,statuscertificate_reminders必须包含:certificate_id,reminder_level,sent_at,channel,resultcompliance_blocks必须包含:owner_id,block_reason,blocked_at,released_at
7. 实施注意事项
- 统一时区做日期比较,建议以本地业务时区的 00:00 为边界。
- 定时任务建议每天 08:00 与 16:00 各运行一次。
- 证书延期时需自动重置提醒状态,避免历史节点干扰。
## 适用场景
- 建筑施工资质管理
- 设备合规证照管理
- 人员持证上岗校验
