45 lines
5.1 KiB
Markdown
45 lines
5.1 KiB
Markdown
# 工作台确认字段接入(2026-09-18)
|
||
|
||
本次按用户逐项确认后的要求修改接口适配及回读,已完成本地代码验证。现有运行服务、酒店配置、排队任务和真实酒店数据未操作。相关CR为[确认字段完整写入](../requirements/CR-20260918-confirmed-hotel-fields.md)。
|
||
|
||
## 最终字段与接口
|
||
|
||
| 工作台确认值 | GROUP NEW / UPDATE | FIT NEW / UPDATE |
|
||
| --- | --- | --- |
|
||
| Account | blockProfiles.blockProfile:配置对应的账户和联系人Profile ID,Agent / AgentContact;UPDATE使用fullOverlay并保留其他关联 | reservationProfiles.reservationProfile:配置的TravelAgent Profile ID;UPDATE保留其他关联 |
|
||
| Market / Source | blockDetails.marketCode.marketCode / sourceOfSale.sourceCode.sourceCode | roomStay.roomRates[].marketCode / sourceCode |
|
||
| Rate Code | reservationDetails.ratePlanCode[].ratePlanCode | roomStay.roomRates[].ratePlanCode |
|
||
| Meal | reservationDetails.breakfast.breakfastIncluded,来自确认Rate的目录解析 | 通过Rate Code体现,不新增独立早餐接口 |
|
||
| Note | comments.commentInfo[].comment.text.value | comments[].comment.text.value |
|
||
| Arrival / Departure | blockDetails.timeSpan | roomStay和roomRates日期 |
|
||
| Room Type / Quantity | putBlockAllocation完整逐晚目标,清零旧日期/房型残留 | roomRates房型和分配到实际预订的numberOfUnits |
|
||
| Nights | 由日期推导,不另发固定晚数 | 同左 |
|
||
|
||
GROUP:postBlock / putBlock / getBlock,房量为putBlockAllocation / getBlockRoomRateGrid。FIT:postReservation / putReservation / getReservation。接口路径维持/api/v1/blocks、/api/v1/reservations及/{id}子资源。
|
||
|
||
Account是酒店的业务档案,不是登录账户,也不是SOURCE。现有运行清单按accountCode选择实际Profile ID;只用已配置编号,不把LIAN_TAI或显示名冒充Profile ID。getProfiles/getProfile/getProfileRelationships是此前核实的档案查找/核验接口;本次预订链复用配置档案关联,不额外新增按名称猜选档案的运行逻辑。
|
||
|
||
Market、Source取员工确认后的basic快照,再按当前酒店显式code映射转换;账户默认值不覆盖最终改选。已有映射直接使用;本地SOURCE别名company若未在运行清单配置对应酒店代码,会在生成写入前拒绝,不能猜为TA或虚构COMPANY码。此项是目录/连接配置,不是缺company接口。本次没有修改私有运行目录或补造未知映射。
|
||
|
||
## Meal与Note
|
||
|
||
前端已完成的Meal只读保持。服务端新确认重新加载受信Rate目录并派生早餐;客户端旧早餐/餐厅参数不能覆盖Rate。餐厅仅可保留目录兼容值,不再参与员工必填、独立Meal选择或酒店请求。重复确认保留冻结快照,不按后来目录重算。
|
||
|
||
酒店适配器逐字使用booking_note.text,不重新拼价格/早餐正文。GROUP新建现在发送Note;GROUP修改定位本系统过去成功发送的Note ID,仅改文本并核对其他备注及元数据保持。没有本系统来源记录时新增第一条业务Note,不拿现有相似文本当作本系统备注;新添后中断恢复仍只写一次。来源冲突、他人改写本系统旧Note或不完整回读会停止,不覆盖不明归属备注。空Note不构造写入。
|
||
|
||
GROUP修改前需要完整Profiles/Rates/Comments及房格回读;缺失完整集合不解释为空集合。尚未取得该酒店实际省略空集合的响应样例,故保持拒绝不完整响应。回读逐项验证账户/联系人、Market、Source、Rate、早餐、Note和日期房量;FIT增加账户/Market/Source的最终检查。任何必要字段未匹配都不能显示整单成功。
|
||
|
||
GROUP计划保存完整修改前头字段、Note ID和完整请求摘要,检查点升级为confirmed-fields-v3。旧计划不会按新字段语义静默恢复。FIT仍由冻结请求、原资料及现有持久计划保护。预览、逐字段结果和受控调用日志同步上述内容。
|
||
|
||
## 边界与验证
|
||
|
||
未新增公开Controller、权限、表或数据库迁移。保留现有酒店隔离、人工确认、租约、请求摘要、持久来源、回执及未知写入禁止自动重发的规则。TA、取消/转换、邮件附件边界不扩大。
|
||
|
||
- 后端全量2727项:2710通过、17既有跳过;随后新增2项并运行相关回归,最新测试报告合计2729项、0失败/错误、17跳过。
|
||
- 前端完整39文件409项通过;生产构建(含vue-tsc)通过。目标ESLint为0错误,ValueReview模板原有3条排版警告保留。
|
||
- Python模拟71项通过;本机Java装配以release17编译,合成目录及调用记录检查通过。
|
||
- 验证覆盖Note原文/其他备注保留、首次新增/重试、完整字段修改、错误和缺失回读、Rate早餐派生、历史确认、配置缺失、旧字段兼容、取消及类型转换回归。
|
||
- 不将本地合成测试称为Oracle沙箱页面验收;当前服务未加载本轮后端代码,未代用户确认卡片、重跑队列或操作酒店。
|
||
|
||
详细日志位于忽略目录.planning/confirmed-interface-implementation-20260918/。开始时保存的baseline用于区分其他任务已有修改,未重置既有工作区。
|