hl-api-changelog/changelogs/2026-05/21_refactor_material_remove_review_feature.md
API Changelog Bot 4061b956ea notify(2026-05-21): 素材审核拆除正式环境部署完成
- 正式 K3s hl-prod ns: hl-resource-service + hl-user-service 已部署 (commit 66c462c8)
- 正式 RDS round-trip 验证全过: material.review_status 列已 DROP, material_review_status 字典已删, 数据 5153 行完好
- 顺手记录踩坑: Flyway out-of-order 因 deploy-prod.sh 未 mvn clean 留孤儿 V99999999, 已根治 marker + rm 孤儿文件
2026-05-21 14:53:31 +08:00

6.1 KiB

refactor(material): 拆除素材审核遗留功能reviewStatus 字段 + 字典 + DTO 全删)

仓库: HL (后端 hl-resource-service + hl-user-service) 关联 PR/Issue: PR #2795, Closes #2789 日期: 2026-05-21 影响范围: 管理后台「素材库」批量审核/批量驳回功能整体废弃 接收方: mmg (前端) 前端: 需要改动 — 拆按钮 + 删 API


🚨 关键变化

「素材审核」功能业务上已不需要,本次全部拆除:

  • 后端 Material.reviewStatus 字段删除
  • DB material.review_status 列 DROP
  • DB 字典 material_review_status DELETE
  • MaterialReviewRequest DTO 删除

正式环境之前批量审核接口 PUT /admin/material/review 触发的「参数类型错误: materialId='review'(需要 Long 类型)」报错根因就是这两条:前端调了 /admin/material/review 但后端从未实现该接口,Spring 把 review 当成 {materialId} 路径变量去解析 Long,报错。


一、API 影响

不再存在的接口(后端从未实现)

PUT  /admin/material/review     ← 不再支持(前端有死调用)
PUT  /admin/material/reject     ← 不再支持(前端有死调用)

字段移除

接口 字段 改前 改后
GET /admin/material/list reviewStatus 不返回VO 本就没此字段) 不返回(一致)
GET /admin/material/{id} reviewStatus 不返回VO 本就没此字段) 不返回(一致)

实际 VO 层本来就没有 reviewStatus 字段,只是 Entity 层和 DB 列还在,本次一并清理。响应字段对前端无任何观测变化。


🚨 前端需要做的事

1. 删除批量审核/批量驳回 API

文件:hl-ui/src/api/material.js 第 335-353 行

// 整段删掉
// ========== 素材审核 ==========

/**
 * 批量审核通过
 */
export function reviewMaterials(materialIds) {
  return http.put('/material/review', { materialIds })
}

/**
 * 批量驳回素材(删除)
 */
export function rejectMaterials(materialIds) {
  return http.put('/material/reject', { materialIds })
}

2. 拆 UI 按钮 + 弹窗

文件:hl-ui/src/views/material/index.vue

  • 删除「批量审核」按钮、「批量驳回」按钮
  • 删除「批量审核确认」弹窗及相关逻辑
  • 列表/详情若有 reviewStatus 列或字段显示,一并删(实际 API 本就不返回)

3. 自查

请 mmg 全前端 grep 一遍:

grep -rE "reviewMaterials|rejectMaterials|material.*review|批量审核|审核通过|审核状态" hl-ui/src

如有残留请一并清理。


二、DB 改动Flyway 已自动跑)

  • hl-resource-service V20260521_001__drop_material_review_status.sqlALTER TABLE material DROP COLUMN review_statusMySQL 8.0 兼容写法,列不存在时跳过)
  • hl-user-service V20260521_006__drop_material_review_status_dict.sqlDELETE sys_dict_type + sys_dict_datamaterial_review_status 全部行

dev 上的 user-service Flyway 文件名是 V20260521_002,dev-v3 上为避免 out-of-order 改名为 V20260521_006。两个分支文件名不同但 SQL 内容完全一致。


三、兼容性 / 风险

  • VO 层本就无 reviewStatus 字段,前端列表/详情响应字段零变化
  • Flyway 用 information_schema 防御,多环境部署安全(本地无此列也能跑过)
  • DB 历史 review_status 值(如 PENDING/REJECTED随列 DROP 丢失语义,业务已确认不需要
  • ⚠️ 前端 PUT /admin/material/review /admin/material/reject 调用 100% 报错(路径变量 Long 解析失败,mmg 改前端前用户使用「批量审核」按钮会持续报错

四、测试服验证记录

部署到测试服 (https://web.test.1814.love:9443) 后已 round-trip 验证2026-05-21 14:01

✓ GET /admin/material/list?page=1&pageSize=1
  → 响应 item keys 中无 reviewStatus

✓ GET /admin/dict/data/material_review_status
  → code=200, data=[] (字典已清空)

Flyway 自动执行:

  • hl-resource-service 启动时跑 V20260521_001__drop_material_review_status.sqlmaterial.review_status 列已 DROP
  • hl-user-service 启动时跑 V20260521_006__drop_material_review_status_dict.sql → 字典 material_review_status 已 DELETE

五、正式部署记录2026-05-21 14:49

main 已合并 (66c462c87f34),通过 dep.test.1814.love:9443/prod API 部署 hl-resource-service + hl-user-service 到正式 K3s (hl-prod ns)。

⚠️ 部署过程踩坑(已根治):

  1. Flyway out-of-order 阻塞 hl-resource-service rollout 5 分钟

    • 根因:正式 hl_resource_service.flyway_schema_history 里有一条孤儿 marker 99999999.001 flyway pilot marker2026-05-15 引入 Flyway pilot 时遗留)
    • 来源:/opt/hl/build-repo/hl-resource-service/target/classes/db/migration/V99999999_001__flyway_pilot_marker.sql 是 src 早已删除的孤儿文件,但 deploy-prod.sh 只跑 mvn package 不带 mvn clean,target/classes 增量保留把它打进了每一个 jar
    • 修复SQL 删 history marker + rm Node1 build-repo target 孤儿文件 + kubectl rollout restart
    • 后续:建议在 deploy-prod.shmvn cleangit clean -fxd $SERVICE 防再次发生
  2. 首次部署因 .m2 并发竞争失败(之前测试服踩过,与本次无关),已串行化

正式 RDS 验证(直连 RDS 实测)

-- hl_resource_service
 SHOW COLUMNS FROM material LIKE 'review_status'  0 rows (列已 DROP)
 flyway_schema_history top 1 = 20260521.001 drop material review status (success=1)

-- hl_user_service
 SELECT * FROM sys_dict_data WHERE dict_type='material_review_status'  0 rows
 SELECT * FROM sys_dict_type WHERE dict_type='material_review_status'  0 rows
 flyway_schema_history top 2 = 20260521.002 drop material review status dict / 20260521.001 init meal option dict (success=1)

-- material 表数据完好 5153 行

五、联系人

后端wx呼籁旅行 前端mmg

如有疑问可在 #2789 评论区留言。