Files
Wyndham-RSVN-0918/docs/project/integrations/ohip-formal-cancellation-fit-ta-20260917.md
鲨鱼辣椒 bc71026246
Some checks failed
verify / booking-verify (push) Has been cancelled
完善酒店接口确认字段与回读核对并同步工作台最新改动
2026-09-18 15:38:52 +08:00

10 KiB
Raw Permalink Blame History

正式取消/类型转换接入与 FIT TA 查证

2026-09-18 新证据:官方数据字典已明确 TA 对应类型 TA_RECORD_LOCATOR 的外部参考号。这更新下文“externalReferences 无等价证据”的旧结论OHIP 对该特殊类型的写读支持仍待直接证据,正式守卫不变,无需先要求平台新增封装。

日期2026-09-17。此文覆盖之前“正式取消/转换尚未装配”的状态。本地代码接入不等于真实酒店已启用或验收;没有更新运行服务、办理现有任务、修改凭证权限或写入 Oracle。

当前可交付范围

业务 正式入口代码 当前限制
源 Allotment 取消 已接入 CANCEL_ALLOTMENT,查询 Block → 查关联客人 → 查允许的下一状态 → 更新状态 → 精确查回 部署须提供酒店真实取消规则;有关联客人或查询不完整时停止
FIT → GROUP 已接入 UPDATE 的类型识别;完整检查最终 GROUP 新建参数后,逐笔取消旧 FIT再创建 Block、保存房量并核验 需显式开启类型转换;真实环境尚未验收
GROUP → FIT 编排入口已有,但正式入口仍在任何查询/取消之前阻断 FIT TA 的真实写入、详情读取字段没有权威证据
同类型 GROUP 修改 仍走原 UPDATE只改已确认范围不要求新建用的 Rate/Note不取消重建 既有日期/房量策略仍须验证
FIT NEW / UPDATE 原守卫保留 同一 FIT TA 缺口,不因配置标志而放行

邮件 Excel 仍用于解析/原件查看;本流程不读写酒店 Attachments。

需要哪些接口和参数

沿用平台 0.11.0 已发布契约,无新增消费端公共 HTTP 入口。这里的 searchHotelReservations 是平台实际 Operation ID不能写成 searchReservations

用途 平台方法与路径 Oracle 参数/结果
找旧团队 POST /api/v1/blocks/searches (searchBlocks) hotelIdblockName=TouronlyPickupBlocks=false;完整分页后精确 getBlock
找旧 FIT POST /api/v1/reservations/searches (searchHotelReservations) taRecordLocatorList=[Tour]searchType=AnysimilaritySearch=false;完整分页后逐笔 getReservation
核实团队无关联客人 同一 Reservation 搜索 blockIdList=[BlockId];严格要求完整结果且零条,不能静默连带取消客人
下一状态 GET /api/v1/blocks/next-status (getNextBlockStatus) query currentStatus;返回必须包含配置的取消状态
取消团队 PUT /api/v1/blocks/{id}/status (putBlockStatus) verificationOnly=falsechangeBlockStatus 内 hotelId、Block id、currentBlockStatus、newBlockStatus、cancellationDetails.cancellationCode.codeHTTP 200
取消 FIT POST /api/v1/reservations/{id}/cancellations (postCancelReservation) verificationOnly=falsereason.code、单一 hotelId/Reservation idHTTP 201
新 GROUP postBlockgetBlockputBlockAllocationgetBlockRoomRateGrid 复用现有完整新建/房量/查询链,不另造简化新建入口

取消的成功依据是当前精确详情返回取消状态。写入结果未知时不重发详情仍未查实则停止新建。Block 取消不使用 override 或自动取消关联预订。

接入与恢复边界

  • OhipBookingRuntimeFactory 已按部署策略装配 OhipBookingChangeExecutionAdapter 和持久取消调用日志,使用现有确认、数据源、租约和 worker。
  • 首次类型转换把真实旧对象绑定与最终 NEW 准备检查点一起保存;不会留下只有酒店 scope、没有配置检查点的半成品。
  • 原绑定、配置摘要、目标 NEW 路由、取消原因/状态均受续办核验。每次取消前重验最终 NEW 参数及检查点;配置变化会停止。
  • 双类型搜索只排除精确详情已证明取消的历史对象。转换留下的旧记录不会阻挡同 Tour 后续普通修改;两种类型仍有当前对象时停止,交人工核对。未知/其他状态不擅自当不存在。
  • 单独源 Allotment 取消保留已取消对象查询,支持原确认的恢复与完成核验;输入不要求编造 Account、Rate 或房量。
  • 参数准备成功不能保证 Oracle 随后一定接受新建。取消已成功而新建失败时,保留已取消事实及同次确认的调用记录,由原续办处理,不能另造确认或自动恢复旧预订。
  • 默认仍为 Pending旧清单不自动开启取消/转换,配置也不授予应用权限。新增代码不迁移或重跑旧含附件任务。

2026-09-18 接续:已扩查全部 45 个 Property v1 模块,并补齐独立模拟参数;同类型 FIT 取消历史、Guest 准备顺序及无附件 GROUP UPDATE 的修复见最新交付。此处真实 FIT TA 未决结论不变。

FIT TA 的准确结论

业务含义已经明确:TA Record Locator 填 Tour CodeBlock Name。问题是 Oracle REST 的写入与详情读回位置,目前不能把“有同名搜索条件”当作已确认写入字段。

本轮重新验证 Oracle 官方仓库 HEAD 仍为 4bd129b455bc5e3ab0f900ac47983611e58659b4Property RSV 26.3.0.0,完整文件树未截断;再检查 RSV schema、两个官方 Property Postman 集合及 Data API 定义:

证据 能证明什么 不能证明什么
官方 RSV schemataRecordLocatorList 可以按 TA 搜索 未找到 Reservation 创建/修改/精确详情的对应属性或等价映射
官方 Property Postman工作流样例 可核实已有请求形状 两份全文未检出 taRecordLocator / TA Record Locator,不能给出 TA 写入样例
BookingsReservation GraphQL 报表层存在 TA 字段 不是 Property REST 写入或 getReservation 的字段证明
TA Record Locator 控制26.2 保护字段说明 页面输入/搜索受酒店控制,可被设为保护字段 不提供 REST JSON 路径

locators[].locatorText 在官方定义中是 Guest LocatorrecordLocator 搜索项是 GDS Record LocatorcustomReference 和通用 reservationIdList 尚无明确 TA 映射。2026-09-18 新数据字典证据已将 externalReferences 收窄为 TA_RECORD_LOCATOR 类型这一具体候选;其 REST 可写性、详情返回和保护行为仍待核实,不直接把候选或模拟字段填进正式请求。

结论是公开证据仍不足,并非认定 Oracle 永远不支持。 平台包好接口后,这个字段契约缺口仍需补齐;不能简单要求平台同事再做相同公开搜索。

后续操作由用户完成

本轮提供 取消配置模板,未替换任何运行清单。它是完整示例,包含占位值,不能原样启用。原 四流程模板 保持兼容。

  1. 启用取消前,酒店提供真实 Reservation 取消原因、Block 取消原因、Block 取消状态、允许的原状态;两种原因分别配置,不能默认相同。管理员核实本应用所需 blocks.read/writereservations.readFIT→GROUP 另需 reservations.write 及对应已发布操作。只启用 Block 取消时不必额外授予 FIT 取消权限。

  2. cancellationPolicy 保存上述值与核验记录 verificationRefCANCEL_ALLOTMENT route 允许单独取消。typeConversionsEnabled 默认 false完成目标 NEW/UPDATE 路由验证后才设 true。设置 true 仍不放开 GROUP→FIT。

  3. FIT 字段建议把以下问题交 Oracle 支持/接口负责人,要求新证据,而不是重复公开检索:

    请确认目标 OPERA Cloud 版本 Stay Details → TA Record Locator 的正式 OHIP 接口postReservation / putReservation 的准确 JSON Pointer、getReservation 的读回 Pointer 与必要 fetchInstructions若应使用其他接口请提供 Operation ID、请求/响应样例及版本依据。该值是旅行社 Tour Code不是 GDS Record Locator、Guest Locator 或普通 External Reference。还请说明 TA_RECORD_LOCATOR 与 Reservation Protection 控制对写入的影响。

    若手头已有 TA 有值的测试 FIT可先只读查询该 Reservation交付脱敏的字段结构与已知 TA 值用于定位返回字段;这只能补读回证据,仍须官方依据或受控测试证明写入。不得提交 Cookie、Token 或完整客人资料。

  4. 字段证据和真实配置齐备后,再由用户更新运行服务,在明确测试酒店/数据上验收。上传 EML、确认/续办、重启、数据准备和酒店修改均由用户操作。当前没有这些操作的完成记录。

本地验证

正式 Factory → Runtime → Worker → JDBC 日志 → localhost 酒店替身已覆盖单独取消、FIT→GROUP、GROUP→FIT 提前阻断、同类型普通修改、已取消旧记录过滤、配置/权限缺失、配置中途变化、关联客人/不完整查询/下一状态禁止、未知取消不重发、取消回执丢失后精确查询恢复、重启不重复新建。全部使用临时 H2 与合成数据,绝非真实酒店验收。

最终检查数量和日志见测试证据