docs: 更新 README 和新增审核流程文档
This commit is contained in:
307
README.md
307
README.md
@@ -647,311 +647,8 @@ export default defineConfig({
|
||||
|
||||
---
|
||||
|
||||
## 技能开发流程与审核机制
|
||||
## 更多文档
|
||||
|
||||
### 流程概述
|
||||
|
||||
技能从创建到上架的完整流程包括:技能创建、版本上传、审核管理、上架销售四个主要环节。
|
||||
|
||||
### 状态定义
|
||||
|
||||
#### 技能状态
|
||||
|
||||
技能有四种状态,表示技能在平台上的可见性和可用性:
|
||||
|
||||
| 状态 | 英文 | 描述 | 图标样式 |
|
||||
|------|------|------|---------|
|
||||
| 开发中 | `dev` | 技能已创建但尚未有审核通过的版本 | status-stopped (灰色) |
|
||||
| 已上架 | `published` | 技能有审核通过的版本,可在技能市场展示和订阅 | status-running (绿色) |
|
||||
| 下架审核中 | `unlisting` | 开发者申请下架,等待管理员审核 | status-warning (黄色) |
|
||||
| 已下架 | `unlisted` | 技能已下架,不在技能市场展示,可删除 | status-stopped (灰色) |
|
||||
|
||||
#### 版本状态
|
||||
|
||||
版本有四种状态,表示版本在审核流程中的位置:
|
||||
|
||||
| 状态 | 英文 | 描述 | 图标样式 |
|
||||
|------|------|------|---------|
|
||||
| 审核中 | `reviewing` | 版本已提交,等待管理员审核 | status-warning (黄色) |
|
||||
| 审核通过 | `approved` | 版本审核通过,自动生效,技能可上架 | status-running (绿色) |
|
||||
| 审核拒绝 | `rejected` | 版本审核未通过,需修改后重新提交 | status-error (红色) |
|
||||
| 已撤销 | `withdrawn` | 开发者主动撤回审核,版本废弃 | status-stopped (灰色) |
|
||||
|
||||
### 完整流程
|
||||
|
||||
```
|
||||
┌───────────────────────────────────────────────────────────────────┐
|
||||
│ 技能开发流程 │
|
||||
└───────────────────────────────────────────────────────────────────┘
|
||||
|
||||
开发者操作 管理员操作 技能市场
|
||||
──────────── ─────────── ─────────
|
||||
[1. 创建技能] → 技能: 开发中
|
||||
│
|
||||
↓ (创建后可立即上传版本)
|
||||
[2. 上传新版本] → 版本: 审核中
|
||||
│ ──────────────────────────▶ [待审核列表]
|
||||
↓ │
|
||||
[3. 提交审核] ↓
|
||||
│ [4. 审核操作]
|
||||
├───────────────────────────────────────────────┼───────┐
|
||||
│ │ │
|
||||
↓ ↓ ↓
|
||||
[审核通过] [审核通过] [审核拒绝]
|
||||
│ │
|
||||
└───────────────────────────────────────────────┘
|
||||
↓
|
||||
技能: 已上架
|
||||
版本: 审核通过(生效)
|
||||
│
|
||||
───────────────────────────────────────────────────────────▶ [可在技能市场展示]
|
||||
|
||||
后续操作:
|
||||
- [5. 上传新版本] → (需先撤回审核中的版本,一次只能有一个审核中)
|
||||
- [6. 下架技能] → (需先撤回审核中的版本,下架需管理员审核)
|
||||
- [7. 删除技能] → (已上架的技能必须先下架)
|
||||
```
|
||||
|
||||
### 关键规则
|
||||
|
||||
#### 1. 版本上传规则
|
||||
|
||||
- **版本号由后端自动生成**:前端上传时无需填写版本号
|
||||
- **上传即进入审核**:版本上传后状态自动变为"审核中",没有"草稿"状态
|
||||
- **一次只能有一个审核中的版本**:
|
||||
- 如果存在审核中的版本,"上传新版本"按钮禁用
|
||||
- 审核通过或撤回后,才能上传新版本
|
||||
|
||||
#### 2. 审核中版本操作
|
||||
|
||||
- 可执行操作:撤回审核、下载
|
||||
- 撤回审核后,版本状态变为"已撤销"(终态),无法继续操作
|
||||
- 如需重新提交,需上传新版本
|
||||
|
||||
#### 3. 技能操作规则
|
||||
|
||||
| 技能状态 | 可用操作 | 备注 |
|
||||
|---------|---------|------|
|
||||
| 开发中 | 更新基本信息、删除技能 | 未上架,可直接删除 |
|
||||
| 已上架 | 更新基本信息、下架技能 | 删除按钮禁用(需先下架) |
|
||||
| 已上架+有审核中版本 | 更新基本信息 | 下架按钮禁用、上传按钮禁用 |
|
||||
| 下架审核中 | 无(等待管理员审核) | 所有操作按钮禁用 |
|
||||
| 已下架 | 更新基本信息、删除技能 | 可删除 |
|
||||
|
||||
#### 4. 下架流程
|
||||
|
||||
- **下架需要管理员审核**:
|
||||
1. 开发者点击"下架技能"
|
||||
2. 技能状态变为"下架审核中"
|
||||
3. 管理台"审核管理" -> "下架审核"列表中显示
|
||||
4. 管理员审核通过/拒绝
|
||||
5. 通过:技能状态变为"已下架",技能市场移除
|
||||
6. 拒绝:技能状态回到"已上架"
|
||||
|
||||
- **下架期间禁止操作**:
|
||||
- 下架审核中的技能,所有操作按钮禁用
|
||||
- 不能上传新版本
|
||||
|
||||
#### 5. 审核拒绝
|
||||
|
||||
- 版本审核拒绝后,在版本说明下方显示拒绝理由
|
||||
- 被拒绝的版本在技能详情页可见,但无法再次提交审核
|
||||
- 开发者需上传新版本重新提交
|
||||
|
||||
### 数据结构
|
||||
|
||||
#### 技能数据(skills.js / developerData.js)
|
||||
|
||||
```javascript
|
||||
{
|
||||
id: 1,
|
||||
name: '代码生成助手',
|
||||
desc: '根据需求自动生成高质量代码',
|
||||
tags: ['开发', '代码', 'AI'],
|
||||
status: 'published', // 技能状态: dev | published | unlisting | unlisted
|
||||
hasPendingReview: false, // 是否有审核中的版本
|
||||
category: '开发工具',
|
||||
versions: [...] // 版本列表
|
||||
}
|
||||
```
|
||||
|
||||
#### 版本数据
|
||||
|
||||
```javascript
|
||||
{
|
||||
version: 'v1.3.0',
|
||||
date: '2026-03-12',
|
||||
desc: '新增 Python 3.11 支持',
|
||||
status: 'approved', // 版本状态: reviewing | approved | rejected | withdrawn
|
||||
rejectionReason: '' // 审核拒绝理由(仅status为rejected时)
|
||||
}
|
||||
```
|
||||
|
||||
#### 审核列表数据
|
||||
|
||||
```javascript
|
||||
// 版本审核列表
|
||||
pendingVersionReviews = [{
|
||||
id: 1,
|
||||
skillName: '代码生成助手',
|
||||
version: 'v1.4.0',
|
||||
date: '2026-03-20',
|
||||
developer: '张三'
|
||||
}]
|
||||
|
||||
// 下架审核列表
|
||||
pendingUnlistReviews = [{
|
||||
id: 1,
|
||||
skillName: 'CRM 客户查询',
|
||||
currentVersion: 'v1.5.0',
|
||||
date: '2026-03-20',
|
||||
developer: '赵六'
|
||||
}]
|
||||
```
|
||||
|
||||
### 页面交互细节
|
||||
|
||||
#### 技能详情页(SkillEditorPage)
|
||||
|
||||
**优化后的页面结构(三段式布局):**
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 技能编辑页面优化 │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 技能概览卡片 │ │
|
||||
│ ├─────────────────────────────────────────────────────┤ │
|
||||
│ │ ┌────┐ 技能名称 [状态] [编辑基本信息] │ │
|
||||
│ │ │图标│ ─────────────────────────────────────────── │ │
|
||||
│ │ │80px│ 👤 1,234 ⭐ 4.8 📦 v1.2.0 │ │
|
||||
│ │ │x80 │ [分类] [标签1] [标签2] [标签3] │ │
|
||||
│ │ └────┘ 技能描述... │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 版本历史卡片 │ │
|
||||
│ ├─────────────────────────────────────────────────────┤ │
|
||||
│ │ 版本历史 [上传新版本] │ │
|
||||
│ │ ┌───────────────────────────────────────────────┐ │ │
|
||||
│ │ │ 版本号 │ 状态 │ 说明 │ 时间 │ 操作 │ │ │
|
||||
│ │ │ v1.3.0 │ 通过 │ ... │ ... │ [下载] │ │ │
|
||||
│ │ │ v1.2.0 │ 拒绝 │ ... │ ... │ [下载] │ │ │
|
||||
│ │ └───────────────────────────────────────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ 管理操作卡片 │ │
|
||||
│ ├─────────────────────────────────────────────────────┤ │
|
||||
│ │ 管理 │ │
|
||||
│ │ [下架技能] [删除技能] │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键改进:**
|
||||
1. **三段式布局**:头部概览、版本历史、管理操作三个独立卡片
|
||||
2. **图标简化**:移除渐变背景,直接显示图标或首字母
|
||||
3. **信息整合**:
|
||||
- 第一行:技能名称、状态标签、编辑按钮
|
||||
- 第二行:指标行(图标+数值,无文字说明)
|
||||
- 第三行:标签区(分类标签在前,蓝色背景区分)
|
||||
- 第四行:技能描述
|
||||
4. **操作按钮分组**:编辑操作在右上角,危险操作在底部管理区
|
||||
5. **上传按钮单一入口**:只在版本历史卡片标题旁显示
|
||||
6. **状态标签纯文字**:移除图标,通过颜色区分状态
|
||||
|
||||
**版本历史表格:**
|
||||
|
||||
| 版本号 | 版本说明 | 状态 | 更新时间 | 操作 |
|
||||
|-------|---------|------|---------|------|
|
||||
| v1.3.0 | 新增功能... | 审核通过 | 2026-03-12 | [下载] |
|
||||
| v1.2.0 | 优化性能... | 审核拒绝 | 2026-03-08 | [下载] 拒绝理由: 测试用例不完整 |
|
||||
| v1.1.0 | 新增支持... | 审核中 | 2026-02-20 | [撤回审核] [下载] |
|
||||
|
||||
**技能操作规则:**
|
||||
- 编辑基本信息:始终可用,位置在概览卡片右上角
|
||||
- 上传新版本:有审核中版本时禁用,位置在版本历史卡片标题旁
|
||||
- 下架技能:技能状态为已上架且无审核中版本时可用,位置在管理卡片
|
||||
- 删除技能:技能状态为开发中或已下架时可用,已上架时禁用,位置在管理卡片
|
||||
|
||||
#### 我的技能列表页(MySkillsPage)
|
||||
|
||||
**状态列展示:**
|
||||
- 开发中:显示"开发中"
|
||||
- 已上架:显示"已上架"
|
||||
- 已上架+有审核中版本:显示"已上架 · 审核中"
|
||||
- 下架审核中:显示"下架审核中"
|
||||
- 已下架:显示"已下架"
|
||||
|
||||
**操作列:**
|
||||
- 编辑:始终可用
|
||||
- 下架技能:已上架且无审核中版本时可用
|
||||
- 删除技能:开发中或已下架时可用
|
||||
|
||||
#### 管理台审核管理(AdminPage - reviewList)
|
||||
|
||||
**Tab切换:**
|
||||
- 版本审核:显示待审核的版本列表
|
||||
- 下架审核:显示待审核的下架申请列表
|
||||
|
||||
**版本审核列表:**
|
||||
| 技能名称 | 版本号 | 提交时间 | 开发者 | 操作 |
|
||||
|---------|-------|---------|--------|------|
|
||||
| 代码生成助手 | v1.4.0 | 2026-03-20 | 张三 | [审核] |
|
||||
|
||||
**审核详情页(reviewDetail):**
|
||||
|
||||
**版本审核详情:**
|
||||
- 基本信息:技能名称、开发者、分类、标签
|
||||
- 版本信息:版本号、提交时间、版本说明
|
||||
- 文件列表:显示技能包包含的文件
|
||||
- 操作:[拒绝] [通过]
|
||||
|
||||
**下架审核详情:**
|
||||
- 技能信息:技能名称、开发者、当前版本、订阅数、申请时间
|
||||
- 操作:[拒绝] [通过]
|
||||
|
||||
#### 技能市场详情页(SkillDetailPage)
|
||||
|
||||
**版本展示:**
|
||||
- 只显示最新审核通过版本的信息
|
||||
- 不展示完整版本历史
|
||||
- 示例:
|
||||
```
|
||||
当前版本: v1.3.0
|
||||
更新说明: 新增 Python 3.11 支持
|
||||
更新时间: 2026-03-12
|
||||
```
|
||||
|
||||
### 状态映射关系
|
||||
|
||||
```javascript
|
||||
// 技能状态映射
|
||||
const skillStatusMap = {
|
||||
dev: { text: '开发中', className: 'status-stopped' },
|
||||
published: { text: '已上架', className: 'status-running' },
|
||||
unlisting: { text: '下架审核中', className: 'status-warning' },
|
||||
unlisted: { text: '已下架', className: 'status-stopped' }
|
||||
};
|
||||
|
||||
// 版本状态映射
|
||||
const versionStatusMap = {
|
||||
reviewing: { text: '审核中', className: 'status-warning' },
|
||||
approved: { text: '审核通过', className: 'status-running' },
|
||||
rejected: { text: '审核拒绝', className: 'status-error' },
|
||||
withdrawn: { text: '已撤销', className: 'status-stopped' }
|
||||
};
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
1. **原型说明**:本页面为静态原型,所有交互均为前端模拟,未连接真实后端
|
||||
2. **状态持久化**:页面刷新后,状态会重置为初始值
|
||||
3. **按钮禁用**:使用 HTML 原生 `disabled` 属性,配合 `title` 提示显示禁用原因
|
||||
4. **Modal 确认**:删除和下架操作需要二次确认,使用 Modal 组件展示确认对话框
|
||||
5. **Toast 提示**:操作完成后显示 Toast 提示,展示操作结果(成功/失败)
|
||||
审核审批流程的详细说明请查看:[docs/审核流程.md](docs/审核流程.md)
|
||||
|
||||
*最后更新:2026-03-21*
|
||||
|
||||
Reference in New Issue
Block a user