Files
Wyndham-RSVN-0918/docs/project/integrations/ohip-execution-and-results-cp3.md
鲨鱼辣椒 262831af42
Some checks failed
verify / booking-verify (push) Has been cancelled
完善预订操作台与AI处理结果并接入酒店本地四流程
2026-09-17 10:13:16 +08:00

50 lines
7.1 KiB
Markdown
Raw Permalink 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.

# 酒店后台办理与结果回显 CP3
2026-09-16。用户确认四类流程的产品行为本地持久执行机制及页面已实现真实酒店办理适配器仍关闭不能把本地验证当作四流程联调通过。
## 员工看到的行为
2026-09-16页面位置更新结果卡标题为“AI处理”任务详情与预订记录详情均放在对应来源邮件下方。仅已确认New/Update展示确认成功后等待卡片渲染再立即定位确认失败或已经离开原页面均不定位。普通确认成功提示为“卡片已确认”。本次只改变前端位置及导航不改变实际执行与查询契约。
新确认的投影 NEW_BOOKING / UPDATE_BOOKING 在同一个数据库事务保存本地确认和酒店办理记录。确认后留在任务详情展示等待、处理中、处理失败或完成预订记录可以再次查询。其他人工任务沿用既有返回行为。离开页面只停止本页查询不停止后台处理。查询提示统一为“正在查询办理状态页面会自动刷新”首次及后续状态查询失败时也按4秒间隔自动重查仅查询状态终态或离开页面停止。
按检查条件、核对酒店现状、保存资料、更新房型房数、更新附件、最终核验展示真实步骤。每步独立记录结果,失败组合由记录组成,不穷举文案。接口受理不代表业务完成,查询失败也不能证明酒店没有保存。页面仅回显实际查询值和查询时间,提交快照不作为查询结果。
“继续处理”使用同一办理及页面版本,服务端先重新查询。已成功的写步骤须有核实证据;未知/失败写入只有证明已完成或确实未写入后才能推进。不会换编号或重新创建已成功预订。历史确认无办理记录时显示“没有自动办理记录”,不补办历史业务。
## 固定业务规则
- GROUP/FIT UPDATE都是完整的最终房型房数未出现的旧GROUP单元归零FIT必须完整绑定真实Reservation范围不按本地记录ID或第一条搜索结果猜测。不存在自行取消多余Reservation的流程。
- Excel预订附件从本次来源邮件冻结引用。PDF、图片及邮件原件不上传原资料展示不受影响。新建上传、更新替换对应旧版名称及描述采用Tour Code不删除同名无关附件。
- 本地选择识别`.xls/.xlsx/.xlsm/.xlsb`大小1..9,999,999字节上传前按受控原件服务下载并审计核对酒店/消息/引用/大小和实际文件结构。ZIP总展开64MiB、10,000条目为技术保护上限。不会运行公式、宏或外部实体。加密/老BIFF/Strict OOXML和真实Excel保存的XLSB兼容性未验证不宣称全格式支持。
- Rate/Account/Market/Source/Meal/Note取该次最终确认。当前Liantai/QBD的Reservation Type为GCTEN/BTQR只在新建设置加床不在本次接入范围。
## 持久执行与边界
V41在平台MySQL增加`workflow_hotel_booking_execution`及独立状态审计表。前者保存冻结确认、Excel引用、步骤、作用域、租约和并发版本后者只保存登记/状态推进/重启恢复/人工续办的安全审计元数据。确认事务不下载文件、不调用酒店。Repository登记必须处于同一个平台事务失败时连同员工确认回滚。
后台每次只领取一个环节外呼前先提交RUNNING。短事务以执行ID、版本、租约token及到期时间拒绝迟到写入租约2分钟。适配器每个环节必须有界执行子调用使用固定且可查询的幂等身份。出现未知结果不得换键发送。重启将已开始写入的步骤保留为UNKNOWN排入先查询路径。相同本地酒店/Tour Code串行前序办理未完成会阻挡该范围后续办理不绕过未决写入。
PREPARE/首次查询须核实并持久保存`HotelScope(localHotelId, environmentRef, externalHotelId)`。缺失绑定不允许进入写入后续及续办不允许切换酒店或环境。Adapter发请求之前仍必须核对实际配置与该绑定一致不能先发送再依靠回执发现错酒店。
最终成功要求该次最终查询不早于最后处理环节、非未来、核验项目齐全且有对应展示字段。具体字段与完整房量/档案/TA/附件等比较属于可信酒店Adapter职责仅返回HTTP成功或人工填几个成功标签不满足端口契约。部分查询结果保留实际时间不能覆盖较新的查询。
当前Spring默认接入`OhipPendingBookingExecutionAdapter`,返回`HOTEL_INTEGRATION_NOT_READY`不读取Key、不发送酒店请求。没有一个“打开环境变量即可跳过未验证契约”的上线开关。独立线程可用`hotel.booking.worker-enabled=false`在测试禁用测试直接驱动真实Repository及Worker。CP1、CP2 HTTP边界仍独立保留尚未拼成可对真实酒店完成四流程的运行时Adapter。
## 前端接口
| 接口 | 权限与输入 | 行为 |
| --- | --- | --- |
| `GET /api/reservation/order-tasks/{taskId}/cards/{cardId}/hotel-execution?hotel_id=...` | `RESERVATION_TASK_READ`,酒店/任务/卡片均核验 | 读取持久办理摘要;不发酒店查询、不新建办理 |
| `POST .../hotel-execution/resume` | `RESERVATION_TASK_CONFIRM``hotel_id`、非负`revision` | 身份来自登录用户比较版本后登记续办状态已变返回409 |
返回`status/revision/updated_at/queried_at/can_resume/steps/values`时间点为UTC ISO8601。页面每4秒查询进行中的记录卸载/换酒店/换卡片取消本页查询并忽略旧响应续办超时先查状态不直接重发。三语组件沿用工作台布局。API不返回冻结原文、URL、字节、酒店Key、私有对象关联凭证、租约或幂等键。
## 验证与未完成
验证证据见`.project-docs/50-evidence/topics/2026-09-16-ohip-execution-cp3.md`。全部用隔离H2及合成HTTP/文件/页面夹具;没有操作真实业务数据、发布平台或启动新增服务替换现有运行实例。
线上目录复核仍为0.6.0/111项可读测试酒店OHIPSB02的连接及营业日新增附件接口尚未发布。平台CP2-B/C现为已推送的`integration/booking-release-codex`分支(`60e89b4`目录0.8.0/118项/13组真实独立PostgreSQL迁移、全量Go race及原生打包程序检查通过尚未部署。平台发布已获授权必须通过实际部署通道完成迁移与旧实例退出、真实附件linkType及名称覆盖行为、对应应用权限、FIT TA recorder准确写入和回读字段、多房实际Reservation行为以及实际酒店配置/餐食映射核实才能接上真实运行时Adapter与四流程合成UAT。多Excel文件同Tour Code的命名/替换对应关系不能猜测,须在真实附件契约验证时明确。
用户允许本轮专用测试预订和合成附件创建/修改/替换并已另行确认平台发布原有酒店业务数据和对外消息不在范围。当前机器没有ACK、镜像仓库及部署数据库连接配置仓库仅发现测试工作流因此实际部署尚未执行这是部署通道缺失不再等待重复许可。发布交付位于工作区`.planning/ohip-interface-review-20260915/release-20260916/README.md`