Files
Wyndham-RSVN-0918/docs/project/integrations/ohip-created-parent-binding-cp12.md
T
2026-09-17 10:13:16 +08:00

34 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OHIP NEW创建调用与实际父对象 CP12
2026-09-16。本轮新增内部创建清单、追加式父对象关联及显式创建/恢复适配器。未自动注册Spring,真实运行仍为`OhipPendingBookingExecutionAdapter`;创建编号关联并不是全流程验收。
## 数据与调用边界
`HotelBookingCreation.Plan`由原Execution身份、酒店/环境、服务地址SHA、全部确认快照SHA、GROUP/FIT类型、Tour Code和完整子项组成。每项固定稳定键、调用键、operation及实际请求SHA,不复制业务正文、文件字节、URL或Secret。GROUP唯一`group`;FIT由segment_ref与房型产生稳定摘要键,清单按键排序,与请求Map迭代顺序无关。
V45增加`workflow_hotel_booking_creation`及`workflow_hotel_booking_created_parent`。首次清单只能在PREPARE/RECONCILE、所有写步骤未尝试、当前执行无任何调用时保存;此后不能覆盖或补项。绑定以执行/子项为主键,同次执行实际父编号唯一,保存发送token和首次真实查询时间,不提供换绑或删除接口。
仓储通过执行行锁核对酒店、任务、卡片、版本、scopeKey、修订、token、精确租约、完整快照及进度。绑定时重查持久回执,必须与传入回执完全一致且状态为READBACK_AVAILABLE;实际ID与时间必须有效。保存过的父ID/token或回执变化即失败。
`OhipBookingCreationAdapter`仅接收已完成上游业务准备的调用,使用仓储自带的严格journal,外部调用者不能另传通用journal。严格校验在CP5 reserve同一事务内执行:只允许清单指定操作/键/请求SHA;所有现存CREATE(包括未知、拒绝、无source、NOT_SENT)均参与核对;其他已发子项尚未取得明确回执并保存绑定时,拒绝继续发新项。CP5通用低层仍保留原协议功能,它本身不是NEW业务入口;最终业务接线必须使用CP12入口。
## 创建与恢复
1. `prepare`验证完整调用集合并冻结清单。`execute`先重算全部请求摘要,任一请求变化都在首笔发送前拒绝。
2. 每笔发送前调用`reconcile`核对全部已知回执;凭实际父ID执行GET详情,并验证内层唯一Block/Reservation ID、酒店及GROUP名称。随后逐笔追加关联。
3. 新建后持久回执成功而进程中断,恢复读取原回执,再查详情并补关联;关联已保存时保留首次识别时间,新查询时间独立返回。
4. DISPATCHED、UNKNOWN、ACCEPTED、REJECTED、CONFLICT不重新发送,不用团号/姓名搜索猜补ID。NOT_SENT仅CP5更高受控attempt可重试原键/原请求。
5. 同一执行并发发送不同FIT子项时,执行行锁内复查前笔DISPATCHED,后笔不得越过未决创建。全程不持有事务调用HTTP。
结果的`recorded`是已读持久记录,`observations`是本轮已完成的真实详情查询;后续查询失败也不把已有回执当成未创建。若库内状态无法复核,可仅返回之前已读记录,甚至为null;不能据此断言没有写入。`CALLS_LINKED`只表示全部计划调用已关联真实父对象,`businessComplete`恒false;未创建且现有记录均明确可继续时为READY_TO_CONTINUE,其余为UNRESOLVED。
## 限制与后续
- 平台当前创建只从单个Location取一个ID,再GET该ID,尚无证据证明`numberOfUnits>1`不会展开其他Reservation。此入口暂只接受FIT每正数房型行count=1,一行多间在写前停止,绝不暗自拆房或取消。GROUP人数/房量在后续网格环节核验。
- 多FIT必须已准备同一个实际Profile ID;不冻结首笔以后才能补齐的客档请求。单笔可携带建档正文。客档准备及实际客档归属完整核验后续接续。
- 请求粒度、共享客档引用和住期在本模块核对;Room Type/Rate/Account等配置映射语义由上游准备,最终字段实际值由后续查询验收。TA recorder、Note、房量、附件和全部业务检查没有因此自动完成。
- 父编号当前限80字符安全ID;超界保持未解决,不截断。详情读取只核对身份,不保证酒店之后未被其他人修改。
- V45只在H2测试库执行,实际MySQL迁移与Oracle UAT未做;默认Pending保持,无酒店写入、服务重启、消费项目commit/push或新员工API。
见[需求](../requirements/CR-20260916-ohip-created-parent-binding-cp12.md)和[证据](../../../.project-docs/50-evidence/topics/2026-09-16-ohip-created-parent-binding-cp12.md)。