调整Rooming List付款方式选项

This commit is contained in:
andy
2026-07-22 17:31:55 +07:00
parent 7e2cd8969f
commit 0de960372b
14 changed files with 74 additions and 25 deletions

View File

@@ -487,7 +487,7 @@ RESERVATION_ROOMING_LIST_GENERATE
- 每组第一位旅客写入 `Name` / `First Name`,同组剩余旅客写入 `Accompanying Guests`,多人用英文逗号分隔。
- CP2 起前端不再展示或提交 `Arrival` / `Departure`,后端从来源 Excel 的 `旅游日期` 派生。样例 `2026年5月9日5月14日` 应生成 `Arrival=2026-05-09``Departure=2026-05-14`
- CP2 起前端不再展示或提交 `Adults`,后端按每个分房行的实际人数派生;尾房不足满房人数时按尾房实际人数写入。`Children` 第一版固定为 `0`
- CP2 起目标默认值区域只保留 `Payment Type``Nationality``Payment Type` 默认且当前唯一允许值为 `CA``Nationality` 只允许 `KR``CHN`
- CP2 起目标默认值区域只保留 `Payment Type``Nationality``Payment Type` 默认 `BTQR`,当前允许 `BTQR``CA``Nationality` 只允许 `KR``CHN`
- CP2 页面不再展示或提交 `Title``Rate Code``VIP``Email``ID Type``ID Number`,这些目标列第一版固定为空。
- 第一版接口成功后直接返回 Excel 文件流,前端应按 Blob 下载处理,不要期待 JSON 里的 URL。
- 失败时返回统一 JSON 错误,例如 `ROOMING_LIST_VALIDATION_FAILED``ROOMING_LIST_SOURCE_FILE_INVALID``HOTEL_ACCESS_DENIED``FRONTEND_PERMISSION_DENIED`

View File

@@ -1201,7 +1201,7 @@ CP2 前端提交字段:
| `hotel_id` | 否 | 当前选择酒店;不传时由后端按登录用户酒店上下文解析。 |
| `people_per_room` | 是 | 每间房人数,正整数。 |
| `room_type` | 是 | 目标 Excel 的 Room Type。 |
| `payment_type` | 否 | 目标 Excel 的 Payment Type默认和当前唯一允许值为 `CA`。 |
| `payment_type` | 否 | 目标 Excel 的 Payment Type默认 `BTQR`,当前允许 `BTQR``CA`。 |
| `nationality` | 是 | 目标 Excel 的 Nationality只允许 `KR``CHN`。 |
CP2 前端不再提交:
@@ -1231,7 +1231,7 @@ id_number
- 页面第一部分保留上传来源 Excel、每房人数、Room Type。
- 目标默认值区域只保留 Payment Type 和 Nationality 两个下拉。
- Payment Type 默认选中 `CA`,当前不开放其他选项。
- Payment Type 默认选中 `BTQR`,当前提供 `BTQR``CA` 两个选项。
- Nationality 只提供 `KR``CHN`
- 前端不读取完整 Excel 作为权威解析结果;旅游日期和成人数以后端生成结果为准。
- 页面不要把上传文件内容、客人名单、生成文件内容写入浏览器日志、埋点、错误上报、URL 或 localStorage。

View File

@@ -33,7 +33,7 @@ CP2 目标调整:
- 后端从来源 Excel 的 `旅游日期` 列解析入住日期和离店日期,不再要求前端手填 `arrival` / `departure`
- 后端按分房结果计算目标 `Adults`,不再要求前端手填 `adults`
- 目标默认值区域只保留 `Payment Type``Nationality` 两个字段。
- `Payment Type` 前端默认为 `CA`,后端也按 `CA` 作为当前唯一允许值校验。
- `Payment Type` 前端默认为 `BTQR`,当前可选择 `BTQR``CA`,后端按同一枚举校验。
- `Nationality` 前端只允许选择 `KR``CHN`,后端按同一枚举校验。
第一阶段不做:
@@ -169,7 +169,7 @@ people_per_room = 3
| `Number of Rooms` | 第一版每行固定为 `1`,后续如目标模板变化再调整 |
| `Adults` | CP2 由后端按当前房间实际人数派生 |
| `Children` | CP2 固定为 `0` |
| `Payment Type` | 前端选择;当前默认和唯一允许值为 `CA` |
| `Payment Type` | 前端选择;当前默认值为 `BTQR`,允许 `BTQR``CA` |
| `VIP` | CP2 固定为空,后续如有稳定默认值再单独确认 |
| `Accompanying Guests` | 同房其他旅客姓名,英文逗号分隔 |
| `Nationality` | 前端选择;当前只允许 `KR``CHN` |
@@ -202,7 +202,7 @@ Content-Type: multipart/form-data
| `hotel_id` | string | 否 | 酒店 ID不传时按当前登录用户默认酒店或单酒店上下文解析 |
| `people_per_room` | integer | 是 | 每间房人数,必须大于 0 |
| `room_type` | string | 是 | 目标 Excel 的 `Room Type` |
| `payment_type` | string | 否 | CP2 目标 Excel 的 `Payment Type`;为空时后端按 `CA` 处理;当前只允许 `CA` |
| `payment_type` | string | 否 | CP2 目标 Excel 的 `Payment Type`;为空时后端按 `BTQR` 处理;当前只允许 `BTQR``CA` |
| `nationality` | string | 是 | CP2 目标 Excel 的 `Nationality`;当前只允许 `KR``CHN` |
CP2 不再接收以下前端业务字段作为生成依据:
@@ -244,7 +244,7 @@ Content-Disposition: attachment; filename="rooming-list-<timestamp>.xlsx"
- multipart 必填字段缺失,返回 `ROOMING_LIST_VALIDATION_FAILED`
- `people_per_room` 数字格式错误,返回 `ROOMING_LIST_VALIDATION_FAILED`
- `payment_type``CA`,返回 `ROOMING_LIST_VALIDATION_FAILED`
- `payment_type``BTQR` / `CA`,返回 `ROOMING_LIST_VALIDATION_FAILED`
- `nationality``KR` / `CHN`,返回 `ROOMING_LIST_VALIDATION_FAILED`
- 来源文件缺失、非 `.xls` / `.xlsx`、无法读取、缺少 `护照全名` 表头或缺少 / 无法解析 `旅游日期` 表头,返回 `ROOMING_LIST_SOURCE_FILE_INVALID`
- 同一来源文件出现多个不同旅游日期区间CP2 返回受控错误,不生成 Excel。
@@ -309,7 +309,7 @@ RESERVATION_ROOMING_LIST_GENERATE
- 填写每间房人数。
- 填写目标 `Room Type`
- 目标默认值区域只保留 `Payment Type``Nationality`
- `Payment Type` 使用下拉或固定选择,默认 `CA`,当前不开放其他值
- `Payment Type` 使用下拉选择,默认 `BTQR`,当前可选择 `BTQR``CA`
- `Nationality` 使用下拉,只允许 `KR``CHN`
- 展示解析预览:总人数、预计房间数、前几行分房结果。
- 点击生成后下载 `.xlsx`
@@ -336,7 +336,7 @@ RESERVATION_ROOMING_LIST_GENERATE
- 尾房人数不足时仍生成一行。
- `Adults` 按每个房间实际人数派生,尾房人数不足时不使用满房人数。
- `Children` 默认为 `0`
- `payment_type` 为空时按 `CA` 处理,非 `CA` 返回受控错误。
- `payment_type` 为空时按 `BTQR` 处理,非 `BTQR` / `CA` 返回受控错误。
- `nationality=KR` / `CHN` 成功,其他值返回受控错误。
- 来源文件中多个不同旅游日期区间返回受控错误。
- 缺少 `旅游日期` 表头或旅游日期格式无法解析时返回受控错误。

View File

@@ -67,7 +67,7 @@
| `POST /api/reservation/tasks/{taskId}/opera-operations/{operationId}/retry` | `FRONTEND_USER` | 当前为 OPERA 模拟 | 登录 + `RESERVATION_OPERA_SIM_EXECUTE` + 酒店访问权 | 必须写业务审计和 attempt |
| `GET /api/reservation/tasks/{taskId}/audits` | `FRONTEND_USER` | 已强制 Bearer 登录 + `RESERVATION_AUDIT_READ`;按任务实际所属酒店校验访问权 | 保持登录 + `RESERVATION_AUDIT_READ` + 酒店访问权 | 查询审计不再写审计 |
| `POST /api/reservation/invoices/manual-generations` | `FRONTEND_USER` | 已实现 M009 CP2强制 Bearer 登录 + `RESERVATION_INVOICE_GENERATE` + 酒店访问权;`task_id` / `order_id` 可为空,传入时反查对象所属酒店 | 保持登录 + `RESERVATION_INVOICE_GENERATE` + 酒店访问权;后续如增加历史列表或预填接口需单独登记权限 | 写业务审计,记录来源类型、模板版本、生成结果摘要;生成失败写入生成记录安全错误摘要 |
| `POST /api/reservation/rooming-lists/generations` | `FRONTEND_USER` | 已实现 M010 CP1 / CP2multipart 上传来源名单并直接下载 `.xlsx`;已在 multipart 参数绑定前前置校验登录和生成权限 | 登录 + `RESERVATION_ROOMING_LIST_GENERATE` + 酒店访问权;后端从来源 Excel `旅游日期` 派生 Arrival / DepartureAdults 按分房结果计算,目标默认值区域只保留 Payment Type / Nationality第一版仍不落库、不上传 OSS | CP1 / CP2 不落生成记录表;错误响应不得记录完整名单、证件信息、源文件内容或生成文件内容;后续若增加历史记录再补业务审计 |
| `POST /api/reservation/rooming-lists/generations` | `FRONTEND_USER` | 已实现 M010 CP1 / CP2multipart 上传来源名单并直接下载 `.xlsx`;已在 multipart 参数绑定前前置校验登录和生成权限 | 登录 + `RESERVATION_ROOMING_LIST_GENERATE` + 酒店访问权;后端从来源 Excel `旅游日期` 派生 Arrival / DepartureAdults 按分房结果计算,目标默认值区域只保留 Payment Type / NationalityPayment Type 默认 `BTQR` 且仅允许 `BTQR` / `CA`第一版仍不落库、不上传 OSS | CP1 / CP2 不落生成记录表;错误响应不得记录完整名单、证件信息、源文件内容或生成文件内容;后续若增加历史记录再补业务审计 |
### 3.2.1 V4 工作台、订单详情和任务详情页展示层技术信息边界