changelog: 研学收获模块 + 备选人员详情 + staff容错

这个提交包含在:
API Changelog Bot 2026-03-27 10:30:22 +08:00
父节点 061f9b14ef
当前提交 d9719aa714

查看文件

@ -0,0 +1,103 @@
# 2026-03-27 产品研学收获 + 备选人员详情 + Staff容错
## 一、新增产品研学收获模块PR #5
与"安全保障"设计完全一致,管理端CRUD + 小程序详情返回。
### 管理端接口
| 方法 | 路由 | 说明 |
|------|------|------|
| GET | `/admin/product/{productId}/study-gain` | 研学收获列表 |
| POST | `/admin/product/{productId}/study-gain` | 添加研学收获 |
| PUT | `/admin/product/{productId}/study-gain/{id}` | 更新研学收获 |
| DELETE | `/admin/product/{productId}/study-gain/{id}` | 删除研学收获 |
### 请求体POST/PUT
```json
{
"category": "马术体验",
"name": "马术体验·培养勇气与平衡感",
"description": "学习马术基本功",
"icon": "horsemanship",
"sortOrder": 1
}
```
### 小程序产品详情新增字段
`ProductVO.studyGains``[{icon, title, description}]`
`safetyItems` 格式完全一致,前端可直接复用安全保障的渲染组件。
---
## 二、修复产品备选人员返回完整信息PR #4
### 变更
`ProductVO.staffConfigs` 每项新增 `staffDetails` 字段,包含备选人员的完整信息。
### 之前
```json
{
"staffType": "LEADER",
"staffIds": ["1005"],
"staffDetails": null
}
```
### 现在
```json
{
"staffType": "LEADER",
"staffIds": ["1005"],
"staffDetails": [
{
"staffId": "1005",
"name": "刘大山",
"coverUrl": "https://...",
"phone": "13800001005",
"staffType": "LEADER",
"yearsOfExperience": 15,
"rating": 4.9,
"tags": [...],
...全部StaffVO字段
}
]
}
```
---
## 三、修复Staff素材ID解析容错PR #3
后端内部修复,前端无需改动。修复了素材ID字段包含非数字时导致500的问题。
`/internal/staff/batch-detail` 现在返回完整 StaffVO之前只返回部分字段
---
## 部署说明
需重启:**hl-product-service**、**hl-resource-service**
测试环境需执行建表SQL
```sql
CREATE TABLE product_study_gain (
id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
category VARCHAR(50) NOT NULL,
name VARCHAR(100) NOT NULL,
description VARCHAR(500) DEFAULT NULL,
icon VARCHAR(100) DEFAULT NULL,
sort_order INT DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
deleted_at DATETIME DEFAULT NULL,
PRIMARY KEY (id),
KEY idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```