Files
Wyndham-RSVN-0918/docs/project/integrations/ohip-shared-guest-cp14.md
T
2026-09-17 10:13:16 +08:00

38 lines
4.8 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.
# FIT共享客档保存与接续 CP14
状态:2026-09-16本地实现及验证完成,默认酒店执行仍Pending。承接[CP13](ohip-guest-profile-cp13.md)客档协议及[CP12](ohip-created-parent-binding-cp12.md)实际预订编号关联。
## 本次实现
员工仍只确认一次。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当前字段,已保存编号不代表当前酒店值。
## 内部接入
1. PREPARE:`OhipGuestProfileAdapter.prepare`冻结计划。仅FIT NEW、一个非空且不超过40 Unicode码点的确认姓名;不取邮件补值、不选择多个姓名中的第一位。
2. SAVE_DETAILS:`execute`只允许原计划对应的Guest调用。先登记后发送,固定幂等键;成功返回PROFILE_READY及实际绑定和本轮queriedAt,businessComplete仍false。
3. 原流程准备好全部Reservation请求,Profile ID必须用本次Guest绑定值。创建仓储显式使用`JdbcHotelBookingCreationRepository.withConfirmedGuest`;其`OhipBookingCreationAdapter.prepare/execute`校验完整请求集合和同一Guest。
4. 中断后先Guest `reconcile`及Creation `reconcile`。已有成功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已确认参数组成完整请求,再衔接其余办理及员工回显;不改变已确认产品规则。