Files
Wyndham-RSVN-0918/docs/project/integrations/ohip-call-source-cp9.md
T
2026-09-17 10:13:16 +08:00

26 lines
3.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.
# 酒店调用来源证据 CP9
2026-09-16。本轮补齐发送时的来源登记,衔接CP5逐次调用及CP7冻结目标,不直接选择旧附件或旧Note。见[CR](../requirements/CR-20260916-ohip-call-source-cp9.md)及[验证证据](../../../.project-docs/50-evidence/topics/2026-09-16-ohip-call-source-cp9.md)。
## 契约与调用
`HotelBookingCallContracts.Intent`增加可选`HotelBookingCallSource`,包含来源种类、酒店/环境、实际HTTP服务地址SHA256、GROUP/FIT、精确Tour Code、请求父ID、来源邮件编号、Excel引用或`requestedNoteId`、内容SHA256。实际新附件ID仍由原Receipt.relatedResourceId保存,不能拿请求Note ID当酒店已确认的Note ID。
附件调用使用`OhipDurableWriteAdapter.sendAttachment(execution, itemKey, reference, request)`,构造时注入`HotelBookingAttachmentSource`。现有`HotelBookingAttachmentLoader`实现该端口,继续执行原确认、来源酒店、当前素材、Excel内容和原件访问审计。发送前重新读源文件,实际请求解码字节的SHA256必须一致;文件名和itemKey不用于推断来源。原通用send上传、未注入来源端口或未提供冻结引用均拒绝。
FIT创建/更新请求包含comments时,仅接受一个与冻结booking_note.text原文完全相同的Note;保留空格、换行和Unicode,不trim、转译或重建价格。NEW必须没有请求Note ID;UPDATE必须有请求Note ID,并属于已绑定父对象。这里的请求Note ID仍只是尝试证据,其旧归属必须由后续流程核验。其他无Note写操作继续允许source为空,不能视为已完成业务Note。
`HotelBookingCallSourceValidator`在调用侧和Repository锁定真实执行行后重复核对冻结确认、操作、阶段、酒店/环境、团号及目标。来源摘要不能替代授权;任意调用方自己构造DTO不等于已加载或已读回酒店内容。受信集成边界负责从实际请求和受控来源构造证据。
## 持久化与并发
V43只增加可空source_json列,无新表或可覆盖的“当前归属”记录。来源与请求摘要同事务INSERT;Intent完整相等才允许沿原键继续。旧JSON/原构造器可读,历史NULL表示未知,不能在重试时补来源。NOT_SENT更高attempt保留原来源;UNKNOWN/ACCEPTED/READBACK_AVAILABLE不重发;complete及迟到回执不改来源列。
实际目标地址单独留摘要,避免将未来重指的环境标签视为同一外部服务。原V41按酒店/Tour Code串行及CP7父对象冻结继续生效;没有增加重复并发锁。酒店人工修改、历史多次更新或迟到回执仍不能按updatedAt选“最新旧版”。
## 明确边界与下一步
来源元数据不含正文、字节、文件名、URL或Key;toString隐藏业务内容。无新Controller、员工权限码、前端字段、运行Adapter注册或服务重启。现有Spring原件加载器只是实现稳定接口,业务运行端口仍为Pending。
后续须把历史调用来源、真实返回子ID、CP8当前实际对象及精确内容摘要结合核验,才能建立旧件替换依据。同名、同文、最近回执不能自动认定归属;旧手工资料或缺证据记录保持未解决。NEW附件父对象还需从已验证创建回执关联;附件Name/Description、原生覆盖语义、Note实际ID归属、真实MySQL迁移及Oracle UAT均不由本轮测试证明。完整四流程仍未启用。