Files

6.5 KiB
Raw Permalink Blame History

按日期取得 ARR 业务数据

2026-09-18。字段接口连接已实现,输入一个到店日期,输出完整预订的 15 个业务字段及关联资料。 自动入口不取 Trace,不生成 XML,不提前执行白名单、去重、定价或入库。

当前8接口的实际路径、参数、来源与条件见传参确认单,供用户逐项确认。

本次按用户要求跳过实际沙箱订单验证。41 项新增本机检查及相关回归共 150 项通过, 其中包括真实的本机 HTTP 通信;没有读取平台凭据、查询沙箱订单、修改应用权限或运行实例。 6 笔模拟订单直接交给既有定价函数,结果符合原有预期,总额为 18200。这不是酒店营收或真实接口验收。

提供了什么

  • 按用户明确选择的日期,分页取得到店预订,逐笔补齐需要的资料,完成后再次核对预订列表。
  • 公司、客人、房价、团队、套餐和房间历史按预订或档案身份关联,原始响应单独保存。
  • 备注保留原文、内部备注、多条内容及顺序;套餐保留每一项及其适用日期等资料。
  • 正常为空、资料缺失、存在多个候选和查询失败分别记录。
  • 相同任务编号完成后直接复用原结果;查询失败后,同编号重试会建立新的取数尝试并保留之前的记录。
  • 不读取凭据或访问网络直到调用方明确发起一次尚未完成的取数。

可调用入口

实现:arr_data.py 的 ARRDataSource.fetch(report_date, request_id)。 查询封装:data_client.py。对外地址仍固定为既有 OHIP 平台,酒店参数只用于核对服务端已配置的酒店。

from pathlib import Path
from integrations.ohip.arr_data import ARRDataSource

source = ARRDataSource(
    root=Path("/absolute/private/arr-data"),
    hotel_id="OHIPSB02",
    credential_file=Path("/absolute/private/application-credential.json"),
)
result = source.fetch(report_date="2026-09-15", request_id="0123456789abcdef0123456789abcdef")

也可从项目根目录调用(以下为使用示例,本次没有执行):

.venv/bin/python -m integrations.ohip.arr_data \
  --report-date 2026-09-15 \
  --request-id 0123456789abcdef0123456789abcdef \
  --hotel-id OHIPSB02 \
  --credential-file /absolute/private/application-credential.json \
  --output-root /absolute/private/arr-data

输出目录位于仓库外,父目录须已经存在,目录权限 0700、文件 0600。 沿用现有应用凭据格式和身份检查。不同日期或取数范围不能复用同一个任务编号。 需要重新获取已完成任务的最新数据时,使用新编号;缺字段的已完成快照也不会被静默覆盖。 命令只打印状态、数量和文件位置,不打印客人、订单、备注、房号或金额。

已连接的查询

用途 平台操作 调用时机
当日预订列表 searchHotelReservations 分页查询,取完后再次核对
预订详情 getReservation 每笔预订;明确排除 Traces 请求
指定日有效价 searchRateInfo 每笔预订、用户所选日期
主客完整姓名 searchProfiles 已关联主客的精确档案编号,重复档案复用
档案详情 getProfile 关联公司名称或主客姓名组成资料未嵌入预订时补查
团队代码 getBlock 已有关联团队编号,但未返回代码时补查
房号及换房资料 getRoomCalendar 预订资料不能确定房号时,分页查找同一笔预订
套餐资料 getPackage 预订已提供套餐代码,但未提供完整适用资料时补查

上述均为只读操作。已有预订和档案授权覆盖多数查询;团队详情查询另需 blocks.read。 本次未修改现有应用授权;若该补查无权限,结果保留为查询失败,不伪装成没有团队。 现有 integration.json 的历史授权记录没有被自动扩大。

查询依据是平台 0.11.0 接口目录和完整接口说明;getProfile 返回的 profileIdList/profileDetails, 以及 getBlock 返回的 blocks.blockInfo[].block,另按 Oracle 固定版本接口说明核对, 没有从模拟服务反推实际接口结构。

返回的数据

result 包含 status、collection_complete、input_complete、记录数、各字段状态数量、 data_path 和摘要。对应的私有 arr-data.json 使用 arr-ohip-data/v1,每笔记录包含:

  • 原始顺序、预订身份。
  • 字段名到 {state, value, reason?} 的对应关系,恰好包含字段清单中除 Trace 外的 15 项。
  • 各关联公司及角色、币种、套餐资料、必要时的房间历史。
  • 此记录所用原始响应的文件引用。

state 为 available(有值)、empty(明确为空)、missing(未取得)、 ambiguous(多个候选)、failed(查询失败)。金额保留精确十进制文字,人数和房间数为整数; 备注是有序文字列表,套餐是有序资料列表,不在取数时拼成一个显示字符串。 source_kind 区分固定平台连接和注入的测试连接,并固定到任务身份;本机样本不能按同一任务编号改称平台数据。

collected 表示本入口已取得完整字段;collected_with_gaps 表示预订列表已取完,但存在空必填字段、 缺资料或多个候选;failed 表示查询或完整性检查失败。命令退出码分别为 0、2、1。 这些状态均不是日报生成或财务入库成功;finance_ready 固定为 false。

公司/旅行社有多个不同名称时保留候选,不擅自定优先级;Group 或 Source 不自动当作公司。 房号只有在既有来源一致,或所选日期的已完整取得历史中只有一个明确房号时才提供单值。 换房存在冲突、历史日期不完整、房间历史只返回页数信息时保留问题。 隐藏价格、缺失价格、错误币种不会转成零或以基础价替换。

与页面及后续处理的关系

已新增 DirectARRExecutor / DirectARRSource,直接消费本页的数据并衔接固定处理、独立核对、 缺价复核、Finance原子提交和既有月报。原始数据以 source_data/ohip_json/source.json 保存, 结果为5.0;原XML结果仍为4.0。CapturedARRExecutor继续保留给历史XML模式。 页面及启用说明见直接数据入口。 开发与本机模拟检查已完成,本轮未查询实际沙箱订单、未读取平台凭据、未扩大权限或启用正式环境。