# 千路订单管理系统 — 文件执行标准（参考）

**产品范围**：千路含 **询价管理系统** 与 **出入库管理系统** 两部分；**本文档仅规范询价管理系统侧**的导入/导出表头与文件名（对应询价子系统代码库）。**出入库管理系统**（WMS 等）仍在开发中，其单据格式与流程**不在本文档权威范围内**，以 WMS 侧需求与实现为准。

本文档为 **kam-qianlu-doc-standards** SKILL 提供权威表头标准与命名规则，与项目 `docs/naming-and-terminology.md`、`shared/utils.py`、`server/services/order_import_service.py` 等保持一致。

---

## 一、文件名规范（命名规则）

| 单据类型 | 文件名格式 | 示例 |
|----------|------------|------|
| **报价单** | `报价单-XXX-日期.xlsx` 或 `报价单-XXX日期.xlsx`；日期支持 **YYYYMMDD** 或 **YYYY-MM-DD** | `报价单-ROLF001-20260304.xlsx`、`报价单-BOSCH20260209.xlsx` |
| **询价单** | `询价单-XXXXX-日期.xlsx`，日期为 **6 位 YYMMDD** 或 **8 位 YYYYMMDD** | `询价单-RFQ202603-20260304.xlsx` |
| **问价单** | `问价单-供货商名-日期.xlsx` | `问价单-北方通宝-20260305.xlsx` |
| **订货单** | `订货单-XXXX-日期.xlsx`，日期 **YYYYMMDD** 或 **YYYY-MM-DD** | `订货单-YUDA2301-20260305.xlsx` |
| **采购单** | `采购单-供货商名-单号.xlsx` | `采购单-北方通宝-QL0202.xlsx` |
| **采购单回传校对** | `校对-采购单-{供应商名或自由文本}.xlsx` | `校对-采购单-北方通宝.xlsx` |
| **订货单校对版导出** | `订货单-{订单号}-校对版.xlsx` | `订货单-YUDA2301-校对版.xlsx` |
| **订货单入库完整版导出** | `订货单入库版-{订单号}.xlsx` | `订货单入库版-YUDA2301.xlsx` |

- 扩展名均为 **.xlsx**，不区分大小写；系统仅支持 .xlsx。
- 日期中的 `-` 可有可无（如 20260304 或 2026-03-04 视单据类型支持情况而定）。

---

## 二、询价单（导入）

- **用途**：我方建立询价单时，可用 Excel 导入创建 rfq + rfq_item。
- **表头识别**：系统在前几行（通常前 5 行）查找**包含「品牌」或 "brand"** 的行作为表头行；表头不强制在第 1 行。
- **必填列**：**品牌**、**零件号**、**数量**（可为 0）。无价格列，价格由报价单回填。

| 标准列名（推荐） | 可识别的别名/变体 |
|-----------------|-------------------|
| 品牌 | 品牌、BRAND、Brand |
| 零件号 | 零件号、Part、Parts、Part No、Part No. |
| 数量 | 数量、QTY、Qty |

---

## 三、报价单（导入）

- **用途**：供应商针对询价单的报价结果，导入后存入 quotation + quotation_item。
- **表头识别**：前几行中含「品牌」或 "brand" 的行作为表头；`shared/utils.detect_columns` 按下列别名识别列。

| 标准列名（推荐） | 可识别的别名/变体 |
|-----------------|-------------------|
| 品牌 | 品牌、BRAND、Brand |
| 零件号 | 零件号、Part、Parts、Part No、Part No. |
| 替换号 | 替换号、变号、编号、中国、CN、China、Mann No |
| 中文名称 | 中文名称、中文名、名称 |
| 数量 | 数量、QTY、Qty |
| 报价含税 | 报价含税、含税报价、含税单价、价格、报价、Price（含子串） |
| MOQ | MOQ、moq |
| MPQ | MPQ、mpq、最小包装量 |

- **报价列规则**：数字→已报价；空→未报价；X/#N/A/非数字文本→无法报价（原文可进备注）。

---

## 四、问价单（导出给供应商）

- **用途**：从询价单按品牌/分组拆出，发给某一供货商填报价后回传。
- **表头（系统导出标准）**：第 1 行为说明（合并单元格），第 2 行为表头。

| 顺序 | 标准表头 |
|------|----------|
| 1 | 品牌 |
| 2 | 零件号 |
| 3 | 替换号 |
| 4 | 中文名称 |
| 5 | 数量 |
| 6 | 报价含税 |
| 7 | MOQ |
| 8 | MPQ |
| 9 | 备注 |

说明行文案（第 1 行）：`请填写中文名称，含税（人民币）单价，替换号码，此表格只用于询价不是最终订货单。`

---

## 五、回询单（导出给客户）

- **用途**：我方给上游客户的报价清单，由系统回询单导出。
- **表头（系统导出标准）**：英文表头。

| 顺序 | 标准表头 |
|------|----------|
| 1 | BRAND |
| 2 | PARTS |
| 3 | QTY |
| 4 | PRICE |
| 5 | MOQ |
| 6 | MPQ |
| 7 | Replace No |
| 8 | 价差比例 |

- **MOQ / MPQ**：来自当前行选用的报价明细（`quotation_item`）；未选用报价时为空。
- **价差比例**：回询单价相对选用报价明细单价的涨跌比例（辅助列，导出只读）。
- 若用户提供「回询单」Excel 用于核验，可对照上述列；**导入回询单**一般由系统内生成/编辑，不常从外部 Excel 导入，核验时可优先按「与导出格式一致」或「品牌、零件号、数量、单价」等关键列是否齐全、命名是否可识别为准。

---

## 六、订货单（导入）

- **用途**：上游客户发来的正式订单，导入时必选询价单，行与回询单按「品牌+零件号+客户单价」匹配。
- **必填列**：**品牌**、**零件号**、**价格（客户单价）**。缺一则整单拒绝导入。

| 标准列名（推荐） | 可识别的别名/变体 |
|-----------------|-------------------|
| 仓库 | 仓库、仓库名称、库房名、warehouse、ware house |
| 品牌 | 品牌、brand |
| 零件号 | 零件号、parts、part、part no、part no. |
| 替换号 | 替换号、replace no、cn no.、cn no、cn、变号、编号、中国、china、mann no |
| 货物名称/零件名称 | parts name、part name、零件名称、货物名称、名称、描述 |
| 数量/件数 | 数量、件数、qty |
| 单价 | 单价、货物单价、含税单价、价格、price |
| 目标价 | 目标价、target、target price、目标单价 |
| 金额 | 金额、总价、合计、sum、amount |
| 无效 | invalid、无效、作废、×、✓、✗ |

- **再导入**：订货单-校对版（第七节）导出的文件再次导入时，表头为英文（Warehouse, Brand, Parts, Replace No, Qty, Price, Target, MOQ, Invalid），与上述别名对应；Invalid 列 ×、✓、✗ 等识别为无效。

---

## 七、订货单（导出）

询价子系统对**当前选定订货单**提供两种 Excel 导出：**校对版**（便于客户/再导入）与**入库完整版**（便于仓库全量与替换号状态核对）。**导入**仍以第六节为准；再导入优先使用**校对版**格式（英文 9 列）。

### 7.1 校对版

- **用途**：校对后导出给客户/仓库，含有效无效状态与替换号；与订货单导入表头预设一致，便于再次导入识别。
- **文件名**：见第一节「订货单校对版导出」。
- **表头（系统导出标准）**：**英文表头**，共 **9 列**（不导出「货物名称」「金额」）。

| 顺序 | 标准表头 |
|------|----------|
| 1 | Warehouse |
| 2 | Brand |
| 3 | Parts |
| 4 | Replace No |
| 5 | Qty |
| 6 | Price |
| 7 | Target |
| 8 | MOQ |
| 9 | Invalid |

- **Invalid 列**：无效行填 **×**（U+00D7），有效行留空；无效行整行标红。导入时 ×、✓、✗、Yes 等均识别为无效。

### 7.2 入库完整版（入库版订单）

- **用途**：面向**入库/仓库**全量信息：含**货物名称、金额**等列；**替换号**按业务规则做**红/绿**等标注（未确认与已确认等，以系统导出为准），与校对版「仅 Invalid 行标红」的侧重点不同。
- **文件名**：见第一节「订货单入库完整版导出」（`订货单入库版-{订单号}.xlsx`）。
- **表头（系统导出标准）**：**英文表头**，共 **11 列**。

| 顺序 | 标准表头 |
|------|----------|
| 1 | Warehouse |
| 2 | Brand |
| 3 | Parts |
| 4 | Replace No |
| 5 | Parts Name |
| 6 | Qty |
| 7 | Price |
| 8 | Target |
| 9 | Sum |
| 10 | MOQ |
| 11 | Invalid |

- **与 7.1 差异**：校对版为 9 列、不含 Parts Name / Sum；入库完整版列更全，**一般不用于按校对版路径再导入**，以业务下载目的区分。

---

## 八、采购单（导出给供应商）

- **用途**：按供应商维度导出，发给下游供货商。
- **表头（系统导出标准）**：第 1 行为红色加粗提示语（合并单元格），第 2 行为表头，**中文**。

| 顺序 | 标准表头 |
|------|----------|
| 1 | 仓库 |
| 2 | 品牌 |
| 3 | 零件号 |
| 4 | 替换号 |
| 5 | 件数 |
| 6 | 含税单价 |
| 7 | MOQ |
| 8 | 报价日期 |
| 9 | 无效 |
| 10 | 备注 |

- **识别/解析**：导入或解析采购单（含回传校对）时，无效列支持识别「无效」「Invalid」「无效/Invalid」等写法。
- **订货单-校对版**导出表头为英文（见第七节），Invalid 列名即为 Invalid。
- 第 1 行提示语：`订单中的替换号客户已经接受，如果有新增请与我们确认，如订购未确认的替换号码，我司将拒绝付款`。  
无效、备注列导出时留空，供供应商标注。

---

## 九、采购单回传校对（导入）

- **用途**：将**供应商确认后**的采购单表格写回系统。典型流程：我方先从系统**导出**采购单（第八节）交给对方 → 对方在「无效」「替换号」「备注」等列标注无法接受或变更 → 将文件以约定命名回传 → **导入本接口**后，按品牌+零件号匹配订货行，**批量更新**该行是否有效、替换号、MOQ 等，使系统与线下沟通一致。
- **文件名**：`校对-采购单-{供应商名或自由文本}.xlsx`。
- **表头**：与采购单导出一致；识别时该列支持「无效」「Invalid」「无效/Invalid」等，其他需能识别「品牌」「零件号」「替换号」等；系统按品牌+零件号与订货行匹配。

---

## 十、可订状态（导入）

- **用途**：可订/不可订明细 Excel 导入 part_availability。
- **结构**：按 Sheet 名区分（如「原厂不可订」「原厂可订」「品牌不可订」「品牌可定」），列一般为：品牌、零件号、替换号、日期等，具体见项目 `shared/utils.parse_availability_workbook`。

---

## 十一、术语与流程文档（本 SKILL 目录内冗余）

本 SKILL 以**表头与文件名**为主；当用户问**业务术语**、**命名规范**、**业务流程**、**数据校验规则**时，引用或结合**本 SKILL 目录下**的以下副本作答，便于独立打包后无法访问项目路径时仍可对答。与项目内原文档同步维护。

| 文档 | 本 SKILL 内路径 | 内容摘要 |
|------|-----------------|----------|
| **命名与术语** | [naming-and-terminology.md](naming-and-terminology.md) | 单据与业务实体（询价单、问价单、报价单、回询单、订货单、采购单）定义；字段与 UI 标签统一（报价单名、零件号、替换号等）；文件名规范；易混点与历史歧义（报价单名≠零件号、统一用「替换号」「采购单」等）。 |
| **流程与规则** | [process-and-rules.md](process-and-rules.md) | 项目定位与业务模式；交易环节流程图（客户询价→供应商报价→回询单→订货单→采购单）；数据校验规则（报价单内同品同价、订货单行匹配回询单、订货行有效性、采购单回传 Invalid/替换号）；品牌归一化；回询单与订货单数据关系；替换号与可定性等。 |

- **使用方式**：用户问「询价单和报价单有什么区别」「订货单怎么和回询单匹配」「业务流程是什么」等，**直接打开上述同目录下的 naming-and-terminology.md 或 process-and-rules.md** 作答或概括；表头/文件名细节仍以本 REFERENCE **第一～十节**为准。

---

## 十二、报价对比（系统生成 Excel，无外部「导入模板」）

- **用途**：在询价子系统**报价对比**页生成分析用 Excel；**不参与**询价/报价/订货单的标准导入表头体系，仅说明文件名与数据范围，便于答疑。
- **基准单对比（原有）**：选择**基准报价单**，可选历史报价日期范围；与全库有效历史报价比低价，下载文件名形如 `{基准报价单号}-报价对比.xlsx`。**仅使用 `quotation.is_valid=1` 的有效报价单**参与历史侧比对。
- **品牌矩阵对比（按品牌）**：选择**品牌** + **报价单日期起止**；生成矩阵表——**行**为零件号，**列**为各供货商（最低价 + 报价来源）；下载文件名形如 `矩阵报价对比-{品牌}-{起}-{止}.xlsx`。数据源为**有效报价单**（`is_valid=1`）明细、已报价且含税价大于 0 的行；可与基准单对比**独立**使用。

---

*以上为**千路·询价管理系统**侧文件执行标准（出入库管理系统不在此列），与项目 `naming-and-terminology.md`、`process-and-rules.md` 及代码实现保持一致，供 SKILL 核验与整理表头、文件名及回答术语与流程时使用。第一～十节为单据表头与文件名；第十一节为术语与流程索引；第十二节为报价对比（系统生成）说明。*
