Skip to content

场景01:车辆年检到期提醒

当前阶段: 🔍 探索中 | 行业: 交通运输 | 关键词: 车辆年检、营运车辆、年检提醒、车辆禁用 | 返回交通场景 →


一、需求探索

1.1 痛点时刻

具体场景:

周一早上8点,物流公司的一辆货车(车牌号:京A12345)在配送途中被交警拦下检查。交警发现该车年检已过期15天,当场扣车并罚款2000元。

车队长老张接到电话后才发现,这辆车的年检日期是上个月15号,但因为最近业务繁忙,完全忘记了这事。现在车被扣了,当天的配送任务无法完成,客户投诉,还要支付罚款和拖车费,总损失超过5000元。

业务背景:

  • 车队规模:中型物流公司,车辆50-200辆
  • 年检要求:营运车辆每年年检一次,非营运车辆每两年年检一次
  • 办理周期:营运车辆年检需要提前预约,办理周期7-15天
  • 管理难点:车辆多、年检日期不统一、车队长靠记忆或Excel表格管理,容易遗漏

1.2 核心痛点

问题1:年检日期难记忆

  • 50-200辆车,每辆车年检日期不同
  • 车队长靠Excel表格或纸质台账管理,容易遗漏
  • 没有自动提醒机制,发现过期时已经被罚款

问题2:营运车辆办理周期长

  • 营运车辆年检需要提前预约,办理周期7-15天
  • 如果临近到期才发现,来不及办理,车辆被迫停运
  • 影响配送任务,造成经济损失

问题3:过期车辆仍在使用

  • 年检过期后,系统没有自动禁用车辆
  • 调度员不知道车辆已过期,继续派单
  • 被交警查到,罚款2000元,扣车,影响业务

1.3 业务规则(行业标准)

《道路交通安全法》:

  • 机动车应当从注册登记之日起,按照规定期限进行安全技术检验(第13条)
  • 未按规定进行安全技术检验的,由公安机关交通管理部门处警告或者200元以下罚款(第90条)
  • 上道路行驶的机动车未放置检验合格标志的,扣留机动车,罚款200元,记1分(第95条)

《道路运输车辆技术管理规定》:

  • 道路运输车辆应当按照国家有关规定进行定期检验检测(第18条)
  • 道路运输经营者应当建立车辆技术档案(第19条)

实际业务规则(基于行业调研):

  • 预警规则
    • 营运车辆:到期前60天 → 预警(办理周期长)
    • 普通车辆:到期前30天 → 预警
  • 报警规则
    • 营运车辆:到期前15天 → 报警
    • 普通车辆:到期前7天 → 报警
  • 禁用规则
    • 年检过期 → 车辆自动禁用,停止派单
    • 必须完成年检后才能解除禁用

成本测算:

  • 过期成本:罚款2000元 + 扣车拖车费500元 + 配送延误损失2000-5000元 = 4500-7500元/次
  • 提醒成本:短信0.1元/条,人工核查10分钟/次,约20元/次
  • 平衡点:宁可多提醒,不可漏检

二、方案设计

2.1 业务规则设计

规则1:年检到期判定

typescript
// 年检到期判定
interface VehicleInspectionExpiry {
  // 车辆信息
  vehicleId: string;
  plateNumber: string;           // 车牌号
  vehicleType: 'COMMERCIAL' | 'NON_COMMERCIAL';  // 营运/非营运

  // 年检信息
  lastInspectionDate: Date;      // 上次年检日期
  nextInspectionDate: Date;      // 下次年检日期
  inspectionCycle: number;       // 年检周期(月):12或24

  // 时间信息
  currentDate: Date;             // 当前日期
  daysUntilExpiry: number;       // 距离到期天数

  // 判定结果
  status: 'NORMAL' | 'WARNING' | 'ALERT' | 'EXPIRED';
}

// 判定逻辑
function checkInspectionExpiry(
  vehicle: Vehicle,
  currentDate: Date
): VehicleInspectionExpiry {
  const daysUntilExpiry = Math.floor(
    (vehicle.nextInspectionDate.getTime() - currentDate.getTime()) / (1000 * 3600 * 24)
  );

  // 已过期
  if (daysUntilExpiry < 0) {
    return {
      ...vehicle,
      daysUntilExpiry,
      status: 'EXPIRED'
    };
  }

  // 营运车辆:60天预警,15天报警
  if (vehicle.vehicleType === 'COMMERCIAL') {
    if (daysUntilExpiry <= 15) {
      return { status: 'ALERT', daysUntilExpiry };
    } else if (daysUntilExpiry <= 60) {
      return { status: 'WARNING', daysUntilExpiry };
    }
  }

  // 普通车辆:30天预警,7天报警
  if (vehicle.vehicleType === 'NON_COMMERCIAL') {
    if (daysUntilExpiry <= 7) {
      return { status: 'ALERT', daysUntilExpiry };
    } else if (daysUntilExpiry <= 30) {
      return { status: 'WARNING', daysUntilExpiry };
    }
  }

  return { status: 'NORMAL', daysUntilExpiry };
}

规则2:分级提醒规则

typescript
// 分级提醒规则
interface AlertRule {
  // 预警级别(营运车辆60天,普通车辆30天)
  warning: {
    condition: '营运车辆到期前60天,普通车辆到期前30天';
    notifyTo: ['车队长', '车辆驾驶员'];
    channels: ['手机APP推送', '短信'];
    message: '【预警】车辆{plateNumber}年检将于{days}天后到期,请提前安排办理';
  };

  // 报警级别(营运车辆15天,普通车辆7天)
  alert: {
    condition: '营运车辆到期前15天,普通车辆到期前7天';
    notifyTo: ['车队长', '车辆驾驶员', '调度主管'];
    channels: ['手机APP推送', '短信', '语音电话'];
    message: '【报警】车辆{plateNumber}年检将于{days}天后到期,请立即办理';
  };

  // 过期禁用
  expired: {
    condition: '年检过期';
    notifyTo: ['车队长', '车辆驾驶员', '调度主管', '安全总监'];
    channels: ['手机APP推送', '短信', '语音电话'];
    message: '【紧急】车辆{plateNumber}年检已过期,已自动禁用,禁止派单';
    autoActions: [
      '车辆状态标记为"禁用"',
      '停止该车辆的所有派单',
      '通知调度员调整配送计划',
      '记录到车辆档案'
    ];
  };
}

规则3:车辆禁用规则

typescript
// 车辆禁用规则
interface VehicleDisableRule {
  // 步骤1:自动禁用(必须)
  step1_disable: {
    trigger: '年检过期当天';
    action: '车辆状态自动变更为"禁用"';
    effect: [
      '调度系统无法选择该车辆',
      '正在执行的任务不受影响',
      '新任务无法派给该车辆'
    ];
  };

  // 步骤2:通知相关人员(必须)
  step2_notify: {
    notifyTo: ['车队长', '调度员', '驾驶员'];
    message: '车辆{plateNumber}年检已过期,已自动禁用';
    channels: ['APP推送', '短信', '语音电话'];
  };

  // 步骤3:解除禁用(手动)
  step3_enable: {
    condition: '完成年检并上传年检合格证';
    action: '车队长审核通过后,手动解除禁用';
    mustRecord: [
      '年检日期',
      '下次年检日期',
      '年检合格证照片',
      '解除禁用时间',
      '操作人员'
    ];
  };
}

2.2 技术方案

技术架构

车辆档案库 → 定时扫描(每天) → 规则引擎 → 分级推送

          年检记录库(历史数据)

          可视化看板 + 移动端

核心技术点

1. 车辆档案管理

  • 车辆信息:车牌号、车辆类型(营运/非营运)、年检周期
  • 年检信息:上次年检日期、下次年检日期、年检合格证
  • 车辆状态:正常、预警、报警、禁用

2. 到期检测

  • 定时扫描:每天凌晨扫描所有车辆
  • 到期判定:当前日期 + 预警天数 > 年检日期 → 触发提醒
  • 特殊处理:营运车辆提前60天预警(办理周期长)

3. 规则引擎

  • 基于时间窗口的规则判断
  • 支持规则配置(预警/报警阈值可调整)
  • 支持特殊规则(营运车辆提前预警)

4. 分级推送

  • 多通道推送:APP、短信、语音电话
  • 分级推送:预警(车队长)、报警(调度主管)
  • 推送确认:必须确认收到,否则升级

5. 车辆禁用

  • 自动禁用:年检过期 → 车辆状态变更为"禁用"
  • 派单拦截:调度系统无法选择禁用车辆
  • 手动解除:完成年检后,车队长审核解除禁用

数据模型

typescript
// 车辆档案
interface Vehicle {
  id: string;
  plateNumber: string;         // 车牌号
  vehicleType: 'COMMERCIAL' | 'NON_COMMERCIAL';  // 营运/非营运

  // 年检信息
  lastInspectionDate: Date;    // 上次年检日期
  nextInspectionDate: Date;    // 下次年检日期
  inspectionCycle: number;     // 年检周期(月):12或24
  inspectionCertificate: string;  // 年检合格证照片

  // 车辆状态
  status: 'ACTIVE' | 'WARNING' | 'ALERT' | 'DISABLED';

  // 责任人
  driver: string;              // 驾驶员ID
  driverName: string;          // 驾驶员姓名
  fleetManager: string;        // 车队长ID
}

// 年检记录
interface InspectionRecord {
  id: string;
  vehicleId: string;
  inspectionDate: Date;        // 年检日期
  nextInspectionDate: Date;    // 下次年检日期
  inspectionResult: 'PASS' | 'FAIL';  // 年检结果
  certificate: string;         // 年检合格证照片
  remarks: string;             // 备注
  operator: string;            // 操作人
}

// 提醒记录
interface AlertRecord {
  id: string;
  vehicleId: string;
  alertType: 'WARNING' | 'ALERT' | 'EXPIRED';
  alertTime: Date;
  daysUntilExpiry: number;     // 距离到期天数
  notifiedTo: string[];        // 通知对象
  confirmed: boolean;          // 是否确认
  confirmedAt: Date;           // 确认时间
}

三、AI辅助开发方案

3.1 技术迁移分析

复用已有资产:通用场景的"资质到期提醒"规则

相似点:

  • 都是基于时间的到期检测
  • 都需要分级提醒(预警 → 报警)
  • 都需要过期后自动禁用

差异点:

维度资质到期提醒车辆年检提醒
检查对象人员资质证书车辆年检合格证
提醒周期统一30天预警营运车辆60天,普通车辆30天
过期处理人员禁止上岗车辆禁用,停止派单
解除条件上传新证书完成年检并上传合格证

技术复用度:95%

  • 规则引擎逻辑:100%复用
  • 分级推送逻辑:100%复用
  • 到期检测逻辑:95%复用(需增加营运车辆特殊规则)
  • 禁用解除逻辑:90%复用(调整禁用对象:人员 → 车辆)

3.2 Cursor Skill设计

Skill名称: qualification-expiry-alert.md

Skill内容: 复用已有的资质到期提醒规则,调整为车辆年检场景

3.3 PROMPT模板

PROMPT 1:生成年检到期检测代码

你是一个业务逻辑开发专家。请根据以下业务规则,生成车辆年检到期检测的代码。

## 业务场景
物流公司的车辆需要定期年检,营运车辆每年一次,非营运车辆每两年一次。年检过期需要自动提醒并禁用车辆。

## 业务规则
1. 到期判定:当前日期 + 预警天数 > 年检日期 → 触发提醒
2. 分级提醒:
   - 营运车辆:到期前60天预警,15天报警
   - 普通车辆:到期前30天预警,7天报警
3. 过期禁用:年检过期 → 车辆自动禁用,停止派单
4. 解除禁用:完成年检并上传合格证 → 车队长审核解除

## 数据模型
- Vehicle:车辆档案(plateNumber, vehicleType, nextInspectionDate)
- InspectionRecord:年检记录(inspectionDate, nextInspectionDate, certificate)
- AlertRecord:提醒记录(alertType, alertTime, daysUntilExpiry)

## 技术要求
- 使用TypeScript
- 定时扫描(每天凌晨检查一次)
- 支持规则配置(预警/报警阈值可调整)
- 记录所有提醒和年检过程

请生成完整的代码实现。

PROMPT 2:生成车辆禁用逻辑

你是一个业务逻辑开发专家。请根据以下业务规则,生成车辆年检过期自动禁用的代码。

## 业务场景
车辆年检过期后,需要自动禁用车辆,停止派单,防止违规上路。

## 业务规则
1. 自动禁用:年检过期当天 → 车辆状态变更为"禁用"
2. 派单拦截:调度系统无法选择禁用车辆
3. 通知相关人员:车队长、调度员、驾驶员
4. 解除禁用:完成年检并上传合格证 → 车队长审核解除

## 技术要求
- 自动禁用:定时任务检测过期车辆,自动变更状态
- 派单拦截:调度系统查询可用车辆时,过滤禁用车辆
- 通知推送:多通道推送(APP、短信、语音)
- 审核流程:车队长审核年检合格证,手动解除禁用

请生成完整的代码实现。

3.4 开发周期预估

基于已有资产(资质到期提醒):

  • 原型验证:1天

    • Day 1:复用规则引擎,调整判定条件,测试提醒场景
  • 首版上线:3-5天

    • Day 2:实现车辆禁用逻辑(自动禁用 + 派单拦截)
    • Day 3:实现解除禁用流程(审核 + 解除)
    • Day 4:对接推送系统、测试
    • Day 5:部署上线
  • 迭代优化:根据实际使用反馈调整阈值、优化推送策略


四、开发资产

4.1 Cursor Skill

文件名: qualification-expiry-alert.md(复用已有资产)

调整内容:

  • 检查对象:人员资质 → 车辆年检
  • 提醒周期:统一30天 → 营运车辆60天,普通车辆30天
  • 禁用对象:人员 → 车辆
  • 解除条件:上传新证书 → 完成年检并上传合格证

4.2 技术迁移说明

可复用的已有资产:

  1. 建筑场景:资质到期提醒规则

    • 复用:规则引擎框架、分级推送逻辑、到期检测逻辑
    • 调整:检查对象(人员 → 车辆)、提醒周期(增加营运车辆特殊规则)
    • 复用度:95%
  2. 医废场景:超期预警规则

    • 复用:时间窗口判断、升级机制
    • 调整:阈值(46/47/48小时 → 30/60天)
    • 复用度:85%

需要新开发的部分:

  • 营运车辆特殊规则(提前60天预警)(3%)
  • 车辆禁用 + 派单拦截逻辑(2%)

4.3 实施指南

步骤1:准备环境

bash
# 安装依赖
npm install

# 配置车辆档案
# 编辑 config/vehicles.json

步骤2:使用Cursor Skill

1. 将 qualification-expiry-alert.md 保存到 .cursor/rules/
2. 在Cursor中告诉AI:
   "参考 qualification-expiry-alert.md 中的业务规则,
   实现车辆年检到期提醒功能,
   注意营运车辆需要提前60天预警"
3. AI会基于规则生成代码

步骤3:调整配置

typescript
// config/alert-rules.ts
export const ALERT_CONFIG = {
  commercial: {
    warningDays: 60,           // 营运车辆预警天数
    alertDays: 15,             // 营运车辆报警天数
  },
  nonCommercial: {
    warningDays: 30,           // 普通车辆预警天数
    alertDays: 7,              // 普通车辆报警天数
  },
  autoDisable: true,           // 过期自动禁用
  confirmTimeout: 30,          // 确认超时(分钟)
};

步骤4:测试验证

bash
# 运行测试
npm test

# 模拟过期场景
npm run simulate:expiry

五、下一步行动

如果您对这个场景感兴趣

  1. 快速验证:我们可以用1天时间,基于模拟数据做原型演示
  2. 技术对接:提供车辆档案配置模板,评估对接工作量
  3. 成本预估:根据车队规模、车辆数量,给出详细报价

相关场景

相关资产


← 返回交通场景 | 联系合作 →

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