实现Rooming List Excel生成接口

This commit is contained in:
andy
2026-07-18 11:36:16 +07:00
parent 75d860129c
commit d3a52e7605
25 changed files with 1709 additions and 3 deletions

View File

@@ -74,6 +74,7 @@
| `GET/POST/PUT /api/admin/menus...` | 系统管理菜单维护 | 需要 `SYSTEM_MENU_MANAGE`;允许保存未知路由,前端必须有未知路由兜底页;已提供完整菜单树查询和批量树排序保存。 |
| `GET/POST/PUT /api/admin/hotels...` | 系统管理酒店维护 | 需要 `HOTEL_MANAGE`;新增酒店默认 `DISABLED`,单酒店阶段不能启用第二家 `ACTIVE`。 |
| `GET /api/admin/audits` | 系统管理操作审计 | 需要 `SYSTEM_ADMIN_CONSOLE_ACCESS`用于查看管理后台写操作审计不包含密码、token、secret。 |
| `POST /api/reservation/rooming-lists/generations` | 生成 Rooming List Excel | 必须带 Bearer token需要 `RESERVATION_ROOMING_LIST_GENERATE`;请求为 multipart/form-data成功后直接返回 `.xlsx` 文件流,前端按 Blob 下载处理。 |
### 5.1 本轮新增 / 修改接口说明
@@ -405,6 +406,38 @@ M009 后端 CP2 已实现:页面可不依赖订单或任务,用户手工填
- 第一版暂未提供 Invoice 历史列表、详情查询、任务 / 订单预填接口和客户联系人目录查询接口;前端客户 / 联系人候选可先按 M009 文档中的种子数据实现。
- 前端不得直接调用 `POST /api/system/document-conversions/excel-to-pdf` 来完成业务开票;该接口是 M008 调试 / 后台工具能力,受 access key 控制,不具备业务开票审计和权限边界。
### 5.12 Rooming List Excel 生成页面接入方向
M010 后端 CP1 已实现。第一版生成结果直接下载 `.xlsx`,不落库、不上传 OSS不依赖订单或任务。
接口:
```text
POST /api/reservation/rooming-lists/generations
Authorization: Bearer <access_token>
Content-Type: multipart/form-data
```
权限:
```text
RESERVATION_ROOMING_LIST_GENERATE
```
前端注意:
- 第一版页面建议作为 Reservation 运营工具入口,例如 `/reservation/rooming-lists/new`
- 该页面上传来源名单 Excel后端默认识别 `护照全名` 列。
- 姓名支持 `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`
- 第一版接口成功后直接返回 Excel 文件流,前端应按 Blob 下载处理,不要期待 JSON 里的 URL。
- 失败时返回统一 JSON 错误,例如 `ROOMING_LIST_VALIDATION_FAILED``ROOMING_LIST_SOURCE_FILE_INVALID``HOTEL_ACCESS_DENIED``FRONTEND_PERMISSION_DENIED`
- `ROOMING_LIST_VALIDATION_FAILED` 已覆盖 multipart 必填字段缺失、日期格式错误和数字格式错误,`details[]` 会返回字段级提示。
- 页面不要把上传文件内容、客人名单、生成文件内容写入浏览器日志、埋点、错误上报、URL 或 localStorage。
- 第一版没有 preview 接口、生成记录接口、OSS URL、历史下载和订单 / 任务预填;前端不要在页面上承诺这些能力。
## 6. 不给前端直接调用的接口
- `POST /api/system/reservation/demo-data` 只用于 dev/test 联调造数,不是生产业务页面接口;访问口令不能进入前端代码。