修复Rooming List生成并导入0718需求包
This commit is contained in:
@@ -432,9 +432,10 @@ RESERVATION_ROOMING_LIST_GENERATE
|
||||
- 姓名支持 `LI/CHUNHONG` 和 `LI CHUNHONG` 两类格式;后端会把第一段写入目标 `Name`,剩余部分写入目标 `First Name`。
|
||||
- 前端必须让用户输入 `people_per_room`,后端按名单顺序分组,并用 `ceil(total_people / people_per_room)` 生成房间行。
|
||||
- 每组第一位旅客写入 `Name` / `First Name`,同组剩余旅客写入 `Accompanying Guests`,多人用英文逗号分隔。
|
||||
- 除 `Line`、`Name`、`First Name`、`Number of Rooms`、`Accompanying Guests` 外,目标 Excel 其他字段第一版都由前端输入或选择,例如 `Arrival`、`Departure`、`Room Type`、`Rate Code`、`Payment Type`、`Nationality`。
|
||||
- 除 `Line`、`Name`、`First Name`、`Number of Rooms`、`Accompanying Guests` 外,目标 Excel 其他字段第一版都由前端输入或选择,例如 `Title`、`Arrival`、`Departure`、`Room Type`、`Rate Code`、`Payment Type`、`Nationality`。
|
||||
- 第一版接口成功后直接返回 Excel 文件流,前端应按 Blob 下载处理,不要期待 JSON 里的 URL。
|
||||
- 失败时返回统一 JSON 错误,例如 `ROOMING_LIST_VALIDATION_FAILED`、`ROOMING_LIST_SOURCE_FILE_INVALID`、`HOTEL_ACCESS_DENIED` 或 `FRONTEND_PERMISSION_DENIED`。
|
||||
- 该上传接口会在 multipart 参数绑定前先校验 Bearer token 和 `RESERVATION_ROOMING_LIST_GENERATE` 权限;未登录时优先返回 401,不会因为缺少业务字段先返回 400。
|
||||
- `ROOMING_LIST_VALIDATION_FAILED` 已覆盖 multipart 必填字段缺失、日期格式错误和数字格式错误,`details[]` 会返回字段级提示。
|
||||
- 页面不要把上传文件内容、客人名单、生成文件内容写入浏览器日志、埋点、错误上报、URL 或 localStorage。
|
||||
- 第一版没有 preview 接口、生成记录接口、OSS URL、历史下载和订单 / 任务预填;前端不要在页面上承诺这些能力。
|
||||
|
||||
@@ -160,6 +160,7 @@ Content-Type: multipart/form-data
|
||||
| `arrival` | string | 是 | 入住日期,酒店本地业务日期,格式 `yyyy-MM-dd` |
|
||||
| `departure` | string | 是 | 离店日期,酒店本地业务日期,格式 `yyyy-MM-dd` |
|
||||
| `room_type` | string | 是 | 目标 Excel 的 `Room Type` |
|
||||
| `title` | string | 否 | 目标 Excel 的 `Title` |
|
||||
| `rate_code` | string | 否 | 目标 Excel 的 `Rate Code` |
|
||||
| `adults` | integer | 否 | 目标 Excel 的 `Adults`;为空时可由后端按分组人数派生 |
|
||||
| `children` | integer | 否 | 目标 Excel 的 `Children`;为空时默认 `0` |
|
||||
@@ -212,6 +213,7 @@ RESERVATION_ROOMING_LIST_GENERATE
|
||||
|
||||
- 必须登录。
|
||||
- 必须拥有 `RESERVATION_ROOMING_LIST_GENERATE` 权限。
|
||||
- 上传接口在 multipart 参数绑定前执行登录和权限前置校验,未登录或无权限请求不会进入来源文件解析。
|
||||
- 必须校验用户对 `hotel_id` 的访问权。
|
||||
- 第一版直接下载、不落库,因此不写生成记录表。
|
||||
- 当前 CP1 不新增持久化审计表;后续如增加生成记录或历史下载,再补业务审计落库。
|
||||
|
||||
@@ -55,7 +55,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;multipart 上传来源名单并直接下载 `.xlsx` | 登录 + `RESERVATION_ROOMING_LIST_GENERATE` + 酒店访问权;第一版不落库、不上传 OSS | CP1 不落生成记录表;错误响应不得记录完整名单和证件信息,后续若增加历史记录再补业务审计 |
|
||||
| `POST /api/reservation/rooming-lists/generations` | `FRONTEND_USER` | 已实现 M010 CP1;multipart 上传来源名单并直接下载 `.xlsx`;已在 multipart 参数绑定前前置校验登录和生成权限 | 登录 + `RESERVATION_ROOMING_LIST_GENERATE` + 酒店访问权;第一版不落库、不上传 OSS | CP1 不落生成记录表;错误响应不得记录完整名单和证件信息,后续若增加历史记录再补业务审计 |
|
||||
|
||||
### 3.3 来源邮件接口
|
||||
|
||||
|
||||
Reference in New Issue
Block a user