4.8 KiB
FIT共享客档保存与接续 CP14
状态:2026-09-16本地实现及验证完成,默认酒店执行仍Pending。承接CP13客档协议及CP12实际预订编号关联。
本次实现
员工仍只确认一次。Guest计划从该次冻结FIT NEW的唯一Name、CN与酒店配置生成;V46先保存固定请求/确认/目标地址摘要。创建在SAVE_DETAILS环节进行,PREPARE及RECONCILE不写酒店。创建回执保存后,按实际Profile ID重新查询,核对姓名、国家、Guest类型、registeredProperty及唯一身份,才将该ID不可变绑定到本次确认。
所有后续FIT创建使用同一已绑定ID;同住期两种房型各3间的测试实际创建1个Guest和2个Reservation,每笔numberOfUnits=3。每次继续创建前还会查询Guest当前字段,已保存编号不代表当前酒店值。
内部接入
- PREPARE:
OhipGuestProfileAdapter.prepare冻结计划。仅FIT NEW、一个非空且不超过40 Unicode码点的确认姓名;不取邮件补值、不选择多个姓名中的第一位。 - SAVE_DETAILS:
execute只允许原计划对应的Guest调用。先登记后发送,固定幂等键;成功返回PROFILE_READY及实际绑定和本轮queriedAt,businessComplete仍false。 - 原流程准备好全部Reservation请求,Profile ID必须用本次Guest绑定值。创建仓储显式使用
JdbcHotelBookingCreationRepository.withConfirmedGuest;其OhipBookingCreationAdapter.prepare/execute校验完整请求集合和同一Guest。 - 中断后先Guest
reconcile及Creationreconcile。已有成功ID只查询;未知或缺回执不重新POST、不按姓名搜索认领。NOT_SENT仅在新一轮受控attempt沿原键发送。
原CP12默认仓储保留独立技术模式兼容,不能承载Guest先行例外,也不作为新共享Guest流程入口。共享模式检查Guest归属、原回执token、原确认/版本、酒店/环境、实际地址摘要。允许稍后冻结Reservation清单的唯一情况,是本次Guest已绑定且此前只有该一个调用;其他历史或未完成写入不能混入。
数据与恢复
新增V46 workflow_hotel_guest_profile:每Execution一份不可变计划、可空实际Profile/token/first_verified_at,绑定字段必须同时为空或完整;同一服务地址的同一个新建Profile不可被不同确认重复认领。计划不存姓名原文、原生正文、URL、文件内容或凭据,姓名仍只在既有受控Snapshot中。
计划、确认、执行身份列、scopeKey、revision、租约、当前进度和回执比较均在执行行锁内;外呼在事务外。首次绑定时间保留,重查的queriedAt单独返回。查询失败时保留已保存成功创建事实;回执已提交后进程中断可恢复,回执丢失只保留DISPATCHED/未知,不能靠猜测补绑。跨确认碰到同一个返回ID会拒绝绑定,实际Oracle行为需UAT。
平台普通getProfile固定请求fetchInstructions=Profile,Address,让恢复GET能取得姓名和国家,路由/权限及调用方查询白名单不变。候选仍0.9.0、119操作/14组;本轮及CP13更改均未提交/推送/部署,旧发布包未重建。
验证与边界
- 新增46项H2+localhost测试全部通过:并发只创建一次;写成功查询失败;回执保存前/后及绑定后中断;NOT_SENT新attempt;字段/身份/酒店/目的地址变化;确认、版本、卡片、租约变化;跨确认重复ID;伪造回执/时间;误用旧仓储、额外历史调用、库内绑定修改及预订发送前Guest改变。
- 相关167项通过;完整verify1994项,1978通过、16既有条件跳过、零失败/错误、221报告。compiler release17,实际JVM26.0.2,未跑Java17运行时验证。
- 平台完整race测试12包通过,406通过事件(含父子用例)、9PostgreSQL条件跳过;vet及最终OpenAPI检查通过。新增精确恢复读取测试验证Profile/Address固定查询。
- 已检查附件/Note历史匹配:成功的无source Guest回执不会被当作附件或Note来源,原有不确定写入拦截规则保留。
- 无真实酒店、邮件或凭据调用,未迁移实际数据库、重启服务、启用运行、提交/推送或部署。仅测试临时H2迁移了V46。
- 本轮提出过1名只读复核许可请求,截至收尾未收到答复,未创建或调用子智能体;不能视作已批准或已完成独立评审。
这仍不是整个办理完成:调用方尚须补齐全部业务参数构造、已有GROUP/FIT修改范围、TA recorder、附件/Note与最终全字段查询回显,并接真实执行器。Guest、平台部署/权限/酒店配置和数据库/Oracle原生UAT未验收。下一checkpoint先将FIT NEW已确认参数组成完整请求,再衔接其余办理及员工回显;不改变已确认产品规则。