Files
ARR-2.0-0918/ARR_XML_RAW_FIELDS.md
T

81 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ARR XML 加工前字段清单
整理日期:2026-09-18
本文按当前项目的 XML 上传处理器整理:去掉后续不使用的字段,保留业务处理需要的原始数据维度。此处只讨论字段取舍,全部预订行仍应保留,尚未做费率白名单筛选、去重、渠道归类、价格匹配和金额计算。
## 1. 保留的 16 个业务字段
每个 XML `G_RESERVATION` 节点对应一条来源记录。
| 序号 | 数据维度 | XML 原字段 | 后续处理器中的字段名 |
|---|---|---|---|
| 1 | 团队 Block 代码 | `BLOCK_CODE` | `BLOCK_CODE` |
| 2 | 成人数 | `ADULTS` | `ADULTS` |
| 3 | 儿童数 | `CF_CHILDREN` | `CHILDREN` |
| 4 | 公司/旅行社名称 | `COMPANY_NAME` | `COMPANY_NAME` |
| 5 | 预订确认号 | `CONFIRMATION_NO` | `CONFIRMATION_NO` |
| 6 | 房号 | `DISP_ROOM_NO` | `DISP_ROOM_NO` |
| 7 | 原报表有效房价 | `EFFECTIVE_RATE_AMOUNT` | `EFFECTIVE_RATE_AMOUNT` |
| 8 | 住客姓名 | `FULL_NAME` | `FULL_NAME` |
| 9 | 预订备注 | `RES_COMMENT` | `RES_COMMENT` |
| 10 | 跟进备注/Trace | `TRACE_TEXT` | `TRACE_TEXT` |
| 11 | 房间数 | `NO_OF_ROOMS` | `NO_OF_ROOMS` |
| 12 | 套餐/附加产品 | `PRODUCTS` | `PRODUCTS` |
| 13 | 费率代码 | `RATE_CODE` | `RATE_CODE` |
| 14 | 房型显示值 | `ROOM_CATEGORY_LABEL` | `ROOM_CATEGORY_LABEL` |
| 15 | 入住日期 | `TRUNC_BEGIN` | `ARRIVAL` |
| 16 | 离店日期 | `TRUNC_END` | `DEPARTURE` |
“保留”表示保留该数据维度,不表示所有字段都必须有值。当前处理器允许 `BLOCK_CODE`、`PRODUCTS`、`ROOM_CATEGORY_LABEL`、`RES_COMMENT` 和 `TRACE_TEXT` 为空,其他字段按现有业务校验规则处理。
`BLOCK_CODE` 与从预订备注提取的团号匹配键是不同字段,不能互相替代。
## 2. 同时保留的校验与追溯信息
以下信息不计入上面的 16 个业务字段。
| 信息 | 来源/保留方式 | 用途 |
|---|---|---|
| 报表分组日期 | 原样保留 `GROUPBY1_SORT_COL` 和 `GROUPBY1_COL`;两者同时存在时须一致 | 校验整份报表的业务日期及记录入住日期 |
| 原始行顺序 | 保留各预订节点在 XML 中的顺序,可另记从 1 开始的来源序号 | 去重时确定保留哪条记录,并追溯来源 |
| 文件身份 | 保留原文件名、原始字节大小和 SHA-256 | 核对输入原件及处理结果的来源 |
原始 XML 文件继续完整保存。字段精简只作用于提取出来的数据,不覆盖或重写原件。
## 3. 这一层不包含的加工结果
| 后续生成的字段/信息 | 产生方式 |
|---|---|
| 间夜数 `NIGHTS` | 离店日期减入住日期 |
| 结算单价 `REAL PRICE` | 按现有定价规则或人工价格复核确定 |
| 总金额 `TOTAL PRICE` | `REAL PRICE × NO_OF_ROOMS × NIGHTS` |
| 渠道归类 | 按业务规则识别 |
| 公司匹配键 | 从公司名称规范化得到 |
| 团号匹配键 | 从预订备注规范化得到 |
| 标准化费率代码 | 对原始费率代码去除首尾空白并转为大写 |
| 筛选、重复、校验及定价状态 | 执行业务处理后产生 |
## 4. 备注和 Trace 的保留方式
预订备注与 Trace 都可能有多条。若需要一份真正尚未加工的字段数据,应保留原始列表及顺序,不在字段提取阶段合并或只取一条。
XML 中相对于 `G_RESERVATION` 的来源路径为:
- 预订备注:`LIST_G_COMMENT_RESV_NAME_ID/G_COMMENT_RESV_NAME_ID/RES_COMMENT`
- Trace:`LIST_G_DEPT_ID/G_DEPT_ID/TRACE_TEXT`
当前手工 XML 处理器在加工时,对两者分别取第一条非空内容。手工上传链仍保留可空的 `TRACE_TEXT`;已约定的自动采集流程不获取 Trace,该场景可以按其余 **15 个业务字段**准备输入,并保持现有兼容结构。
## 5. 与当前实现的关系
这份文档是原始字段清单,不表示系统已经单独保存了一张完全未加工的中间表。当前处理器在字段提取时已同步执行部分类型转换、标准化和间夜计算;解析工作副本也会按已实现的规则忽略表情,原始文件字节保持不变。
本次只整理文档,没有修改程序、源文件或现有业务规则。
## 6. 依据
- [XML 字段契约](arr-opera-daily-ingest/references/field-contracts.md)
- [处理器实现:source_record / classify_source_records](arr-opera-daily-ingest/scripts/process_daily.py)
- [ARR 源报表下载要求及 Trace 范围](.project-docs/40-domain/arr-source-report-contract.md)