# ARR 有效价读取:平台接口补充清单 **后续状态:已补齐。** 用户2026-09-16通知后,目录0.7.0提供GET getRateInfo及推荐POST searchRateInfo; 5笔测试预订/11次只读调用通过。见[发布验证](../../.project-docs/50-evidence/topics/2026-09-16-rate-info-publication.md)。 以下为补充前的历史需求;GET现已标记上游弃用,新接入优先POST,原文“未封装”不再代表当前状态。 2026-09-16。供平台开发讨论;本助手未向他人发送此文件,也没有修改平台或应用授权。 用户随后明确由其联系平台开发者补充getRateInfo,完成后通知本任务。 ARR 已在 OHIPSB02 通过 `searchHotelReservations` + `getReservation` 取得2026-09-15到店的139笔完整详情。 下一项需要验证的是**指定预订、指定日期的有效价**,不能直接使用搜索结果中的当前价格。 ## 推荐补充的一个只读操作 优先封装 Oracle RSV 的 **`getRateInfo`**: ```text 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](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](https://github.com/oracle/hospitality-api-docs/blob/dd631fbd5d0fce74a7dbdf96b43f07ce587211f2/rest-api-specs/property/v1/rsv.json):getRateInfo/searchRateInfo、rateInfo、searchRateInfoRequest。 - Oracle [Updating Reservations](https://docs.oracle.com/en/industries/hospitality/opera-cloud/25.5/ocsuh/t_managing_reservations_editing_reservation_stay_details.htm) 说明Effective Rate考虑加到房价的包价项目,支持区分rate/base与effective;不据此替代本酒店原报告验收。 - [139笔实测证据](../../.project-docs/50-evidence/topics/2026-09-16-arr-api-live-probe.md);[本轮语义追查](../../.project-docs/50-evidence/topics/2026-09-16-arr-api-semantics.md)。