# 丰田 EPC 三个查询入口路径

这份文档只回答一个问题：

```text
以后我输入 OE、VIN、车型，系统应该怎么一步一步查？
```

## 总图

```mermaid
flowchart LR
  OE["入口 1：OE 号码<br/>48510-8Z205"]
  VIN["入口 2：VIN/车架号<br/>17 位"]
  Model["入口 3：车型/底盘<br/>GUN125"]

  EPC["Toyota EPC 数据源<br/>D:\\TMCEPCW3\\epcdata"]

  Result["统一结果<br/>地区 / 目录 / 车型 / 条件 / OE / 图片"]

  OE --> EPC --> Result
  VIN --> EPC
  Model --> EPC
```

## 入口 1：OE 号码进去

### 目标

输入：

```text
48510-8Z205
```

输出：

```text
地区
目录
参考号
零件名称
图组
原厂示意图
基础底盘
条件字段
候选互换号
精准适配条件
```

### 查询路径

```mermaid
flowchart TD
  A["输入 OE<br/>48510-8Z205"]
  B["统一格式<br/>485108Z205"]
  C["扫描 FGI*.DAT"]
  D["得到地区/目录/参考号/图组"]
  E["查 HINMEI*.DAT<br/>零件名称"]
  F["查 BZI*.DAT<br/>图纸编号"]
  G["查 EMI/EMK<br/>提取图片"]
  H["查 KRK*.DAT<br/>基础底盘"]
  I["查 TKM/KIG<br/>条件字典"]
  J["查 KPT*.DAT<br/>精准适配"]
  K["输出结果"]

  A --> B --> C --> D
  D --> E
  D --> F --> G
  D --> H
  D --> I
  D --> J
  E --> K
  G --> K
  H --> K
  I --> K
  J --> K
```

### 对应文件路径

| 步骤 | 文件 | 状态 |
|---|---|---|
| OE 找目录 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\FGI*.DAT` | 已落地 |
| 参考号找名称 | `D:\TMCEPCW3\epcdata\{地区}\HINMEI*.DAT` | 已落地，部分语言需处理编码 |
| 图组找图号 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\BZI*.DAT` | 已落地 |
| 图号提图片 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\EMI*.DAT` + `EMK*.DAT` | 已落地 |
| 目录找基础底盘 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\KRK*.DAT` | 已落地 |
| 条件字典 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\TKM*.Dxx` + `KIG*.Dxx` | 已落地 |
| 精准适配 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\KPT*.DAT` | 正在逆向 |

### 现在已经验证的例子

```text
OE: 48510-8Z205
命中地区: EU / GR / JP / US
样例目录: GR / 672390
参考号: 48510 / 48520
图组: 4803
零件: 右前 / 左前减震器总成
图片: 已提取
基础底盘: 已提取
LHD/RHD 字段: 已提取
精准适配: 还要继续解析 KPT
```

## 入口 2：VIN/车架号进去

### 目标

输入：

```text
LFMAPE2C7A0185487
```

输出：

```text
VIN 是否有效
属于哪个地区数据
基础底盘
年份
可能目录
该车可查的配件
```

### 查询路径

```mermaid
flowchart TD
  A["输入 VIN<br/>17 位"]
  B["检查格式<br/>17位/不含 I O Q"]
  C["取前三位 WMI<br/>例如 LFM"]
  D["查 VIN9.INI<br/>判断本数据是否覆盖"]
  E["拆年份码/流水号"]
  F["查 FRAMNO.DAT<br/>底盘+年份+流水号范围"]
  G["得到基础底盘"]
  H["用基础底盘反查 KRK<br/>找到目录"]
  I["进入 OE/配件查询路径"]

  A --> B --> C --> D
  B --> E --> F --> G --> H --> I
```

### 对应文件路径

| 步骤 | 文件 | 状态 |
|---|---|---|
| VIN 前缀规则 | `D:\TMCEPCW3\epcdata\{地区}\VIN9.INI` | 已查看 |
| 车架范围 | `D:\TMCEPCW3\epcdata\{地区}\FRAMNO.DAT` | 已确认结构 |
| 车型反查目录 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\KRK*.DAT` | 可落地 |
| 进入配件 | `FGI / HINMEI / BZI / EMK / KPT` | 部分已落地 |

### 目前对 VIN 的明确结论

`FRAMNO.DAT` 不是完整 17 位 VIN 清单。

它更像这样：

```text
基础底盘 + 年份 + 一组车架流水号范围
```

已确认：

```text
每条记录 99 字节
EU: 33963 条范围记录
GR: 35479 条范围记录
JP: 33963 条范围记录
US: 33963 条范围记录
```

对你给过的 VIN：

```text
LFMAPE2C7A0185487
```

当前发现：

```text
LFM 这个前三位，在 EU / GR / US / JP 的 VIN9.INI 里没有出现。
```

这说明：

```text
1. 这个 VIN 可能属于当前 EPC 包未覆盖的中国区域；
2. 或者 VIN 匹配不只靠 VIN9.INI，还要继续找其他索引；
3. VIN 查询不能只靠 FRAMNO.DAT，需要补地区规则。
```

## 入口 3：车型/底盘进去

### 目标

输入：

```text
GUN125
```

输出：

```text
这个车型在哪些地区目录出现
有哪些年份/车架范围
有哪些图组
有哪些 OE
能不能按条件过滤
```

### 查询路径

```mermaid
flowchart TD
  A["输入车型/底盘<br/>GUN125"]
  B["查 FL 车型资料目录"]
  C["查 FRAMNO.DAT<br/>年份和车架范围"]
  D["反查所有 KRK*.DAT<br/>哪些目录包含 GUN125"]
  E["进入这些目录的 FGI*.DAT"]
  F["得到相关 OE 和图组"]
  G["查 HINMEI/BZI/EMK/KPT"]
  H["输出车型对应配件"]

  A --> B
  A --> C
  A --> D --> E --> F --> G --> H
```

### 对应文件路径

| 步骤 | 文件 | 状态 |
|---|---|---|
| 车型资料目录 | `D:\TMCEPCW3\epcdata\FL\DM\{车型}` | 已发现 |
| 车型资料目录 | `D:\TMCEPCW3\epcdata\FL\OV\{车型}` | 已发现 |
| 车架范围 | `D:\TMCEPCW3\epcdata\{地区}\FRAMNO.DAT` | 已确认 |
| 车型反查目录 | `D:\TMCEPCW3\epcdata\{地区}\{目录}\KRK*.DAT` | 可落地 |
| 目录反查 OE | `D:\TMCEPCW3\epcdata\{地区}\{目录}\FGI*.DAT` | 可落地 |

### 已验证的例子

车型：

```text
GUN125
```

已发现本地存在：

```text
D:\TMCEPCW3\epcdata\FL\DM\GUN125
D:\TMCEPCW3\epcdata\FL\OV\GUN125
```

这些目录里有大量 `.ACD` 文件，很多文件大小是 42 字节的倍数，说明是结构化资料块，但不是普通明文。

车型反查目录的更稳路径是：

```text
扫描 EU / GR / JP / US 下面所有 KRK*.DAT
找到包含 GUN125 的目录
再进入这些目录查 FGI*.DAT
```

## 三个入口最终会汇合

```mermaid
flowchart TD
  OE["OE 入口"]
  VIN["VIN 入口"]
  Model["车型入口"]

  Catalog["地区目录"]
  Cond["适配条件"]
  Parts["OE 配件"]
  Image["图纸图片"]

  OE --> Parts
  OE --> Catalog
  VIN --> Model --> Catalog
  Model --> Catalog
  Catalog --> Parts
  Catalog --> Cond
  Parts --> Image
  Cond --> Parts
```

最终网站或内部系统其实只需要一个统一结果页：

```text
OE
零件名称
地区
目录
车型/底盘
年份
左右舵
发动机
目的地
图纸
互换候选
准确状态
```

## 当前状态总结

| 查询入口 | 当前状态 | 说明 |
|---|---|---|
| OE 查询 | 基本可做 | 已能查目录、名称、图片、基础底盘 |
| 车型查询 | 可做第一版 | 可用 KRK 反查目录，再查 OE |
| VIN 查询 | 能做格式和范围原型 | 但 `LFM` 当前未在 VIN9 表出现，需要继续确认覆盖区域 |
| 精准适配 | 未完成 | 关键在 `KPT*.DAT` |

## 下一步最实际的开发顺序

```text
1. 先做 OE 查询内部版
2. 再做车型 GUN125 反查目录内部版
3. 再做 VIN 查询原型
4. 最后集中攻克 KPT，补精准适配
```

原因：

```text
OE 查询已经证据最多，最快能用。
车型查询可以用 KRK 反查目录，路径也比较清楚。
VIN 查询需要先解决地区覆盖和 LFM 前缀问题。
KPT 是最终精准适配，难度最高。
```
