# 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; ```