45 lines
4.8 KiB
Markdown
45 lines
4.8 KiB
Markdown
# GROUP新建字段与酒店餐食边界 CP20
|
||
|
||
2026-09-16,本地实现;默认Pending未启用。不是GROUP全流程或四流程全部完成。
|
||
|
||
## 产品规则
|
||
|
||
用户明确酒店不选择BUALUANG/LEELA,只选择Rate Code。工作台Meal仍可独立选择并保存,接口不猜餐厅字段、breakfast.description或套餐收费。FIT酒店端按最终Rate设置并逐日回查,不再另列“餐厅/Meal未对接”;也不制造“早餐或餐厅已查询”结果。GROUP原流程的Breakfast Included仍按确认布尔值设置并核对。此澄清替代CP1/15/19中“独立酒店餐厅/Meal映射必需”的待办,工作台编辑规则不变。
|
||
|
||
## 内部实现与字段
|
||
|
||
`OhipGroupNewBookingConverter`仅从原员工确认及显式环境目录准备一笔postBlock,发送仍需CP12冻结与守卫。`OhipGroupNewBookingReadbackConverter`先检查酒店、实际Block编号、Block Name、完整性及时间,再逐字段输出一致/不一致/缺资料。`OhipGroupNewBooking`为内部结果,不是员工成功响应。
|
||
|
||
以下相对路径均位于postBlock的`blocks.blockInfo[0].block`,getBlock使用同一内层结构:
|
||
|
||
| 业务内容 | Oracle字段 |
|
||
| --- | --- |
|
||
| Tour Code/团名 | `blockDetails.blockName` |
|
||
| 入住/离店 | `blockDetails.timeSpan.startDate/endDate` |
|
||
| 状态TEN | `blockDetails.blockStatus.bookingStatus.status.code` |
|
||
| Reservation Type GC | `blockDetails.reservationType.reservationType` |
|
||
| Market/Source | `blockDetails.marketCode.marketCode`/`blockDetails.sourceOfSale.sourceCode.sourceCode` |
|
||
| BTQR/THB | `blockDetails.paymentMethod.code`/`blockDetails.currencyCode` |
|
||
| Rate Code | `reservationDetails.ratePlanCode[0].ratePlanCode`,唯一主Rate |
|
||
| 含早 | `reservationDetails.breakfast.breakfastIncluded` |
|
||
| TA recorder | `reservationDetails.taRecordLocator`,最多50字符 |
|
||
| Account及固定Contact | `blockProfiles.blockProfile[]`,对应角色、primary及实际Profile ID |
|
||
|
||
固定值须存在显式映射且不得映射成别的代码。整份住期/全部房型映射预先检查,不先创建后忽略坏房型;不同本地房型映到同一酒店房型会拒绝。日期取最早入住及最晚离店;这只是头住期,间隙和完整每日放量仍另走房量流程。读取显式请求`Block, Profiles, Rates`。单一Rate省略primary可接受;显式false不符合主Rate。多Rate、多同角色Account/Contact、多个Profile ID不任选一条当作完成。
|
||
|
||
原Prepared保留快照SHA、酒店作用域和请求;不能跨确认重用。实际读取不从原请求补缺值,部分字段不一致仍保留其他字段事实。Header全部一致也不代表房量、附件已处理;`businessComplete`及`executionEnabled`仍false。CP12衔接测试使用真实H2/localhost,创建后重建仓库仅查询原编号,无重复POST;酒店含早变化会在回查中显示false。
|
||
|
||
## 证据与外部边界
|
||
|
||
[Oracle26.3 BLK固定契约](https://github.com/oracle/hospitality-api-docs/blob/dd631fbd5d0fce74a7dbdf96b43f07ce587211f2/rest-api-specs/property/v1/blk.json),SHA256 `9d1ed11e8118963394e6638655983593b0e9a26f3c6223e72ef0d9479677e4ff`。日期format=date但maxLength=8冲突仍明确保留,沿用ISO日期并需Oracle环境验收。
|
||
|
||
本轮公开无凭据CLI getBlock返回200,目录仍0.6.0,路由`GET /api/v1/blocks/{blockID}`,能力`blocks.read`;未调用酒店业务。候选平台CP13/14/18仍未部署,此观察不代表其能力已在线。
|
||
|
||
获准只读代理复核Oracle当前main与[RSV契约](https://github.com/oracle/hospitality-api-docs/blob/dd631fbd5d0fce74a7dbdf96b43f07ce587211f2/rest-api-specs/property/v1/rsv.json)仍相同:FIT TA搜索`taRecordLocatorList`已证实,post/put/getReservation写读字段尚无明确契约。[Data API](https://github.com/oracle/hospitality-api-docs/blob/dd631fbd5d0fce74a7dbdf96b43f07ce587211f2/graphql/data-apis/BookingsReservation.graphql#L3009)分别定义TA和Custom Reference,不能用后者替代。需技术侧向Oracle取得准确请求/返回JSON路径、示例和fetchInstructions,不需用户重新解释业务。未发送外部消息。
|
||
|
||
## 验证与后续
|
||
|
||
新增55项:GROUP转换/回查52、CP12衔接1、草稿餐厅边界1、业务核验边界1;相关236项通过。首次测试编译因两个Readback通配导入重名失败,改显式导入后通过;完整后端verify2313项(2297通过、16条件跳过、零失败错误,229份XML)通过;JVM26.0.2、release17。
|
||
|
||
下一步连接GROUP新建的房量、整组附件和最终逐项结果,再接GROUP/FIT UPDATE;仍需长阶段执行预算、平台发布/授权、真实MySQL迁移及Oracle测试环境验收。FIT TA契约缺口独立保留。未读取真实凭据/邮件、未写酒店、未部署/重启/提交推送,无新公开接口、数据表、权限、ADR或架构方向变更。
|