Files
opendance-web/tasks/007-upload-review.md
T

1.9 KiB
Raw Permalink Blame History

T-WEB-007 上传审核流程

  • 状态:done
  • 依赖:T-WEB-003 / 004 / 005

目标

对歌曲、动作、模型三类资产实施统一的状态机与审核流水,确保只有审核通过的资产 被客户端消费。

load

DSH.md
contracts/rest-api.yaml          # 锚点:#/paths/~1api~1reviews
contracts/data-models.md         # 锚点:§1.2 PublishStatus、§5 ReviewRecord
contracts/database.md            # 锚点:状态机
web-server/src/reviews/*

状态机(契约冻结)

draft ──submit──▶ pending ──approve──▶ published
                     │
                     └──reject──▶ rejected ──submit──▶ pending
方法 路径 说明
GET /api/reviews 不传 status → 审核流水;传 status → 该状态待审资产(三类合并)
GET /api/reviews/:targetType/:id/history 单个资产的审核历史
POST /api/reviews/:targetType/:id/submit → pending
POST /api/reviews/:targetType/:id/approve → published
POST /api/reviews/:targetType/:id/reject → rejected,必须填写意见
POST /api/reviews/:targetType/:id/withdraw → draft

关键实现

  • STATUS_TRANSITIONS 是状态机的唯一来源;非法流转一律 409, 重复审核同一状态同样 409。
  • 驳回未填 comment → 400(合规要求:拒绝侵权内容需留痕)。
  • 每次成功流转都写一条 review_records,记录 fromStatus / toStatus / reviewer / comment。
  • 三类资产的直连 PATCH 也会校验状态机,避免绕过审核流程。
  • /api/catalog/export 与 /api/catalog/version 只导出 published。

验收

npm run test:smoke

冒烟 [5] 段落:submit → pending、待审列表包含、驳回无意见 400、approve → published、 重复审核 409、流水恰好 2 条。