docs: 更新 README 和新增审核流程文档

This commit is contained in:
2026-03-21 15:39:05 +08:00
parent dbfb3c08c9
commit 8179ff2f95
2 changed files with 249 additions and 305 deletions

307
README.md
View File

@@ -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*