Files
ARR-2.0-0918/integrations/ohip/rate-info-platform-request.md
T

7.7 KiB
Raw Blame History

ARR 有效价读取:平台接口补充清单

后续状态:已补齐。 用户2026-09-16通知后,目录0.7.0提供GET getRateInfo及推荐POST searchRateInfo; 5笔测试预订/11次只读调用通过。见发布验证。 以下为补充前的历史需求;GET现已标记上游弃用,新接入优先POST,原文“未封装”不再代表当前状态。

2026-09-16。供平台开发讨论;本助手未向他人发送此文件,也没有修改平台或应用授权。 用户随后明确由其联系平台开发者补充getRateInfo,完成后通知本任务。

ARR 已在 OHIPSB02 通过 searchHotelReservations + getReservation 取得2026-09-15到店的139笔完整详情。 下一项需要验证的是指定预订、指定日期的有效价,不能直接使用搜索结果中的当前价格。

推荐补充的一个只读操作

优先封装 Oracle RSV 的 getRateInfo:

GET /rsv/v1/hotels/{hotelId}/reservations/rateInfo

这是 Oracle 路径,不是已经存在的 Edge 路径。平台应自行确定固定包装路由,并在catalog/OpenAPI公布Operation ID、 参数白名单、响应封装、能力组和重试规则。ARR 不会绕过 Edge 直接调用 Oracle,也不会猜测平台路由。

Oracle description 指明读取预订费率资料,并限制时间跨度21天;#/definitions/rateInfo 包含:

Oracle响应路径 规范含义与ARR用途
detail.totalRateAmount 指定预订及日期的Effective Rate;是XML EFFECTIVE_RATE_AMOUNT 的直接候选,仍需同源样本验收
detail.totalPackageAmount 指定预订/日期的包价合计,用于解释价格差异
detail.totalTaxAmount 税额合计,核对税口径
detail.revenue 金额、税、币种等明细,按totalType解析;不凭字段名推断税内/税外
detail.packages[] 包价金额细项
detail.rateSuppressed 价格隐藏标记;不得将隐藏或缺失的金额填0后继续
warnings 业务警告,不能只看HTTP状态

如果 Edge 继续使用已知的 OHIPDocument 包装,上述路径将位于 data.detail.*;新接口未发布前这只是预期包装方式。 规范另有 searchRateInfo,POST /rsv/v1/hotels/{hotelId}/reservations/rateInfo/searches,返回同一个rateInfo结构。 目前只需选一项作为最小验证入口,不要求同时封装GET和POST。

最小验证请求

从本批搜索返回的内部Reservation ID选样本,不使用Confirmation No。先测试以下字段组合:

query 值 依据/限制
id <内部Reservation ID> Oracle查询参数定义的对象ID;必须验证确实按该预订读取
type Reservation 按已知预订身份类型构造的候选,参数本身是无枚举字符串;需平台实测
summaryInfo false 请求detail,而不是住宿总价summary
detailDate 2026-09-15 规范明确详细结果需要日期,固定为待处理到店日

以上参数存在且类型已离线核对,尚未证明这一最小组合在目标Oracle环境足够。若还需criteriaStartDate/EndDate, 应依据被查预订及请求日期补足、验证边界并遵守21天限制,不能默认为整段入住只返回一个价。

不要为了让调用通过而覆写ratePlanCode、roomType、adults/children,或使用新的报价条件替代已存预订数据。 currencyCode也是可选参数,首轮不主动转换货币;必须记录实际返回的币种依据,再与原报表核对。

可机读示例及来源标识见 rate-info-oracle-examples.json。其中没有凭证或真实预订ID。

为什么现在需要它

  • 当前139笔详情、396个费率项均未返回规范中的effectiveRate。单独取RateInfoDetails/DailySummary仍未补齐。
  • 9笔搜索rateAmount不同于到店日base;这9笔的搜索价全部匹配2026-09-16费率,而到店日为2026-09-15。 这证明本批搜索摘要不能直接用作昨日价格,不表示已经证明所有预订都按系统今天取价。
  • 另7笔详情total与base不同;其差额全部等于2026-09-15的computedResvPrice包价合计,均是独立列示的包价样本。 22笔有包价的记录中还存在不同addToRate/printSeparateLine组合,不能简单把所有包价都加一次。
  • 因此优先读取Oracle明确提供的“预订+日期→有效价”,再验证报告对应关系;不在ARR里猜测税/包价/折扣算法。

这些差异来自现有私有原件的本地分析,未新增或修改任何预订。金额正文、客人和公司名不进入此清单。

平台验收应回传什么

  1. 新的catalog/OpenAPI条目:固定Operation ID/Edge路由、query或body字段及类型、能力组、同步只读语义、限流/重试行为。
  2. 目标测试酒店中已存预订的日期详情响应,记录request ID、酒店、查询身份和detailDate;原始内容按私有资料交付。
  3. 优先覆盖九笔跨日变价、七笔独立列示包价、addToRate组合、普通无包价,以及有适用样本时的折扣/税/共享/多房。 样本可按ARR私有索引定位,不能只用一个没有包价的成功请求代表全部口径。
  4. 证明summaryInfo=false得到detail而非summary;缺价、rateSuppressed、无效ID/日期、超过21天和业务警告须有明确处理。
  5. 核对这是读取已存预订价格的操作。不要将validateRateInfo、Refresh Rates、预订修改或重新报价写入流程混进只读接口。

平台补齐后,ARR仍需与同环境、同酒店、同预订/日期的原报告做字段比对,才可选作生产来源。 如果该API返回的Effective Rate不等于原XML列,保留差异并查清报表口径,不静默改财务定价。

其余接口取舍

操作 本轮结论
searchHotelReservations / getReservation 保留现有主干,已验证一日完整候选及详情获取
getRateInfo(或searchRateInfo二选一) 本次提出的平台新增只读封装候选;目录未提供,无法由ARR自行授权出一个不存在的操作
getBlock 9/17原件复查纠正:26笔除了Block ID,还在blockIdList中返回typed BlockCode,两层一致;已可取值,无需为这些记录补查或扩大blocks.read授权
getProfile 暂无新增依据。详情已经有角色和名字结构,本批仅有Group角色;再读同一Group Profile不能证明Company/TravelAgent/Source的报告优先级
财务账单、住宿日汇总、费率计划配置 不用这些结果替换固定ARR计价,也不将配置报价当成已存预订的指定日有效价

报告的状态/空ETA/顺序仍是业务等价验证项。这里请求的是具体读接口,不是新的页面自动化或原生XML导出工程。

来源与当前状态

  • 2026-09-16本轮CLI回读:catalog0.6.0/111操作,getRateInfo、searchRateInfo均不存在;request ID f90ce73e-eb4d-4168-b5cb-5274b9da6d49。
  • Oracle固定提交的 rsv.json:getRateInfo/searchRateInfo、rateInfo、searchRateInfoRequest。
  • Oracle Updating Reservations 说明Effective Rate考虑加到房价的包价项目,支持区分rate/base与effective;不据此替代本酒店原报告验收。
  • 139笔实测证据;本轮语义追查。