changelog: 6d105cb - feat: 保险选择性投保 + 出行人线下投保备注

这个提交包含在:
API Changelog Bot 2026-03-25 12:40:43 +08:00
父节点 6abc134a63
当前提交 73b26667c8

查看文件

@ -0,0 +1,131 @@
# 接口变更记录 — 2026-03-25 12:40
> **提交** `6d105cb` · **作者** wx · **时间** 2026-03-25 12:40:43 +0800
>
> feat: 保险选择性投保 + 出行人线下投保备注
## 变更总览
- **保险服务**
- AdminInsurance (+4)
- InternalInsurance (+1)
---
## 保险服务
### AdminInsurance
> 📖 **接口文档**: [http://192.168.100.236:8098/doc.html](http://192.168.100.236:8098/doc.html) → 标签 **「保险管理」**
### 🆕 `POST` /admin/insurance/order/{orderId}/selective-purchase — 选择部分出行人投保
> 自动投保失败后,管理员可选择部分出行人手动在线投保如排除不满1岁婴儿
**参数**
- `{orderId}` (`Long`) — 路径参数旅行订单ID
**响应** `Result<AutoPurchaseResultVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `success` | `boolean` | 是否全部成功 |
| `purchasedCount` | `int` | 成功投保段数 |
| `failedCount` | `int` | 失败段数 |
| `failureReason` | `String` | 失败原因(部分失败或全部失败时返回第一个错误) |
### 🆕 `POST` /admin/insurance/order/{orderId}/traveler-note — 添加出行人保险备注
> 为不能在线投保的出行人添加备注如不满1岁婴儿标记为线下投保
**参数**
- `{orderId}` (`Long`) — 路径参数旅行订单ID
### 🆕 `DELETE` /admin/insurance/order/{orderId}/traveler-note/{noteId} — 删除出行人保险备注
**参数**
- `{orderId}` (`Long`) — 路径参数旅行订单ID
- `{noteId}` (`Long`) — 路径参数备注ID
**响应** `Result<Void>`
### 🆕 `GET` /admin/insurance/order/{orderId}/traveler-coverage — 查询出行人保险覆盖状态
> 返回订单每个出行人的保险状态:
**参数**
- `{orderId}` (`Long`) — 路径参数旅行订单ID
### InternalInsurance
> 📖 **接口文档**: [http://192.168.100.236:8098/doc.html](http://192.168.100.236:8098/doc.html) → 标签 **「【内部接口】保险Feign调用」**
### 🆕 `GET` /internal/insurance/fully-covered/{orderId} — 检查保险是否全覆盖-含线下备注(内部调用)
> 考虑在线保单+线下投保备注,判断是否所有出行人都有保险覆盖
**参数**
- `{orderId}` (`Long`) — 路径参数旅行订单ID
- `travelerCount` (`int`) — 查询参数:出行人数
**响应** `Result<Boolean>`
---
## 📦 其他数据对象变更
> 以下变更未直接关联到本次接口变更,但可能影响现有接口的请求/响应
### 保险服务
#### 🆕 SelectivePurchaseRequest
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `Long` | 保险方案ID |
| `travelerIds` | `List<Long>` | 要投保的出行人ID列表 |
#### 🆕 TravelerCoverageVO
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `travelerId` | `String` | 出行人ID |
| `name` | `String` | 姓名 |
| `birthday` | `LocalDate` | 出生日期 |
| `age` | `Integer` | 年龄 |
| `travelerType` | `String` | 出行人类型ADULT/CHILD |
| `coverageStatus` | `String` | 保险覆盖状态ONLINE_INSURED=在线已投保, OFFLINE_NOTED=线下已备注, NOT_COVERED=未投保 |
| `policies` | `List<Map<String, Object>>` | 在线保单列表coverageStatus=ONLINE_INSURED时有值 |
| `noteId` | `String` | 线下备注IDcoverageStatus=OFFLINE_NOTED时有值 |
| `noteType` | `String` | 线下备注类型 |
| `noteRemark` | `String` | 线下备注说明coverageStatus=OFFLINE_NOTED时有值 |
#### 🆕 TravelerNoteRequest
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `travelerId` | `Long` | 出行人ID |
| `travelerName` | `String` | 出行人姓名 |
| `noteType` | `String` | 备注类型OFFLINE=线下投保, SKIP=跳过, OTHER=其他 |
| `remark` | `String` | 备注说明 |
<details>
<summary>📁 全部变更文件 (点击展开)</summary>
```
M hl-insurance-service/src/main/java/com/hulalv/insurance/controller/AdminInsuranceController.java
M hl-insurance-service/src/main/java/com/hulalv/insurance/controller/InternalInsuranceController.java
A hl-insurance-service/src/main/java/com/hulalv/insurance/dto/SelectivePurchaseRequest.java
A hl-insurance-service/src/main/java/com/hulalv/insurance/dto/TravelerNoteRequest.java
A hl-insurance-service/src/main/java/com/hulalv/insurance/entity/InsuranceTravelerNote.java
A hl-insurance-service/src/main/java/com/hulalv/insurance/mapper/InsuranceTravelerNoteMapper.java
M hl-insurance-service/src/main/java/com/hulalv/insurance/service/InsuranceOrderService.java
A hl-insurance-service/src/main/java/com/hulalv/insurance/vo/TravelerCoverageVO.java
A sql/insurance_traveler_note.sql
```
</details>