diff --git a/changelogs/2026-03/27_1029_study_gains_and_staff_details.md b/changelogs/2026-03/27_1029_study_gains_and_staff_details.md new file mode 100644 index 0000000..5e50478 --- /dev/null +++ b/changelogs/2026-03/27_1029_study_gains_and_staff_details.md @@ -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; +```