Files
ARR-2.0-0918/integrations/ohip/real-source-handoff.md
T

117 lines
11 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 来源交付状态与最小依赖
2026-09-17。面向已有按钮任务的交接;本轮只读核对当前目录、接口定义、既有采集证据与处理器契约。
**真实 `adapter.adapt(VerifiedArchive) -> bytes` 和独立 `mapping_validator.validate(archive, bytes) -> None`
仍未完成,不能注入启用。** 没有增加一个只能永久拒绝或填充未知字段的占位实现,也没有把本机模拟组件改名为真实适配器。
**9/17后续纠正:**已有RSV原件并非只含Block身份。26笔的`blockIdList`另有`type=BlockCode`,
与搜索/到店日两层Block身份及代码一致;现已接入`source_fields/v2`、`source-preparation/v3`。
另外113笔缺整个Block对象,仍留缺口。94项范围测试及139笔独立离线对照通过,旧字段证据逐字节不变。
这26笔无需为代码额外查getBlock或增加权限;本进展不改变上面的完整真实来源交付状态。
见[typed BlockCode证据](../../.project-docs/50-evidence/topics/2026-09-17-arr-typed-block-code.md)。
**同日继续核对:**Oracle官方ROOM_CATEGORY_LABEL定义支持房型代码;139笔搜索/当前/到店日代码全部一致,
已接选择器v3、字段准备v4,无需查房型描述。98项范围测试与139笔独立离线比较通过,其他字段/旧facts不变。
包价22笔/30项含8笔双包价,组合显示仍待证;公司只有Group样本,不据此填公司。具体见
[房型与包价/公司范围核对](../../.project-docs/50-evidence/topics/2026-09-17-arr-room-type-and-package-scope.md)。
## 谁负责补齐,不需要用户逐项确认
用户询问清单是否需要人工确认,随后同意继续分清责任。本清单是开发阶段的技术核对,
不新增每次下载前的来源确认步骤;现有人工价格复核规则不变。**当前需要用户新做的业务决定为0项。**
已确认的单日日期、Resv.-GEN及内部备注、排除Trace、现有处理规则均沿用,不重复询问。
| 工作 | 当前状态 | 执行责任与完成条件 |
|---|---|---|
| 单日输入、采集归档、任务恢复、处理/入库/月报接线 | 代码已具备,隔离模拟已验证 | ARR开发维护;无需再确认日期或重做按钮 |
| 确认号/日期/人数/日价等字段的严格提取 | 已有取值器与原件验证;部分报表语义仍待核对 | ARR开发完成映射与独立原件校验,已有实现直接复用;不能把技术取值成功当作报表等价 |
| 完整姓名来源 | 独立补充代码已完成;上次已审计的特定对象仍503 | 平台按现有请求编号提供排查/恢复证据;ARR按原范围有限复验并补缺,不让用户解释姓名拼法 |
| 历史房号或明确未分房 | 上次日历响应缺room集合,无法判定原因 | 平台提供当次原始响应/查询条件/字段缺省语义;ARR按预订身份关联并验证,不预设是平台故障 |
| 公司、姓名显示、报表范围/行顺序、多备注及数量语义 | 现有跨酒店样本不足以证明完整规则 | 有测试环境权限的人员提供同源对照、报表配置或适用的权威规则;ARR负责解读、实现及差异定位 |
| 团队代码、套餐和房型标签 | 26笔typed团队代码、139笔三层一致房型代码已接入;113笔Block缺失及套餐多值显示仍待核对 | ARR复用已取得的原值,不新增当前Block/房型查询;历史房型冲突与其余缺省/显示证据分项解决。允许空值不能替代未知值,无需用户逐字段解释 |
| 最终真实适配器、独立校验器与按钮联调 | 尚未交付 | 仍由ARR开发完成,在新隔离实例验证;不交给用户人工制作或逐条勾选 |
只有对照显示两种处理确实会产生不同业务结果,且现有要求/原报告配置不能决定时,才向用户提出具体选择,
同时展示受影响的样例与结果。不能把“某字段尚无资料”直接转化为业务确认问题。
技术补充需求见[平台说明](arr-platform-evidence-request.md),用户已确认自行转交平台技术,当前等待回复。
补充资料可分项返回,能由适用的权威规则证明的部分无需再索要重复样本;未覆盖项如实保留。
## 已可复用的代码边界
- `arr_web.arr_download_runtime.CapturedARRSource`与`compose_arr_downloads`已经具备标准Web装配。
`arr_web.run.main(argv, arr_source=...)`是显式注入点,默认没有真实来源。
- 完整主体采用v2 `audit_arr_day.VerifiedArchive`,日期From=To=rate_date=D;姓名补充使用独立、固定主体pin的
`profile_supplement`链。它不重新采集预订/日价,也不会把姓名失败当作完整主体不存在。
- v3也可由现有执行器接收,但历史遇503的v3归档不完整,不能传给适配器当整日输入。
- `source_fields`是严格原始值选择器,`prepare_arr_source`是候选/缺口输出;两者没有通过报表业务映射验收。
- `arr_xml.serialize`与`validate_arr_xml.verify`负责明确行值到处理XML及反向完整比较。后者验证显式行值,
不证明这些行值来自正确的Oracle报表规则;不能直接充当实际来源映射验证器。
- 本机`LocalAPIAdapter/NativeBaselineValidator`依赖XML派生的`__localARRReport`字段,只用于已完成的模拟链。
## 当前证据能支持什么
下表的数量来自已经固定摘要的OHIPSB02 / 2026-09-15历史v2归档,本轮没有重新查询酒店。
139条主体、851个文件,pin `08171eca8caa4a8e85010680865983364bdf72ea5646c1932d74606ff001119f`。
| 来源项 | 已有可验证的技术事实 | 真实转换剩余依赖 |
|---|---|---|
| Confirmation、到/离店日期 | 139笔可按类型和明确日期取值 | 保留原ID关联,不能换成外部引用 |
| 成人、儿童、房数 | 139笔入住层/到店日段人数一致,房数有明确值 | 共享/组合房的报表行粒度及数量规则 |
| 有效价 | 134笔有明确日价和一致币种;另3笔隐藏、2笔缺详情币种 | 隐藏/缺失如何对应报告,不能以base或0替换 |
| 费率代码 | 115笔到店日段有代码、24笔缺失 | 缺代码必须保留为缺口,不能按非白名单排除 |
| FULL_NAME | 5个历史成功摘要及边界样本证明了部分主客身份/姓名原文关联 | 完整姓名来源和报告显示对应;不得按姓/名自行拼接补齐 |
| DISP_ROOM_NO | 73笔搜索/当前/到店日三层一致;66笔缺至少一层 | 一致不证明历史报告规则;需要可绑定预订的历史房号或明确未分房证据 |
| COMPANY_NAME | 当前样本只有Group关联,没有Company/TravelAgent/Source的实际角色覆盖 | 报告的角色选择、前缀及多角色组合;公司直接参与定价 |
| Resv.-GEN备注 | 已能保留GEN/RESERVATION的内部和外部文本 | 多备注的报告顺序关系;第一条非空全文影响Group Code |
| Trace | 用户明确不需要 | 真实接口输出空列表,无需再取证用户选项 |
| BLOCK_CODE | 26笔明确typed BlockCode与Block ID在搜索/到店日两层一致;已取值 | 113笔缺整个对象仍需明确无Block依据;报表同源显示待验收,已取得的26笔不需额外getBlock |
| ROOM_CATEGORY_LABEL | Oracle字段对应Room Type;139笔搜索/当前/到店日代码三层一致,已取值 | 对三层冲突/缺失保持缺口,不用描述或计价房型替换;无需为当前样本新增字典查询 |
| PRODUCTS | 22笔包价集合/30项,8笔双包价;所有计划覆盖到店日 | 范围/拼接/顺序仍待证,现有样本无预订日期与消费日期不同的覆盖;缺集合不填空 |
| 行范围/顺序 | 当前查询完整性和前后搜索复查通过 | ALL语义、重复组行粒度/物理顺序仍未确认,不能选任意赢家 |
**处理器成功样本限制:**115个已取得费率代码均不在当前酒店白名单,另外24条缺费率。
即使以后补齐显示字段,这份历史沙箱数据仍不是成功入库/月报的正例。应验证它应有的业务失败路径,
不修改白名单、伪造代码、删除缺失行或挪用57106的行值。成功链路继续以已验收的隔离模拟样本覆盖。
这与来源适配是否正确是两个不同结论。
## 这轮公开目录核对
CLI0.5.0、平台目录0.9.0/158项;4次公开目录读取,0次酒店业务请求,0次凭据读取、授权或部署。
| Operation ID | 平台路径 | 所属能力组 | 当前作用/限制 |
|---|---|---|---|
| getBlock | GET `/api/v1/blocks/{blockID}` | blocks.read | 只在缺typed BlockCode且有可绑定ID时考虑;当前26笔无需调用。不能把Block ID或blockName当成代码 |
| getRoomTypeInfo | GET `/api/v1/room-types/{roomTypeCode}` | hotel.read | 当前139笔房型代码已可取值,不需要为取得描述而调用或扩权;描述不替代代码 |
| getPackage | GET `/api/v1/reservations/{reservationID}/packages` | reservations.read | 可取包价资料;拼接与显示规则仍需依据 |
这些接口已经发布,**目前不需要让平台重复新增同名接口**。本轮查询的成功只指接口定义读取成功。
`getBlock`返回契约使用通用`OHIPDocument`/`OracleDocument`,没有因此取得真实Block数据或关闭显示规则。
记录的ARR授权为profiles.read+reservations.read;blocks.read和hotel.read不在该记录中。本轮不增加权限,
也不为尚未确认的字段使用方式提前扩大授权。
目录请求编号:getBlock `3952740a-34bb-4215-ae9d-b13cdb42f1e4`;getRoomTypeInfo
`3470c5c1-7968-482e-94b2-28cbeba667af`;getPackage `a8c2f396-2059-4b8e-adbe-02f0dcbf474f`。
公开原件保存在`.planning/arr-real-source-adapter-20260917/`。
[Oracle固定版本Block API定义](https://github.com/oracle/hospitality-api-docs/blob/dd631fbd5d0fce74a7dbdf96b43f07ce587211f2/rest-api-specs/property/v1/blk.json)
提供业务结构定义,不能替代当前平台实际返回。[Oracle报表配置说明](https://docs.oracle.com/cd/F34189_01/doc.201/f42091/t_reports_configuring_reports.htm)
说明同一RES_DETAIL可以配置不同过滤、排序及列选择;公开说明没有给出本酒店实际配置的完整API映射。
## 最小外部材料与下一步
优先取得**同一测试环境、同一酒店、同一日期的一组可关联对照**:固定报表参数下的原ARR行/顺序,
加这些预订对应的接口原始响应。至少覆盖公司角色、主客显示名、已退房/换房或明确未分房、
以及会影响去重结果的同房到店重复组;多条GEN备注应保留原顺序。这可以由有该测试环境访问权限的
平台同事提供,或由权威字段/显示规则说明替代可明确证明的部分。当前用户不能访问OHIPSB02,
**不再要求用户重导57106文件或重复确认Resv.-GEN,也不要求OHIPSB02与57106逐行相等**。
姓名503沿用[已有审计编号](platform-recovery-check-20260917.md)定位;收到修复/新数据证据后,先有限复验,
再独立补缺姓名。房号200缺字段仍是数据/查询覆盖待核查,不自动归为平台故障。
本轮没有再次试探同一503,也没有把等待平台作为重复增加框架/测试的理由。
材料到位后,先确定逐字段来源与记录规则,写入版本化真实适配器和**另一路直接读原始响应**的验证器;
验证器不能依赖转换器输出的中间行作为答案。然后在新建临时实例中验证预期成功/失败及未知提交恢复,
再把已验收的两个组件和同一adapter_contract交给CapturedARRSource。真实启用/部署另行处理。
**8874是用户录制实例,本轮未访问、改动、重启、清理、提交测试或恢复其数据。**