# 车辆审核管理需求文档 (Vehicle Audit Management) v1.3.0

## 修订历史

| 版本号 | 修订日期 | 修订内容 | 修订人 | 状态 |
| :--- | :--- | :--- | :--- | :--- |
| v1.0.0 | 2026-01-28 | 初始版本：定义车辆审核核心功能与业务流程 | Antigravity | 已发布 |
| v1.1.0 | 2026-01-28 | 功能优化：增加长租车辆生效/失效时间管理；同审核单支持查看历史审核记录；列表区分待审核和历史审核Tab | Antigravity | 已发布 |
| v1.2.0 | 2026-01-28 | 功能完善：增加批量审核、超时提醒、换车生效时间、边缘网关失败处理、临时车有效期、费用冲突检查与账单作废功能 | Antigravity | 已发布 |
| v1.3.0 | 2026-01-28 | 功能细化：换车申请费用冲突检查与车位自动继承、换车有效期交接、临时车2年有效期、临时车转租赁车费用校验、临时车与临停车区分 | Antigravity | 已发布 |
| v1.4.0 | 2026-01-29 | 功能优化：明确换车申请新车辆收费逻辑、实施财务覆盖原则（审核通过立即授权）、批量审核失败详细展示及补充功能 | Antigravity | 已发布 |
| v1.5.0 | 2026-01-29 | 功能细化：明确授权有效期管理逻辑（审核设置生效时间，收费模块管理有效期）、细化换车申请车位继承规则（支持继承所有车位、增删改操作、一位多车） | Antigravity | 已发布 |
| v1.6.0 | 2026-01-29 | 功能优化：调整车辆有效期管理逻辑（审核时设置有效期结束时间，租赁车缴费后更新有效期）、明确换车申请1换1车位继承原则（只允许替换车位，不允许增减） | Antigravity | 草稿 |

---

## 1. 模块概述

本模块负责处理小区住户通过小程序端提交的车辆相关申请审核流程。核心目标是确保车辆信息准确性、规范车辆管理流程，并在审核通过后自动同步车辆数据至车辆管理模块及边缘网关。

**核心原则**：
- PC端由物业员工直接操作的车辆信息修改、新增车辆、修改车辆收费等操作**不需要审核**，直接生效并下发。
- 仅对住户通过小程序端提交的申请进行审核。

---

## 2. 核心功能需求

### 2.1 审核业务场景

本模块需支持以下5种审核场景（来源于小程序端住户申请）：

#### 2.1.1 长租车辆审核
- **申请来源**：住户通过小程序"长租车辆申请"提交。
- **申请内容包含**：
  - 车辆基础信息：车牌号、车辆类型（能源类型、车型大小）、品牌型号、颜色
  - 租赁信息：停车场、收费类型（收费标准）、生效时间
  - 权属信息：房屋信息、住户信息（系统自动带入）
  - 附件材料：居住证明、身份证
  - 申请理由

#### 2.1.2 临时车辆审核
- **申请来源**：住户通过小程序"临时车辆申请"提交。
- **申请内容包含**：
  - 车辆基础信息：车牌号、车辆类型、品牌型号、颜色
  - 权属信息：房屋信息、住户信息（系统自动带入）
  - 附件材料：居住证明、身份证
  - 申请理由
- **注意**：临时车辆申请**不包含**停车场和收费类型字段。
- **临时车与临停车的区别**：
  - **临时车**：住户申请并记录在系统内的车辆，按临时收费标准收费，有车辆档案
  - **临停车**：未记录在系统中的外部车辆（如访客），按临停收费规则收费，无车辆档案

#### 2.1.3 车辆信息变更审核
- **申请来源**：住户对已审核通过的车辆信息进行修改后提交。
- **申请内容包含**：
  - 原车辆信息（只读展示）
  - 变更后的车辆信息（可能包括：车辆颜色、品牌型号、证件有效期等）
  - 附件材料（如有更新）
  - 变更理由

#### 2.1.4 变更车辆审核（换车申请）
- **申请来源**：住户因更换新车等原因，申请将原有的租赁权益/车辆关联转移至新车辆。
- **申请内容包含**：
  - 原车辆信息（只读展示）
  - 新车辆信息：车牌号、车辆类型、品牌型号、颜色
  - 更换生效时间：指定新车辆生效、原车辆失效的时间点
  - 附件材料：新车行驶证等证明文件
  - 换车理由
- **小程序提示**：在住户提交换车申请时，系统显示提示："更换生效时间前，原车辆必须离场；若车辆仍在场，离场时会按临时费用收费"

#### 2.1.5 临时车转租赁车审核
- **申请来源**：已审核通过的临时车住户，申请将车辆转为租赁车（长租车）。
- **说明**：临时车转租赁车走的是**长租车申请流程**，系统会自动识别该车辆已存在临时车档案
- **申请内容包含**：
  - 车辆基础信息：车牌号、车辆类型、品牌型号、颜色（自动带入临时车信息）
  - 租赁信息：停车场、收费类型（收费标准）、生效时间
  - 权属信息：房屋信息、住户信息（系统自动带入）
  - 附件材料（如有更新）
  - 申请理由
- **业务说明**：审核通过后，车辆类型从"临时车"变更为"长租车"，开始按租赁收费标准计费

---

### 2.2 审核列表功能

#### 2.2.1 列表页签区分

审核列表分为两个独立的Tab页签，便于物业人员快速定位需要操作的数据：

**Tab 1: 待审核**
- 仅展示审核状态为"待审核"的记录
- 支持按申请类型、申请时间范围筛选
- 支持按车牌号、申请人姓名、房屋编号搜索
- 支持批量选择和批量操作
- 操作列显示：[审核] 按钮
- 列表顶部显示：[批量通过] [批量驳回] 按钮（需先选中记录）

**Tab 2: 历史审核**
- 展示审核状态为"已通过"或"已驳回"的记录
- 支持按审核状态（已通过/已驳回）、申请类型、申请时间范围筛选
- 支持按车牌号、申请人姓名、房屋编号搜索
- 操作列显示：[查看] 按钮

#### 2.2.2 列表展示字段
- **复选框**：支持批量选择（仅待审核Tab显示）
- **申请编号**：系统自动生成的唯一审核单号
- **申请类型**：长租车辆、临时车辆、信息变更、换车申请、临时车转租赁车
- **车牌号**：申请的车牌号（换车申请显示"原车牌→新车牌"）
- **申请人**：住户姓名
- **关联房屋**：房屋编号（如：1栋1单元101）
- **申请时间**：提交审核的时间
- **等待时长**：距离申请提交已过去的时间（如：2小时、1天3小时），超过设定阈值时标红提醒
- **审核状态**：待审核、已通过、已驳回
- **操作**：查看详情、审核

#### 2.2.3 筛选与查询

**待审核Tab的筛选**：
- **按申请类型筛选**：长租车辆、临时车辆、信息变更、换车申请
- **按申请时间范围筛选**：起始日期 ~ 结束日期
- **搜索功能**：支持按车牌号、申请人姓名、房屋编号搜索

**历史审核Tab的筛选**：
- **按审核状态筛选**：已通过、已驳回
- **按申请类型筛选**：长租车辆、临时车辆、信息变更、换车申请
- **按申请时间范围筛选**：起始日期 ~ 结束日期
- **搜索功能**：支持按车牌号、申请人姓名、房屋编号搜索

#### 2.2.4 批量操作功能

**批量通过**：
- 功能入口：待审核Tab列表顶部的"批量通过"按钮
- 前置条件：已选中至少1条待审核记录
- 操作流程：
  1. 勾选需要批量通过的审核记录（支持全选/反选）
  2. 点击"批量通过"按钮
  3. 弹出批量审核确认对话框，展示已选中的记录数量
  4. 确认后，系统对每条记录执行审核通过操作
  5. 批量操作完成后，展示操作结果汇总（成功X条、失败X条）
- 操作结果展示：
  - **成功记录**：显示成功数量
  - **失败记录**：展示详细的失败信息列表
    - 列表字段：申请编号、车牌号、申请人、失败原因（详细说明，如："缺少必填字段：车场"、"车牌号重复：粤B12345"、"临时车存在生效时间外的欠费账单"）
    - 操作按钮：[查看详情] - 跳转到该审核单详情页，支持补充信息后重新提交审核
- 注意事项：
  - 批量通过时，车场/收费标准/车位等字段使用住户申请时填写的内容
  - 如某条记录缺少必填字段或校验失败，该记录操作失败，其他记录继续执行
  - 失败记录需单独提示详细失败原因，支持物业补充信息后重新审核

**批量驳回**：
- 功能入口：待审核Tab列表顶部的"批量驳回"按钮
- 前置条件：已选中至少1条待审核记录
- 操作流程：
  1. 勾选需要批量驳回的审核记录
  2. 点击"批量驳回"按钮
  3. 弹出批量驳回对话框，要求填写统一的驳回理由（必填）
  4. 确认后，系统对每条记录执行审核驳回操作，使用统一的驳回理由
  5. 批量操作完成后，展示操作结果汇总

#### 2.2.5 超时提醒功能

**提醒机制**：
- 系统自动监控待审核记录的等待时长
- 当等待时长超过设定阈值时，触发提醒
- 提醒阈值可在系统配置中设置（建议默认值：24小时）

**提醒方式**：
- **列表标红**：待审核列表中，等待时长超过阈值的记录，"等待时长"字段标红显示
- **系统通知**：向审核人员角色推送待办提醒（站内消息/邮件/企业微信等）
- **定时提醒**：每天定时（如每日9:00）推送待审核超时记录汇总

**提醒内容**：
- 待审核记录数量
- 超时记录详情（申请编号、车牌号、申请人、等待时长）
- 快捷操作链接（点击直接进入审核详情页）

---

### 2.3 审核详情与操作

#### 2.3.1 审核详情展示

审核详情页需完整展示以下信息分区：

**一、申请信息（只读展示区）**
- 申请类型
- 申请编号
- 申请时间
- 申请人信息
- 关联房屋信息

**二、车辆信息（只读展示区）**
- 车牌号
- 车辆类型（能源类型、车型大小）
- 品牌型号
- 颜色
- 对于"信息变更"和"换车申请"：需对比展示原信息与新信息

**三、申请提交的租赁信息（只读展示区）**
- **长租车辆申请时显示**：
  - 停车场
  - 收费类型（收费标准）
  - 生效时间
  - 失效时间（系统根据生效时间和收费标准的周期自动计算）

- **临时车转租赁车申请时显示**：
  - 停车场
  - 收费类型（收费标准）
  - 生效时间
  - 失效时间（系统根据生效时间和收费标准的周期自动计算）

- **换车申请时显示**：
  - 更换生效时间（住户填写的新车生效、原车失效的时间点）

**四、附件材料（只读展示区）**
- 居住证明
- 身份证
- 其他证明文件
- 支持在线预览和下载

**五、申请理由（只读展示区）**
- 住户填写的申请理由/变更理由

**六、费用冲突提示区（仅长租车辆申请/换车申请/临时车转租赁车申请显示）**

当审核人员打开审核详情时，系统自动检查该车辆在生效时间范围内是否存在其他费用账单：

- **检查逻辑**：
  - 查询该车牌号在"车辆收费"模块中的所有账单
  - **长租车辆申请**：筛选条件为账单有效期与生效时间范围有重叠 且 支付状态为"待支付"
  - **临时车转租赁车申请**：
    - 筛选所有临时车费用账单（支付状态为"待支付"）
    - 判断账单有效期是否涵盖在生效时间内
  - **换车申请**：筛选条件为原车辆的所有"待支付"账单
  - 如果存在符合条件的账单，展示费用冲突提示

- **提示内容**：
  - **长租车辆申请**：
    - 提示标题："💡 检测到该车辆在生效时间范围内存在待支付费用"
    - 提示说明："长租车辆审核通过后立即生效，住户可即时进出停车场。这些待支付账单可根据实际情况选择作废或保留（如需补缴临停费用可保留）。"
    - 操作选项：[作废这些账单] [保留账单]
    - **注意**：此提示为建议性质，不强制要求作废账单，物业可根据实际情况选择
  - **临时车转租赁车申请**：
    - **情况一：临时车费用涵盖在生效时间内**
      - 提示标题："💡 检测到该临时车在生效时间范围内存在待支付费用"
      - 提示说明："转为长租车审核通过后立即生效，住户可即时进出停车场。这些待支付账单可根据实际情况选择作废或保留。"
      - 操作选项：[作废这些账单] [保留账单]
      - **注意**：此提示为建议性质，不强制要求作废账单
    - **情况二：临时车费用在生效时间外**
      - 提示标题："⚠️ 存在临时车欠费，无法转为长租车"
      - 提示说明："该车辆存在临时车待支付账单（在生效时间范围外），请提醒住户先结清账单后再申请转为长租车。"
      - 操作选项：[驳回申请]
      - **强制校验**：存在生效时间外的待支付账单时，不允许审核通过，只能驳回
  - **换车申请**：
    - 提示标题："💡 检测到原车辆存在未缴费账单"
    - 提示说明："换车审核通过后新车辆立即生效，住户可即时进出停车场。原车辆的待支付账单可根据实际情况选择作废或保留（如需补缴可保留）。"
    - 操作选项：[作废这些账单] [保留账单]
    - **注意**：此提示为建议性质，不强制要求作废账单
  - 账单列表：展示所有冲突的账单信息（费用类型、应交金额、有效期、产生时间）

- **财务覆盖原则说明**：
  - **核心原则**：审核通过后，车辆立即获得进出停车场的授权，无需等待缴费
  - **适用场景**：长租车辆申请、换车申请、临时车转租赁车申请（生效时间内的欠费）
  - **业务逻辑**：
    - 审核通过 = 授予车辆进出权限（同步下发至边缘网关）
    - 缴费 = 财务结算，与进出权限分离
    - 长期不缴费的车辆可通过"黑名单机制"管理（在车辆管理模块设置）
  - **例外情况**：临时车转租赁车时，如存在生效时间外的待支付账单，必须先驳回申请要求住户结清欠费

- **作废逻辑**：
  - 点击[作废这些账单]后，弹出二次确认对话框
  - 确认后，将这些账单的支付状态更新为"已作废"
  - 作废原因自动记录：
    - 长租车辆："长租车辆审核通过，生效时间冲突"
    - 临时车转租赁车："临时车转租赁车审核通过，生效时间冲突"
    - 换车申请："换车申请审核通过，原车辆失效"
  - 作废操作人记录当前审核人员
  - 作废后，费用冲突提示区消失，继续审核流程

- **注意事项**：
  - 此功能仅检查和作废"待支付"状态的账单
  - "已支付"、"已退款"、"已作废"状态的账单不会显示在冲突列表中
  - 物业可选择保留账单（如住户需要补缴之前的临停费用）
  - **唯一强制校验**：临时车转租赁车时，如存在生效时间外的待支付账单，必须先驳回申请
  - 其他场景下的费用冲突提示均为建议性质，不影响审核通过操作

**七、审核填写区（物业操作区）**

此区域为物业审核人员填写的**最终确认信息**，根据申请类型和申请内容，部分字段为必填或非必填：

- **车场**：
  - 下拉选择框，数据来源于"车场管理"模块
  - **必填条件**：
    - 长租车辆申请：必填
    - 临时车辆申请：非必填
    - 信息变更申请：如原车辆有车场，则必填；否则非必填
    - 换车申请：继承原车辆的车场设置，如原车辆有车场，则必填；否则非必填

- **收费标准**：
  - 下拉选择框，数据来源于"收费标准"模块
  - 选择车场后，联动过滤显示该车场下的收费标准
  - **必填条件**：
    - 长租车辆申请：必填
    - 临时车辆申请：非必填
    - 信息变更申请：如原车辆有收费标准，则必填；否则非必填
    - 换车申请：继承原车辆的收费标准设置，如原车辆有收费标准，则必填；否则非必填

- **车位**：
  - 下拉选择框，数据来源于"车位管理"模块
  - 选择车场后，联动过滤显示该车场下的车位列表
  - 车位列表需展示：车位编号、当前状态、已绑定车牌号及住户信息
  - **换车申请的车位继承规则**（1换1原则）：
    - **默认继承**：新车默认继承原车的**所有**车位绑定关系
    - **1换1原则**：新车绑定的车位数量必须与原车保持一致
    - **物业操作权限**：物业可在审核时进行以下操作：
      - ✅ **替换车位**：可以将原车的车位替换为其他车位（如将A-101替换为B-201）
      - ❌ **不允许增加车位**：不能在原有基础上额外绑定新的车位
      - ❌ **不允许减少车位**：不能减少车位绑定数量
    - **原车无车位时的处理**：
      - 若原车辆无车位绑定，新车也不绑定车位
      - 特殊情况：如果收费标准要求必须绑定车位，则需要为新车绑定车位
    - **车位容量检查**：车位继承时**不检查**车位容量，允许"一位多车"场景
    - **业务说明**：原车释放车位 → 新车占用车位，总占用数保持不变
    - **示例**：
      - 原车辆绑定了车位A-101、A-102（2个车位）
      - 新车辆默认继承A-101、A-102（2个车位）
      - 物业可以将A-101替换为B-201，最终新车绑定B-201、A-102（仍是2个车位）
      - 物业不能只绑定A-101（减少为1个车位），也不能增加A-103（增加为3个车位）
  - **其他申请类型的车位设置**：
    - 长租车辆申请、临时车辆申请、信息变更申请：无默认值，物业根据实际情况选择
  - **必填条件**：
    - 当选择的"收费标准"中设置了"需要绑定车位"开关为"是"时，车位字段为**必填**
    - 当选择的"收费标准"中设置了"需要绑定车位"开关为"否"时，车位字段为**非必填**
    - 临时车辆申请：非必填（因为没有收费标准）

- **生效时间**（长租车辆申请/换车申请/临时车转租赁车申请时显示）：
  - 日期时间选择器
  - 默认值：
    - 长租车辆申请：住户申请时填写的生效时间
    - 换车申请：住户申请时填写的更换生效时间
    - 临时车转租赁车申请：住户申请时填写的生效时间
  - 物业可修改此时间
  - 必填

- **失效时间**（长租车辆申请/临时车转租赁车申请时显示）：
  - 日期时间显示（只读）
  - 系统根据"生效时间"和"收费标准"的租赁周期自动计算
  - 计算规则：
    - 如收费标准为"月租"，失效时间 = 生效时间 + N个月
    - 如收费标准为"年租"，失效时间 = 生效时间 + N年
    - 如收费标准为其他时效租赁，按周期单位（时/天/月/年）计算
  - 当修改"生效时间"或"收费标准"时，失效时间自动重新计算
  - **注意**：此失效时间为初始有效期，后续租赁车缴费后，由车辆收费模块更新有效期

- **审核意见**：
  - 文本输入框，物业审核人员填写审核说明
  - 驳回时必填，通过时选填

**八、审核历史记录（如有）**
- 如果当前审核单有过历史审核操作（如：之前驳回过，住户修改后重新提交），则展示历史审核记录
- 时间线形式展示：
  - 每条记录包括：操作时间、操作人、操作类型（审核通过/审核驳回）、审核意见
  - 按时间倒序排列，最新记录在最上方
- 支持查看历史版本的完整数据快照
- 如果是首次审核，此区域不显示

**九、审核操作按钮**
- **通过**：审核通过
- **驳回**：审核驳回，需填写驳回理由

#### 2.3.2 审核通过后的自动流程

当物业审核人员点击"通过"后，系统需自动执行以下操作：

1. **保存审核版本**：
   - 保存完整的申请信息快照（包括住户提交的原始信息）
   - 保存物业审核填写的最终信息（车场、收费标准、车位）
   - 保存审核操作信息（审核人、审核时间、审核意见）
   - 版本状态标记为"已通过"

2. **根据申请类型执行对应操作**：

   - **长租车辆申请**：
     - 创建新车辆档案并写入"车辆管理"模块
     - 车辆标签自动设置为"长租车"
     - 车辆基础信息取住户提交的内容
     - 车场、收费标准、车位取物业审核填写的内容
     - **授权有效期设置**：
       - **生效时间**：取物业审核确认的生效时间
       - **有效期结束时间**：生效时间 + 收费标准周期（如月租为1个月，年租为1年）
     - 如绑定了车位，自动建立车辆与车位的关联关系
     - **触发车辆收费模块**：
       - 车辆信息写入车辆管理后，触发"车辆收费"模块自动生成第一张收费账单
       - 第一张账单有效期：从"生效时间"到"有效期结束时间"
       - 账单金额：根据收费标准的单价和周期计算
       - 到期前2天，系统推送缴费提醒通知
       - **住户缴费后**：车辆收费模块生成下一张账单，有效期从上一张账单结束时间开始，按收费标准周期延续；同时**更新车辆管理中的有效期结束时间**为新账单的有效期结束时间
       - 车辆管理模块读取最新的有效期结束时间，作为车辆当前的授权有效期
       - 超过账单有效期未缴费时，按车场设置的默认收费规则处理

   - **临时车辆申请**：
     - 创建新车辆档案并写入"车辆管理"模块
     - 车辆标签自动设置为"临时车"
     - 车辆基础信息取住户提交的内容
     - 车场、收费标准、车位取物业审核填写的内容（如有）
     - **授权有效期设置**：
       - 有效期开始时间：审核通过时间
       - 有效期结束时间：审核通过时间 + 2年
     - **注意**：临时车的有效期固定为2年，后续**不会因缴费而更新有效期**

   - **车辆信息变更申请**：
     - 更新"车辆管理"模块中的对应车辆档案
     - 保存变更前的完整车辆信息版本（变更历史）
     - 更新为住户提交的新信息及物业审核填写的内容

   - **换车申请**：
     - 在物业审核确认的"更换生效时间"，执行以下操作：
       - 将原车辆状态标记为"已失效"或"已注销"
       - 原车辆的有效期调整：
         - 有效期开始时间：保持原开始时间不变
         - 有效期结束时间：修改为"更换生效时间"
       - 原车辆的出入记录保留，但不与新车辆做关联
       - 解除原车辆与车位的绑定关系（但保留车位信息用于继承）
       - 创建新车辆档案
       - **新车辆的授权有效期设置**：
         - **生效时间**：取"更换生效时间"
         - **有效期结束时间**：取**原车辆的原有效期结束时间**（不是生效时间 + 收费标准周期）
       - 新车辆继承原车辆的收费标准
       - **新车辆车位继承规则**（1换1原则）：
         - **默认继承**：新车默认继承原车的所有车位绑定关系
         - **1换1原则**：新车绑定的车位数量必须与原车保持一致
         - **物业操作权限**：
           - ✅ **替换车位**：可以将原车的车位替换为其他车位（如将A-101替换为B-201）
           - ❌ **不允许增加车位**：不能在原有基础上额外绑定新的车位
           - ❌ **不允许减少车位**：不能减少车位绑定数量
         - **若原车无车位**：新车也不绑定车位（除非收费标准要求必须绑定）
         - **不检查车位容量**：允许一位多车场景
         - **业务说明**：原车释放车位 → 新车占用车位，总占用数保持不变
       - 车辆基础信息取住户提交的新车信息
       - 车场、收费标准取物业审核填写的内容（通常继承原车设置）
     - **新车辆收费账单生成逻辑**：
       - **生成时机**：审核通过并同步到车辆管理模块后，由"车辆收费"模块自动生成收费账单
       - **生成规则**：
         - 如收费标准为"时效租赁"（如月租、年租），系统按照租赁周期自动生成账单
         - 第一张账单有效期：从"更换生效时间"到"原车辆的原有效期结束时间"
         - 账单金额：根据收费标准的单价和实际周期计算（按比例计算）
         - **后续缴费后**：车辆收费模块生成下一张账单，有效期从上一张账单结束时间开始，按收费标准周期延续；同时**更新车辆管理中的有效期结束时间**为新账单的有效期结束时间
       - **重要说明**：新车辆的收费账单生成由"车辆收费"模块负责，审核模块仅负责创建车辆档案并传递收费标准、生效时间、有效期结束时间等必要信息
       - **备注字段**：新车辆在车辆管理中的备注自动记录："换车申请审核通过，原车牌：粤BXXXXX，更换生效时间：YYYY-MM-DD HH:MM:SS"
     - **业务说明**：
       - 原车辆的有效期从"原开始时间"到"更换生效时间"
       - 新车辆的有效期从"更换生效时间"到"原车辆的原有效期结束时间"
       - 原车辆和新车辆在"更换生效时间"这个时间点交接
       - 住户在小程序查看停车记录时，根据缴费记录查询停车记录（不区分原车辆和新车辆）
       - **原车辆的收费账单保持不变**，不会因为换车而作废或修改（除非物业在费用冲突提示中选择作废）
       - **有效期继承**：新车辆继承原车辆的剩余有效期，后续缴费后才会更新有效期

   - **临时车转租赁车申请**：
     - **前置校验**：审核时系统已检查临时车费用账单，如存在生效时间外的待支付账单，审核已被阻止
     - 更新"车辆管理"模块中的对应车辆档案
     - 车辆标签从"临时车"变更为"长租车"
     - 车场、收费标准、车位取物业审核填写的内容
     - **授权有效期设置**：
       - **生效时间**：取物业审核确认的生效时间
       - **有效期结束时间**：生效时间 + 收费标准周期（如月租为1个月，年租为1年）
     - 如绑定了车位，自动建立车辆与车位的关联关系
     - **触发车辆收费模块**：
       - 审核通过后，触发"车辆收费"模块自动生成第一张长租收费账单
       - 账单生成逻辑与"长租车辆申请"相同
       - **住户缴费后**：车辆收费模块生成下一张账单，同时更新车辆管理中的有效期结束时间
     - **业务说明**：临时车转租赁车走的是长租车申请流程，审核人员在费用冲突提示区已处理临时车费用

3. **写入车辆管理模块**：
   - 将审核通过的车辆信息写入"车辆管理"模块
   - 车辆初始状态设置为"未同步"（表示尚未下发至边缘网关）

4. **下发至边缘网关**：
   - 车辆信息写入车辆管理后，立即尝试下发至小区边缘网关（Edge Gateway）
   - 下发内容包括：车牌号、车辆类型、授权车场、有效期（如有）
   - **下发成功**：
     - 更新车辆状态为"已同步"
     - 记录网关同步状态为"已下发"
     - 记录网关同步时间
   - **下发失败**：
     - 车辆状态保持为"未同步"
     - 记录网关同步状态为"下发失败"
     - 记录失败原因
     - **重要**：下发失败不影响车辆数据已写入车辆管理，物业可后续手动重试同步

5. **消息通知**：
   - 向住户推送审核通过通知（App/短信/系统站内信）
   - 通知内容包括：车辆信息、审核结果、生效时间

#### 2.3.3 审核驳回后的流程

当物业审核人员点击"驳回"后，系统需自动执行以下操作：

1. **保存审核版本**：
   - 保存完整的申请信息快照
   - 保存审核操作信息（审核人、审核时间、驳回理由）
   - 版本状态标记为"已驳回"

2. **消息通知**：
   - 向住户推送审核驳回通知（App/短信/系统站内信）
   - 通知内容包括：车辆信息、驳回理由

3. **允许重新提交**：
   - 住户可在小程序端查看驳回理由
   - 住户可修改信息后重新提交申请
   - 重新提交使用**同一个审核单号**，在原审核单基础上追加新的审核版本
   - 新版本进入待审核状态，审核详情页可查看历史审核记录

---

### 2.4 住户信息纠错与变更机制

#### 2.4.1 住户发现信息错误的处理方式

当住户在小程序端发现已审核通过的车辆信息有误时，有以下两种处理方式：

**方式一：通过小程序重新提交审核**
- 住户可通过小程序发起"车辆信息变更"或"变更车辆"申请
- 填写变更内容和变更理由
- 提交后进入审核流程，需等待物业审核
- 审核通过后，信息更新并重新下发至边缘网关

**方式二：通知物业工作人员变更**
- 住户通过电话、线下等方式联系物业工作人员
- 物业工作人员在PC端"车辆管理"模块中直接修改车辆信息
- PC端修改的信息无需审核，直接生效并下发至边缘网关
- 物业需在操作备注中记录变更原因和沟通记录

#### 2.4.2 两种方式的对比

| 对比项 | 小程序重新提交审核 | 通知物业变更 |
| :--- | :--- | :--- |
| 操作主体 | 住户自主操作 | 物业工作人员操作 |
| 审核流程 | 需要审核 | 无需审核 |
| 处理时效 | 取决于审核响应时间 | 即时生效 |
| 适用场景 | 非紧急情况、常规变更 | 紧急情况、现场处理 |

---

### 2.5 审核历史与版本管理

#### 2.5.1 版本保存规则

遵循"全量保存原则"，以下操作需触发版本保存：

1. **住户首次提交申请时**：创建审核单，保存第一个版本（状态：待审核）
2. **物业审核通过时**：保存审核通过版本（状态：已通过，包含物业修改的内容）
3. **物业审核驳回时**：保存审核驳回版本（状态：已驳回，包含驳回理由）
4. **住户重新提交时**：在同一个审核单下，追加新版本（状态：待审核），不生成新的审核单号

#### 2.5.2 版本内容

每个版本需完整保存以下内容：

- **申请基础信息**：申请编号、申请类型、申请时间
- **车辆信息**：车牌号、车辆类型、品牌型号、颜色
- **权属信息**：申请人、关联房屋
- **租赁信息**（如有）：停车场、收费类型
- **附件材料**：文件URL列表
- **申请理由**
- **审核信息**（如有）：审核人、审核时间、审核结果、审核意见、物业填写的车场/收费标准/车位
- **版本元数据**：版本号、创建时间、版本状态

#### 2.5.3 审核历史查看

- 支持在审核详情页查看同一个审核单的完整审核历史
- 时间线展示：首次申请 → 第1次审核操作 → 第2次重新提交 → 第2次审核操作...
- 每个历史节点包括：
  - 操作时间
  - 操作人（住户/审核员）
  - 操作类型（提交申请/审核通过/审核驳回/重新提交）
  - 审核意见（如有）
  - 数据快照（点击可查看当时的完整数据）
- 支持版本对比功能（对比不同版本的字段差异）
- 操作人员追溯：记录每个操作节点的操作人

---

## 3. 业务规则与逻辑约束

### 3.1 审核权限控制

- **审核操作权限**：仅物业审核员和物业管理员可执行审核操作
- **查看权限**：物业审核员、物业管理员可查看所有审核记录
- **住户权限**：住户仅可在小程序端查看自己的申请记录及审核状态

### 3.2 字段校验规则

- **车牌号唯一性校验**（长租车辆、临时车辆申请时）：
  - 同一车牌号不能重复申请（需排除已驳回和已失效的记录）
  - 提示："该车牌号已存在，请勿重复申请"

- **车场、收费标准、车位联动校验**：
  - 收费标准必须属于选择的车场
  - 车位必须属于选择的车场
  - 当收费标准要求绑定车位时，车位为必填

- **车位绑定冲突校验**：
  - 如车位已被其他车辆绑定（取决于车位管理的"一位多车"配置）
  - 需提示当前车位已绑定的车辆信息和住户信息

- **批量操作校验**：
  - 批量通过时，对每条记录进行独立校验
  - 如某条记录缺少必填字段（如长租车辆缺少车场/收费标准），则该记录操作失败
  - 如某条记录存在业务冲突（如车牌号重复），则该记录操作失败
  - 失败记录不影响其他记录的操作，成功的记录正常通过

### 3.3 审核状态流转规则

- **待审核**：住户提交申请后的初始状态，可执行"通过"或"驳回"操作
- **已通过**：审核通过后的终态，不可再次操作，车辆数据已进入车辆管理模块
- **已驳回**：审核驳回后的终态，不可再次操作，住户可重新提交新申请

### 3.4 边缘网关同步与重试机制

#### 3.4.1 同步状态管理

车辆信息与边缘网关的同步状态分为以下几种：

- **未同步**：车辆信息已写入车辆管理，但尚未下发至边缘网关（初始状态或下发失败后的状态）
- **已同步**：车辆信息已成功下发至边缘网关
- **同步失败**：尝试下发至边缘网关时失败，记录失败原因

#### 3.4.2 同步失败处理机制

**重要原则**：下发边缘网关失败不影响审核通过的车辆数据写入车辆管理模块

**处理流程**：
1. 审核通过后，车辆信息立即写入车辆管理模块
2. 尝试下发至边缘网关
3. 如下发失败：
   - 车辆状态标记为"未同步"
   - 记录失败原因和失败时间
   - 车辆数据仍保留在车辆管理模块中，可正常查看和管理
4. 物业可在车辆管理模块中查看"未同步"状态的车辆，并手动重试同步

#### 3.4.3 手动重试同步

**功能入口**：
- 车辆管理模块列表中，"未同步"和"同步失败"状态的车辆，操作列显示[重新同步]按钮
- 支持批量选择"未同步"车辆，执行批量重新同步

**重试流程**：
1. 点击[重新同步]按钮
2. 系统重新尝试将车辆信息下发至边缘网关
3. 下发成功：更新车辆状态为"已同步"，记录同步时间
4. 下发失败：保持"未同步"状态，更新失败原因和失败时间

### 3.5 与PC端物业操作的区分

- **PC端物业直接操作**（不需要审核）：
  - 物业员工在"车辆管理"模块中直接新增车辆
  - 物业员工在"车辆管理"模块中直接修改车辆信息
  - 物业员工在"车辆管理"模块中直接修改车辆收费标准
  - 以上操作直接生效并下发至边缘网关

- **小程序端住户申请**（需要审核）：
  - 住户通过小程序提交的所有车辆相关申请
  - 必须经过本审核模块流程，审核通过后才进入车辆管理并下发

---

## 4. 关联关系管理

### 4.1 模块关联

本模块与以下模块存在关联关系：

| 关联模块 | 路径 | 关联内容 | 数据流向 |
| :--- | :--- | :--- | :--- |
| 小程序车辆模块 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/c53c-9 | 接收住户提交的车辆申请数据 | 小程序 → 审核 |
| 车辆管理 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/77f0- | 审核通过后写入车辆档案数据（含初始有效期）；租赁车缴费后由车辆收费模块更新有效期结束时间 | 审核 → 车辆管理 ← 车辆收费 |
| 车场管理 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/4e27- | 获取车场列表供审核选择 | 车场管理 → 审核 |
| 收费标准 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/d0a6- | 获取收费标准列表供审核选择；判断是否需要绑定车位 | 收费标准 → 审核 |
| 车位管理 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/7531- | 获取车位列表供审核选择；查看车位绑定状态 | 车位管理 → 审核 |
| 车辆收费 | /var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/d0a6- | 检查车辆在生效时间范围内的费用账单；作废冲突的待支付账单；审核通过后自动生成收费账单；租赁车缴费后生成新账单并更新车辆有效期；到期提醒 | 车辆收费 ↔ 审核，车辆收费 → 车辆管理 |
| 边缘网关 | (硬件/第三方系统) | 审核通过后下发车辆白名单数据 | 审核 → 边缘网关 |
| 消息通知模块 | (待定) | 发送审核结果通知给住户；发送缴费到期提醒（由车辆收费模块触发） | 审核 → 消息通知 ← 车辆收费 |

### 4.2 预留接口

- **租赁轮候接口**：
  - 预留与"租赁轮候"模块的对接接口
  - 用途：当车位资源紧张时，审核通过的车辆可能需要进入轮候队列
  - 调用时机：审核通过但无可用车位时
  - 接口功能：将车辆信息加入轮候队列，按优先级分配车位

---

## 5. 数据结构设计参考

### 5.1 审核申请表 (vehicle_audit)

| 字段名 | 类型 | 说明 | 备注 |
| :--- | :--- | :--- | :--- |
| id | bigint | 主键 | 自增 |
| audit_no | varchar(50) | 审核单号 | 唯一，系统自动生成 |
| audit_type | varchar(20) | 申请类型 | 长租车辆/临时车辆/信息变更/换车申请 |
| user_id | bigint | 申请人ID | 关联住户表 |
| house_id | bigint | 关联房屋ID | 关联房屋表 |
| original_vehicle_id | bigint | 原车辆ID | 信息变更/换车申请时使用 |
| vehicle_info | json | 车辆信息 | 包含车牌号、类型、品牌型号、颜色等 |
| parking_lot_apply | bigint | 申请的停车场ID | 长租车辆申请时有值 |
| fee_standard_apply | bigint | 申请的收费标准ID | 长租车辆申请时有值 |
| effective_time_apply | datetime | 申请的生效时间 | 长租车辆/换车申请时有值 |
| expire_time_apply | datetime | 申请的失效时间 | 长租车辆申请时有值，系统自动计算 |
| replace_effective_time_apply | datetime | 申请的更换生效时间 | 换车申请时有值 |
| attachments | json | 附件文件列表 | 文件URL数组 |
| apply_reason | text | 申请理由 | 住户填写 |
| audit_parking_lot | bigint | 审核确认的停车场ID | 物业审核填写 |
| audit_fee_standard | bigint | 审核确认的收费标准ID | 物业审核填写 |
| audit_parking_space | bigint | 审核确认的车位ID | 物业审核填写 |
| audit_effective_time | datetime | 审核确认的生效时间 | 物业审核填写，长租车辆/换车申请/临时车转租赁车申请时必填 |
| audit_expire_time | datetime | 审核确认的失效时间 | 长租车辆/临时车转租赁车申请时自动计算，v1.6.0恢复使用：审核时设置初始有效期 |
| audit_replace_effective_time | datetime | 审核确认的更换生效时间 | 换车申请时，物业可修改 |
| audit_opinion | text | 审核意见 | 物业审核填写 |
| audit_status | varchar(20) | 审核状态 | 待审核/已通过/已驳回 |
| auditor_id | bigint | 审核人ID | 关联员工表 |
| audit_time | datetime | 审核时间 | |
| gateway_sync_status | varchar(20) | 网关同步状态 | 未下发/已下发/下发失败 |
| gateway_sync_time | datetime | 网关同步时间 | |
| created_at | datetime | 创建时间 | |
| updated_at | datetime | 更新时间 | |

### 5.2 审核版本历史表 (vehicle_audit_version)

| 字段名 | 类型 | 说明 | 备注 |
| :--- | :--- | :--- | :--- |
| id | bigint | 主键 | 自增 |
| audit_id | bigint | 审核申请ID | 关联审核申请表 |
| version_no | int | 版本号 | 从1开始递增 |
| snapshot_data | json | 快照数据 | 完整的申请信息+审核信息 |
| version_status | varchar(20) | 版本状态 | 待审核/已通过/已驳回 |
| operator_id | bigint | 操作人ID | |
| operation_type | varchar(20) | 操作类型 | 提交申请/审核通过/审核驳回 |
| created_at | datetime | 创建时间 | |

---

## 6. 界面原型参考

### 6.1 审核列表页

```
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 车辆审核                                                    [批量通过] [批量驳回]    │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ [待审核] [历史审核]                                                                  │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ 筛选：                                                                               │
│ [申请类型 ▼] [申请时间范围选择]  [搜索: 车牌/姓名/房号]                            │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ ☐ | 申请编号 | 申请类型 | 车牌号 | 申请人 | 关联房屋 | 申请时间 | 等待时长 | 操作   │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ ☐ | A2026... | 长租车辆 | 粤B12345 | 张三 | 1栋1-101 | 2026-01-28 | 2小时 | [审核] │
│ ☐ | A2026... | 临时车辆 | 粤B67890 | 李四 | 2栋2-202 | 2026-01-27 | 26小时 | [审核] │
│                                                                      ↑ (标红提示超时)  │
└─────────────────────────────────────────────────────────────────────────────────────┘

历史审核Tab示例：
┌─────────────────────────────────────────────────────────────────────────────────────┐
│ 车辆审核                                                                             │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ [待审核] [历史审核]                                                                  │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ 筛选：                                                                               │
│ [审核状态 ▼] [申请类型 ▼] [申请时间范围选择]  [搜索: 车牌/姓名/房号]              │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ 申请编号 | 申请类型 | 车牌号 | 申请人 | 关联房屋 | 申请时间 | 审核状态 | 操作       │
├─────────────────────────────────────────────────────────────────────────────────────┤
│ A2026... | 换车申请 | 粤B54321→粤B88888 | 王五 | 3栋3-303 | 2026-01-26 | 已通过 | [查看] │
│ A2026... | 长租车辆 | 粤B11111 | 赵六 | 4栋4-404 | 2026-01-25 | 已驳回 | [查看]    │
└─────────────────────────────────────────────────────────────────────────────────────┘
```

### 6.2 审核详情页

```
┌─────────────────────────────────────────────────────────────────────────┐
│ 车辆审核详情                                            [关闭 ✕]        │
├─────────────────────────────────────────────────────────────────────────┤
│ 一、申请信息                                                             │
│   申请类型：长租车辆申请                                                 │
│   申请编号：A20260128001                                                │
│   申请时间：2026-01-28 10:30:00                                         │
│   申请人：张三                                                           │
│   关联房屋：1栋1单元101                                                  │
├─────────────────────────────────────────────────────────────────────────┤
│ 二、车辆信息                                                             │
│   车牌号：粤B12345                                                       │
│   车辆类型：新能源 / 小型车                                              │
│   品牌型号：比亚迪 秦PLUS                                                │
│   颜色：白色                                                             │
├─────────────────────────────────────────────────────────────────────────┤
│ 三、住户提交的租赁信息                                                   │
│   停车场：地下停车场A区                                                  │
│   收费类型：月租车收费标准（300元/月）                                   │
│   生效时间：2026-02-01 00:00:00                                         │
│   失效时间：2026-03-01 00:00:00（系统自动计算）                         │
├─────────────────────────────────────────────────────────────────────────┤
│ 四、附件材料                                                             │
│   [居住证明.pdf] [身份证正面.jpg] [身份证反面.jpg]                       │
├─────────────────────────────────────────────────────────────────────────┤
│ 五、申请理由                                                             │
│   本人为1栋1单元101业主，现需申请长租车位，方便日常通勤使用。            │
├─────────────────────────────────────────────────────────────────────────┤
│ 六、费用冲突提示（检测到该车辆在生效时间范围内存在待支付费用）            │
│   ⚠️ 以下账单的有效期与长租生效时间有重叠，建议作废这些待支付账单：      │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │ 1. 临停费：50元 | 有效期：2026-01-20 ~ 2026-02-05 | 待支付    │   │
│   │ 2. 临停费：30元 | 有效期：2026-02-10 ~ 2026-02-15 | 待支付    │   │
│   └───────────────────────────────────────────────────────────────┘   │
│   [作废这些账单]  [保留账单]                                             │
│   说明：长租车辆生效后，这些临停费用可能不再适用                          │
├─────────────────────────────────────────────────────────────────────────┤
│ 七、审核确认信息（物业填写）                                             │
│   车场：[地下停车场A区 ▼] *必填                                          │
│   收费标准：[月租车收费标准（300元/月）▼] *必填                          │
│   车位：[A-101 (空闲) ▼] *必填（因收费标准要求绑定车位）                 │
│   生效时间：[2026-02-01 00:00:00] *必填                                 │
│   失效时间：2026-03-01 00:00:00（自动计算）                             │
│   审核意见：[                                                   ]         │
├─────────────────────────────────────────────────────────────────────────┤
│ 八、审核历史记录（本审核单曾被驳回过1次）                                │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │ 2026-01-27 14:20:00 | 审核员：李明 | 操作：审核驳回             │   │
│   │ 驳回理由：居住证明照片不清晰，请重新上传                       │   │
│   │ [查看快照]                                                     │   │
│   └───────────────────────────────────────────────────────────────┘   │
│   ┌───────────────────────────────────────────────────────────────┐   │
│   │ 2026-01-27 10:00:00 | 住户：张三 | 操作：首次提交申请         │   │
│   │ [查看快照]                                                     │   │
│   └───────────────────────────────────────────────────────────────┘   │
├─────────────────────────────────────────────────────────────────────────┤
│                                          [通过]  [驳回]                  │
└─────────────────────────────────────────────────────────────────────────┘
```

---

## 7. 非功能性需求

### 7.1 性能要求
- 审核列表加载时间 < 2秒
- 审核详情页加载时间 < 1秒
- 审核操作响应时间 < 3秒
- 支持分页加载，每页20-50条记录

### 7.2 安全要求
- 所有审核操作需记录操作日志（操作人、操作时间、操作内容）
- 附件文件需进行安全扫描，防止恶意文件上传
- 敏感信息（身份证等）需脱敏展示或加密存储

### 7.3 可用性要求
- 系统可用性 ≥ 99.5%
- 边缘网关下发失败时，需提供手动重试功能
- 数据备份与恢复机制

---

## 8. 附录

### 8.1 术语表

| 术语 | 说明 |
| :--- | :--- |
| 审核单号 | 系统为每个审核申请自动生成的唯一编号 |
| 版本快照 | 完整保存某个时间点的申请数据状态 |
| 边缘网关 | 小区停车场的硬件控制系统，接收车辆白名单数据 |
| 一位多车 | 一个车位可以授权给多个车牌号使用 |
| 时效租赁 | 按固定周期（如月、年）收费的租赁方式 |
| 未同步 | 车辆信息已写入车辆管理，但尚未成功下发至边缘网关的状态 |
| 已同步 | 车辆信息已成功下发至边缘网关的状态 |
| 批量审核 | 选择多条待审核记录，执行批量通过或批量驳回操作 |
| 超时提醒 | 当待审核记录等待时长超过设定阈值时，系统自动提醒审核人员 |
| 费用冲突检查 | 审核长租车辆时，检查生效时间范围内是否存在待支付费用账单 |
| 账单作废 | 将"待支付"状态的账单标记为"已作废"，记录作废原因和操作人 |
| 临时车 | 住户申请并记录在系统内的车辆，按临时收费标准收费，有车辆档案，由住户在小程序端申请审核后录入，有效期默认为2年 |
| 临停车 | 未记录在系统中的外部车辆（如访客），按临停收费规则收费，无车辆档案，进出时临时计费 |
| 换车有效期交接 | 换车申请审核通过后，原车辆的有效期从原开始时间到更换生效时间，新车辆的有效期从更换生效时间到原车辆的原有效期结束时间 |
| 临时车转租赁车 | 临时车转租赁车走长租车申请流程，审核时需校验临时车费用账单，存在生效时间外的待支付账单则必须驳回 |
| 财务覆盖原则 | 审核通过后车辆立即获得进出权限，无需等待缴费；缴费与授权分离，长期不缴费可通过黑名单机制管理 |
| 批量审核失败详情 | 批量审核操作完成后，失败记录需展示详细的失败原因（如缺少必填字段、车牌重复等），并支持跳转到详情页补充信息 |
| 授权有效期 | 审核通过时设置车辆初始有效期（生效时间 + 周期）；租赁车缴费后，车辆收费模块更新有效期结束时间；临时车有效期固定2年，不更新 |
| 车位继承规则（1换1原则） | 换车申请时，新车默认继承原车的所有车位绑定关系，车位数量必须与原车保持一致；物业只能替换车位，不能增加或减少车位数量；原车释放车位，新车占用车位，总占用数保持不变 |

### 8.2 参考文档

- 小程序车辆模块需求：/var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/c53c-9/work/PRD_小程序长租车辆申请.md
- 车辆管理需求：/var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/77f0-/work/docs/requirements/v1.4.0_vehicle_management_final_refinement.md
- 车场管理需求：/var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/4e27-/work/docs/requirements/v1.4.0_20260127.md
- 收费标准需求：/var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/d0a6-/work/docs/requirements/v1.1.0_charging_logic.md
- 车位管理需求：/var/folders/tk/58y24pzd7l7d05w84rrb9_6w0000gn/T/vibe-kanban/worktrees/7531-/work/docs/requirements/v1.1.0_20260127.md
