docs(web): 任务说明、DSH 约束与交付文档
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 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`。
|
||||
|
||||
## 验收
|
||||
|
||||
```bash
|
||||
npm run test:smoke
|
||||
```
|
||||
|
||||
冒烟 [5] 段落:submit → pending、待审列表包含、驳回无意见 400、approve → published、
|
||||
重复审核 409、流水恰好 2 条。
|
||||
Reference in New Issue
Block a user