Files
ARR-2.0-0918/.project-docs/40-domain/arr-source-report-contract.md
T

12 KiB
Raw Blame History

ARR 源报表下载要求

2026-09-18方向更新:用户明确保留人工XML入口,自动入口改为按日期查询OHIP业务数据、直接按相同业务规则处理, 不再以取得或重建XML为前提。当前15字段取数程序已完成本机检查,按用户要求未验证实际订单; 参见字段对应和数据入口。 本文件的原生报表/XML显示约定保留为人工入口与历史背景;单日输入、字段含义和既有业务规则继续适用。

状态:用户明确提供的业务要求,2026-09-16。描述 Opera 中应取得的源报表及内容,不把界面点击顺序定义为接口调用顺序。 接口实现及定时调度尚未完成;本文件不是已运行下载任务的证明。

用户随后再次明确:页面步骤仅用于说明业务筛选和数据要素,应去平台查找对应接口,不采用模拟点击下载。 XML为手工样本与现有处理入口格式,不构成“必须存在原生报表下载API才可继续研究”的限制。

当前沙箱与验收边界

2026-09-17用户再次强调当前是测试沙箱OHIPSB02。酒店57106的手工XML是目标报表参考, 不能要求沙箱返回与正式酒店相同的客人、房间或历史记录。应分开记录接口调用结果、响应字段覆盖和业务样本覆盖。 房间日历HTTP200但缺room集合只证明这次没有取得该数据,不足以判定平台故障,也不等于已证明空房间历史; 可能涉及沙箱数据、查询条件或接口处理,根因未定。503则仍是实际调用失败。 缺少某种沙箱业务样本不应阻断其他接口开发与合成端到端测试;同源真实报表等价留待有适当数据时验收。 合成/沙箱链路测试与完整实际ARR输出分别标识,不能提前宣布用户的完整ARR按钮里程碑已达成。

报表与参数

界面入口为 Report → Manage Report,使用 Report Name=ARR 查找,选择 Report=Arrivals: Detailed,编辑参数。 ARR 按用户提供的查找值记录;它不是已经核实的 API 报表实例 ID。 Oracle 官方将该报表的内部名称标为 res_detail,与本项目 XML 根 RES_DETAIL 对应。

操作要素 用户指定值
Report Name ARR
Report Arrivals: Detailed
Reservations ALL Reservations
Room Assignment ALL Reservations
From Date 由上游系统传入明确日期;当前业务规则为 T-1,T 为今日日期
To Date 由上游系统传入明确日期;当前业务规则为 T-1,T 为今日日期
Room Type ALL CODES
Membership Type ALL CODES
Preferences ALL CODES
Rate Code ALL CODES
Inventory Items ALL CODES
Source Code ALL CODES
Market Code ALL CODES
Arrival Time - From 00:00
Arrival Time - To 23:59
Display / Room Number 勾选
Display / Notes 勾选
Include Internal Notes 勾选
Note Types Resv. - GEN
Traces 用户随后明确“不需要”;本次接口来源输出不包含Trace内容
Download As XML
最终动作 下载所选报表的 XML 文件

内容边界

  • 用户随后提供res_detail_71054429.XML并明确确认文件准确、页面Note Types选择Resv. - GEN。 新文件与前份res_detail_71050118.XML逐字节相同;本样本XML内58条备注标为RES_COMMENT_TYPE=CAS、 RES_COMMENT_DESCRIPTION=GENERAL。这是页面标签与导出内部字段在该确认样本中的对应事实, 不能据此怀疑用户选择、要求再次确认,或将其他环境API筛选改成CAS。用户业务范围继续为Resv.-GEN及其内部备注; 同源API对应由接口实现核验。确认记录。

  • 一次取得前一个日历日的到店明细,起止日期相同;不能解释为滚动过去 24 小时、住宿日汇总或查询当天预订。

  • 用户补充明确:From Date、To Date 由上游系统传给本流程。上游负责按其“今日日期”计算 T-1 并传入明确日期; ARR 采集/适配程序直接使用收到的值,不自行读取当前日期、减一天或按本机/酒店时区重新计算。 这替代此前“拟由 ARR 按 Asia/Bangkok 计算自然日”的实现假设,也不能将输入改为 Opera 营业日。

  • 当前仍为单日任务:两日期必须存在、为有效日期且相同,随后原样映射为 arrivalStartDate、arrivalEndDate, 同一日用于价格查询 detailDate。缺少或不一致时拒绝本次单日任务,不补默认昨日或擅自选其中一天; 不用执行时的今日日期反向限制已经传入的日期,以免延迟执行或重试时改动来源范围。

  • 用户本次明确统一 From Date = To Date = 有效价查询日期 = 2026-09-15。该日期是本次输入,不是永久写死的运行规则。

  • 批次固定系统传入日期,分页、详情、日价、归档和重试保持一致。v2采集入口显式接收必填的 from_date/to_date/rate_date(CLI为 --from-date/--to-date/--rate-date),校验三者有效且相等。 v1兼容入口仍使用必填 arrival_date;后台下载执行器的生产接线尚未完成。

  • 用户指定的是报表的 ALL Reservations 原有语义。取消、No-show、已到店、未到店及空 ETA 在此报表中的 实际纳入规则须由报表契约/样本核实,不能直接假定对应 API 的所有状态枚举或默认搜索。

  • Room Assignment 保持 ALL,不主动缩为“仅已分房”;七个 ALL CODES 选项均不增加业务子集筛选。

  • 源报表 Rate Code=ALL;ARR 当前处理器的费率白名单在接收完整源文件后执行,不提前替代源报表选择条件。

  • Notes 仅选择 Resv. - GEN,同时包含该范围的内部备注;“包含内部”不表示“仅内部”或“所有备注类型”。

  • 房号必须在所选报表输出中显示;此选项不等于要求源报表只包含有房号的预订。

  • 用户随后明确“Trace不需要”:接口来源适配生成的SourceRow.traces应为明确空元组,保持兼容XML结构但不输出Trace内容; 不再要求用户提供Trace部门、日期或解决状态。已有原生XML中的31条Trace是历史输入事实,不需重导出;通用序列化器及 人工XML处理器仍如实保留/读取各自输入,不因此重写历史原件或更改人工上传规则。既有v2档案含Traces fetch, 保留其固定契约用于回放;未来采集若移除该fetch,须另行版本化,不修改旧归档或伪称它们未取Trace。

  • 用户对“Sort Order”未理解,未提供排序选项;不能把此答复当成房号升序或任意顺序的许可。已解释为记录排列方式。 当前确认样本没有房号+到店日重复组,排序不改变其去重赢家;不向用户重复索要无法说明用途的配置。 后续若重复记录的不同内容使顺序影响结果,应展示具体业务差异再核对,不能靠静默删行或自选优先级解决。

  • 用户未指定其他 Display 选项、排序/分组、定时执行时点、历史补跑和空日策略,不自行把它们 声称为用户确认的值。接口实现须保留与原报表等价的行顺序,因为现有处理器去重保留源顺序第一条。

与现有处理链的衔接

手动 Web 日期入口(2026-09-16 新增)

用户确认 Daily Report 的 Upload ARR.XML 左侧增加自动下载卡片,操作员只能选一天。所选日期 D 明确传给 下游:From Date=D、To Date=D;既不是日期区间,也不固定覆盖用户选择为 T-1。页面初始建议昨天、可修改, 仅属于表单预填;提交必须有明确有效日期,下载执行与重试不自行推算或补默认值。 Web 卡片/API/任务边界已在本地实现,真实来源执行器仍未接入;接入说明。 其他上游系统仍按前文契约提供两个明确日期,本入口没有扩大到多日任务或新增定时调度。

取得完整、有效的原报表 XML 后,手工入口使用现有 ProgrammaticUploadCoordinator.submit(filename, bytes)。 自动采集路径须沿用已冻结批次/交付身份重试;不得每次重试直接调用会新建UUID的手工submit。 目前独立的冻结交接原型已具备这些语义,正式执行器尚未接入。 原件保存、独立重放、字段校验、白名单、去重、价格复核、Finance 与月报触发继续沿用现有流程。 XML 入口契约见 field-contracts.md。

现有处理器对有效白名单行要求房号,并读取第一条非空 RES_COMMENT;TRACE_TEXT 可空。这是代码现状, 不会改变用户要求的全量下载。若完整原报表出现未分房的白名单行,应按实际校验结果处理并另行核对需求, 不能通过下载前丢弃该行使任务“通过”。Trace现已明确不需要,按上述接口输出范围处理;不改既有人工XML解析器。

按上述业务参数研究平台接口:既检查是否有整份报告获取能力,也检查预订查询/详情组合能否覆盖所需数据。 若平台返回预订JSON,须核对完整性、语义和结果等价性,再讨论可重放适配;尚未选择重建XML或修改处理器。 不能因未找到原生XML接口便转向让用户操作页面或配置计划报表/SFTP。方向纠正见 接口研究范围。

官方补充证据(不替代用户选项)

Cloud23.4明确原RES_DETAIL不显示已解决/完成的Trace;其API候选为resolveInfo.resolvedOn/resolvedBy。 Cloud24.3明确排除InSession GDS,不能泛化成其他状态规则。报告显示名称ARR可以对应自定义筛选/排序实例, 故采集ConfirmationNo升序不能视为原报告顺序。这些事实及来源见来源对照核验。 用户目前不能访问OHIPSB02进行同源导出;比较工具已就绪,正式酒店57106样本仅保留既有处理基准用途。

来源

  • 用户在本任务 2026-09-16 提供的 ARR Report 操作与参数清单,为本文件权威业务输入。
  • 用户随后补充:From Date / To Date 的 T-1 由系统传入;此补充决定日期计算责任与输入边界。
  • Oracle Arrivals Reports: 佐证 Arrivals: Detailed 的内部名称为 res_detail 及到店明细用途;不用于补造用户未指定的选项。
  • API 候选、参数映射和未验证处见 接口研究。

详细的业务要素、16来源字段与完整日/重放要求已收录于API对应表。 该表分开记录结构事实与待实测语义,未变更本页用户要求或现有处理规则。

后续OHIPSB02实测确认搜索/详情可取得完整日期候选,但 空ETA、状态纳入、价格和来源顺序尚未与报告同源验证;不把测试结果改变为本页新增的用户业务规则。

Direct data entry — 2026-09-18

2026-09-18 implementation: DirectARRSource now feeds the existing date button, direct processor and validator, review, Finance and monthly flow. XML source-equivalence gates only govern the old CapturedARRSource path. Local synthetic acceptance does not certify actual platform fields; user expressly skipped actual sandbox fetching. See ADR-007 and direct-data-entry evidence.