# 车辆进出纪录需求文档 (v1.5.0)

## 1. 功能概述
记录车辆进出特定区域的详细信息，为“车辆管理”提供通行轨迹，并作为“车辆收费”的历史参考。系统主要通过边缘网关从停车系统获取数据。核心收费闭环由本地停车系统完成，本模块侧重于数据展示、历史归档及异常数据管理。

## 2. 业务需求

### 2.1 进场记录管理
- **自动采集 (网关同步)**: 
  - 通过边缘网关从停车系统同步进场事件。
  - **同步要求**: 不需要实时推送，但需确保用户在后台查看数据时，展现的是当前最新的进场记录。
- **重复入场处理 (核心逻辑更新)**:
  - **场景**: 当车辆已有一条或多条“在场 (In-site)”记录时，再次产生新的入场信号。
  - **处理流程**: 
    1. **告警推送**: 系统立即生成**告警消息**推送至物业员工，提示车牌逻辑异常。
    2. **状态标记**: 将该车牌原有的所有“在场 (In-site)”记录状态更新为 **“异常数据 (Abnormal)”**。
    3. **新记创建**: 允许车辆正常进入，并产生一条全新的“在场 (In-site)”记录。
    4. **不拦截原则**: 确保业务流程不因逻辑异常而阻塞道闸开启。
- **记录删除功能**:
  - **适用场景**: 识别错误（如将广告牌识别为车牌）或道闸故障产生的无效入场记录。
  - **操作权限**: 仅限具备权限的管理员操作。
  - **执行结果**: 支持从列表中删除指定记录，删除后该记录不再参与后续的出场匹配及计费关联。

### 2.2 出场记录管理与计费关联
- **自动匹配规则**: 
  - 同步出场事件时，系统根据车牌号匹配记录。
  - **计费原则**: 系统必须**取离出场时间最近的一条“在场 (In-site)”记录**进行关联结案。
  - **异常清理**: 若匹配后发现仍存在其他“在场”记录，系统需自动将其标记为“异常数据 (Abnormal)”。
- **收费标准匹配**:
  - **默认规则**: 对于**临停车**及**访客车辆**，系统统一采用其所属车场定义的**唯一一条默认收费规则**。
  - **关联性**: 每个车场有且只有一条默认规则，确保计费逻辑的唯一性。

### 2.3 状态流转 (Status Lifecycle)
- **在场 (In-site)**: 车辆已入场，等待匹配出场。
- **已离场 (Departed)**: 正常的入出场闭环记录。
- **异常数据 (Abnormal)**: 
  - 因重复入场被系统自动标记的陈旧在场记录。
  - 被管理员手动标记为异常的记录。
- **手动结案 (Manual-Closed)**: 通过管理员手动执行出场操作完成。

## 3. 字段规划 (数据对齐)

| 字段名称 | 类型 | 说明 | 关联说明 |
| :--- | :--- | :--- | :--- |
| `record_id` | String | 唯一流水号 | 关联收费单据的原始 ID |
| `plate_number` | String | 车牌号 | 核心匹配键 |
| `vehicle_id` | String | 车辆 ID | 关联【车辆管理】档案 |
| `vehicle_type` | Enum | 车辆类型 | 业主车、长租车、临时车、临停车 |
| `entry_time` | DateTime | 入场时间 | 计费起点 |
| `exit_time` | DateTime | 离场时间 | 计费终点 |
| `status` | Enum | 记录状态 | 在场、已离场、手动结案、**异常数据** |
| `is_deleted` | Boolean | 删除标记 | 用于记录删除功能 |
| `park_id` | String | 车场 ID | 用于匹配该车场唯一的默认收费规则 |
| `charge_id` | String | 关联收费单 ID | 关联【车辆收费】模块的账单 |

## 4. 模块联动逻辑

### 4.1 关联【车辆收费】(d0a6-)
- **规则应用**: 进出记录生成时，若判断为临停/访客，则自动关联车场默认规则。
- **计费同步**: 确保 `charge_id` 关联的是基于“最近入场记录”产生的账单，异常数据不产生或关联有效账单。

### 4.2 关联【车辆管理】(77f0-)
- **记录穿透**: 在车辆详情页展示“通行日志”时，需默认过滤掉“异常数据”及“已删除”记录，除非用户勾选“查看全部”。

## 5. 待确认事项 (已落实)
- **重复入场**: 确认为“告警推送 + 自动转异常 + 匹配最近入场”。
- **收费规则**: 确认为“每个车场有且只有一条默认规则”。
- **删除逻辑**: 确认支持对故障/错误记录进行删除。
