39 lines
4.0 KiB
Markdown
39 lines
4.0 KiB
Markdown
# 逐次酒店写调用与中断恢复 CP5
|
||
|
||
2026-09-16:在已有CP3办理队列和CP2 HTTP之间增加独立调用记录。它解决多次调用中途退出后丢失发送事实的问题,不替代冻结参数校验、实际对象绑定、酒店查询或整个流程核验。
|
||
|
||
## 实际调用顺序
|
||
|
||
1. 已有worker领取一个环节并提交RUNNING。
|
||
2. 可信办理适配器准备固定OHIP请求,提供稳定子项键,例如上传的“来源附件+实际目标”、删除的“旧附件+实际目标”;应包含逻辑动作,不使用列表位置或当前时间。
|
||
3. OhipDurableWriteAdapter复用该Execution、Task Card和确认版本构造技术外层,校验操作所属环节,并计算实际地址/环境/酒店/方法/路径/正文摘要。
|
||
4. JdbcHotelBookingCallRepository短事务核对库内确认、作用域、版本、租约和唯一RUNNING环节,先提交DISPATCHED及一次发送token。
|
||
5. 事务外再次检查剩余时限,再调用现有HTTP客户端。返回后只保存技术状态、平台请求编号、实际对象编号及实际新附件编号。
|
||
6. 后续实际查询和业务比较仍由可信办理适配器完成,CP3 worker决定整次办理状态。
|
||
|
||
技术外层case_id使用`hotel-booking:{executionId}`,task_id使用原Order Task编号,hotel_confirmation_id使用`card:{cardId}:version:{version}`,幂等键包含Execution、环节及稳定子项键的SHA256。这些是平台技术关联引用,不新建或冒充业务Case、Oracle Block/Reservation或酒店确认号。
|
||
|
||
## 重启与续办
|
||
|
||
同一请求的摘要和操作不可改变。已发送、未知、已受理、拒绝、冲突或已返回读回数据的记录,都不会再次授予发送许可;返回已有元数据时没有freshResponse,不能当成最新酒店查询。
|
||
|
||
只有HTTP客户端明确NOT_SENT,且worker已进入更高的环节attempt时,才允许使用原键、原摘要重新取得许可。同一attempt的重复调用仍不发送。是否允许该环节继续由CP3 RECONCILE规则判断,调用记录不会自动跳过它。
|
||
|
||
数据库锁等待可能消耗租约,因此真正发送前二次检查。发送后的回执可在租约过期后保存,便于恢复时查证,但不推进Execution;旧token不能覆盖新一轮回执。返回后落盘失败时,DISPATCHED事实仍保留,不能声称请求未发出。
|
||
|
||
附件上传的Edge resource_id是父预订/团队编号,不能代替文件编号。逐次记录另存已核对的attachment.id供后续精准查询。附件字节、原始请求/响应、文件URL和Key都不进此表。
|
||
|
||
## 代码、数据和验证
|
||
|
||
- 业务DTO/枚举:HotelBookingCallContracts、HotelCallState。
|
||
- 稳定持久端口:HotelBookingCallRepository及JdbcHotelBookingCallRepository。
|
||
- OHIP衔接:OhipDurableWriteAdapter、OhipJournaledCallResult;HTTP适配器只增加同包非秘密目标元数据读取。
|
||
- V42新增workflow_hotel_booking_call,引用V41办理记录,保持MySQL大小写敏感、UTC时间和内部访问边界。当前配置注册Repository,不注册发送器或替换Pending办理端口。
|
||
- 20项新增测试及相关128项通过,覆盖真实JDBC/localhost HTTP、两个附件、后台worker续办查询、并发、过期/锁等待、请求变化、发送前后DB失败和安全元数据。完整verify结果见[证据](../../../.project-docs/50-evidence/topics/2026-09-16-ohip-call-journal-cp5.md)。
|
||
|
||
## 保留边界
|
||
|
||
本轮未运行真实MySQL迁移、加载服务或调用酒店业务。H2及合成HTTP不代表Oracle验收。默认OhipPendingBookingExecutionAdapter保持;这不是完整四流程的运行时实现,也没有“开关一开就上线”的路径。
|
||
|
||
当前平台公开目录仍0.6.0/111项;缺本机Automation Principal和实际部署通道,0.8.0/118项候选已推送但未部署。测试酒店GC/GTT/X/Source TA/BTQR未查到、TEN缺配置查询权限的结论保持。后续继续用此记录层承接经验证的对象绑定、原生字段、完整读回和逐调用续办;只在现有合成测试授权内联调,不自行提升身份或替代业务参数。
|