4.4 KiB
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入口。
创建与恢复
prepare验证完整调用集合并冻结清单。execute先重算全部请求摘要,任一请求变化都在首笔发送前拒绝。- 每笔发送前调用
reconcile核对全部已知回执;凭实际父ID执行GET详情,并验证内层唯一Block/Reservation ID、酒店及GROUP名称。随后逐笔追加关联。 - 新建后持久回执成功而进程中断,恢复读取原回执,再查详情并补关联;关联已保存时保留首次识别时间,新查询时间独立返回。
- DISPATCHED、UNKNOWN、ACCEPTED、REJECTED、CONFLICT不重新发送,不用团号/姓名搜索猜补ID。NOT_SENT仅CP5更高受控attempt可重试原键/原请求。
- 同一执行并发发送不同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。