library-picturebook-activity/docs/legacy/比赛平台-开发计划.md
aid 418aa57ea8 Day4: 超管端设计优化 + UGC绘本创作社区P0实现
一、超管端设计优化
- 文档管理SOP体系建立,docs目录重组
- 统一用户管理:跨租户全局视角,合并用户管理+公众用户
- 活动监管全模块重构:全部活动(统计卡片+阶段筛选+SuperDetail详情页)、报名数据/作品数据/评审进度(两层合一扁平列表)、成果发布(去Tab+统计+隐藏写操作)
- 菜单精简:移除评委管理/评审规则/通知管理
- Bug修复:租户编辑丢失隐藏菜单、pageSize限制、主色统一

二、UGC绘本创作社区P0
- 数据库:10张新表(user_works/user_work_pages/work_tags等)
- 子女账号独立化:Child升级为独立User,家长切换+独立登录
- 用户作品库:CRUD+发布审核,8个API
- AI创作流程:提交→生成→保存到作品库,4个API
- 作品广场:首页改造为推荐流,标签+搜索+排序
- 内容审核(超管端):作品审核+作品管理+标签管理
- 活动联动:WorkSelector作品选择器
- 布局改造:底部5Tab(发现/创作/活动/作品库/我的)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:20:25 +08:00

578 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 比赛平台管理系统 - 前后端开发计划
## 一、项目概述
### 1.1 技术栈
| 层级 | 技术 |
|------|------|
| 前端 | Vue 3 + TypeScript + Ant Design Vue + Vite |
| 后端 | NestJS + Prisma + MySQL |
| 架构 | 多租户 + RBAC权限 + 动态路由菜单 |
### 1.2 系统角色
```
┌─────────────────────────────────────────────────────────────┐
│ 前端应用 │
├──────────┬──────────┬──────────┬──────────┬─────────────────┤
│ 超管端 │ 学校管理端 │ 教师端 │ 学生端 │ 评委端 │
│ (admin) │ (school) │(teacher) │(student) │ (judge) │
└──────────┴──────────┴──────────┴──────────┴─────────────────┘
```
---
## 二、超管端需求对照表(根据需求表格)
### 2.1 赛事管理模块
#### 2.1.1 赛事列表页
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 列表查询 | 分页、筛选(赛事名称、状态、时间范围) | `GET /contests` ✅ | `contests/Index.vue` | 80% |
| 发布/撤销 | 切换赛事发布状态 | `PATCH /contests/:id/publish` ✅ | 按钮操作 | 100% |
| 编辑 | 跳转编辑页 | `PATCH /contests/:id` ✅ | 路由跳转 | 80% |
| 详情 | 查看赛事详情 | `GET /contests/:id` ✅ | `contests/Detail.vue` | 80% |
| 删除 | 删除赛事(软删除) | `DELETE /contests/:id` ✅ | 按钮+确认 | 100% |
| 标记完结 | 将赛事标记为已完结状态 | 需新增接口 | 按钮操作 | 0% |
#### 2.1.2 赛事新建/编辑页多Tab表单
| Tab | 字段 | 后端支持 | 前端组件 | 完成度 |
|-----|------|----------|----------|--------|
| **基本信息** | 赛事名称、赛事类型(个人/团队)、赛事封面、赛事简介、详细说明 | ✅ Contest模型已有 | `ContestForm.vue` | 80% |
| **报名信息** | 报名开始/结束时间、报名范围(年级/班级)、团队人数限制、是否需审核 | ✅ Contest模型已有 | Tab组件 | 60% |
| **作品信息** | 提交开始/结束时间、作品类型、是否允许重复提交、作品要求 | ✅ Contest模型已有 | Tab组件 | 60% |
| **评审信息** | 评审开始/结束时间、评审规则、评分维度、评委分配 | ✅ ReviewRule模型 | Tab组件 | 40% |
#### 2.1.3 赛事公告
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 公告列表 | 查询赛事公告 | `GET /contests/notices/contest/:id` ✅ | 需新增页面 | 20% |
| 新建公告 | 创建赛事公告 | `POST /contests/notices` ✅ | 弹窗表单 | 20% |
| 编辑公告 | 修改公告内容 | `PATCH /contests/notices/:id` ✅ | 弹窗表单 | 20% |
| 删除公告 | 删除公告 | `DELETE /contests/notices/:id` ✅ | 按钮操作 | 20% |
---
### 2.2 报名管理模块
#### 2.2.1 个人报名列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 列表查询 | 筛选(赛事、报名状态、学生姓名) | `GET /contests/registrations` ✅ | `registrations/Index.vue` | 70% |
| 审核通过 | 批量/单个审核通过 | `PATCH /registrations/:id/review` ✅ | 按钮操作 | 70% |
| 审核拒绝 | 批量/单个审核拒绝 | `PATCH /registrations/:id/review` ✅ | 按钮操作 | 70% |
| 导出 | 导出报名名单Excel | 需新增接口 | 按钮操作 | 0% |
| 报名详情 | 查看报名详细信息 | `GET /registrations/:id` ✅ | 弹窗/抽屉 | 50% |
#### 2.2.2 团队报名列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 列表查询 | 筛选(赛事、团队名称、负责人) | `GET /contests/teams` ✅ | 需新增页面 | 30% |
| 团队详情 | 查看团队成员信息 | `GET /contests/teams/:id` ✅ | 弹窗/抽屉 | 30% |
| 审核操作 | 审核团队报名 | `PATCH /registrations/:id/review` ✅ | 按钮操作 | 30% |
---
### 2.3 参赛作品模块
#### 2.3.1 作品列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 列表查询 | 筛选(赛事、作品状态、参赛者) | `GET /contests/works` ✅ | `works/Index.vue` | 60% |
| 锁定作品 | 锁定作品不允许再修改 | `PATCH /contests/works/:id` ✅ | 按钮操作 | 50% |
| 分配评委 | 将作品分配给评委 | `POST /contests/reviews` ✅ | 弹窗操作 | 40% |
| 查看详情 | 跳转作品详情页 | `GET /contests/works/:id` ✅ | 路由跳转 | 50% |
#### 2.3.2 作品详情页
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 基本信息 | 作品名称、提交者、提交时间、版本号 | `GET /contests/works/:id` ✅ | 详情页 | 50% |
| 作品预览 | 预览作品内容(图片/视频/文档) | 需文件服务 | 预览组件 | 20% |
| 附件列表 | 查看作品附件 | 已有模型 | 附件列表 | 40% |
| 评审记录 | 查看各评委评分 | `GET /contests/reviews` ✅ | 评审列表 | 30% |
| 历史版本 | 查看作品历史版本 | 需扩展接口 | 版本列表 | 20% |
---
### 2.4 评审进度模块
#### 2.4.1 评审进度列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 进度概览 | 各赛事评审进度统计 | 需新增接口 | `reviews/Index.vue` | 30% |
| 评委完成度 | 各评委评审完成情况 | 需新增接口 | 统计列表 | 20% |
| 作品评审状态 | 各作品评审状态分布 | 需新增接口 | 状态图表 | 20% |
#### 2.4.2 评审进度详情
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 作品评审明细 | 单个作品各评委评分详情 | `GET /contests/reviews` ✅ | 详情页 | 30% |
| 评分对比 | 评委评分差异对比 | 需新增接口 | 对比图表 | 0% |
| 最终得分 | 计算并显示最终得分 | 需完善逻辑 | 得分展示 | 20% |
---
### 2.5 评委管理模块
#### 2.5.1 评委池列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 评委列表 | 查询所有评委 | `GET /contests/judges/contest/:id` ✅ | 需新增页面 | 40% |
| 添加评委 | 从用户中选择添加评委 | `POST /contests/judges` ✅ | 弹窗选择 | 40% |
| 设置权重 | 设置评委权重(加权平均) | `PATCH /contests/judges/:id` ✅ | 表单编辑 | 30% |
| 移除评委 | 移除评委 | `DELETE /contests/judges/:id` ✅ | 按钮操作 | 40% |
#### 2.5.2 评委详情
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 基本信息 | 评委姓名、职称、专业领域 | `GET /contests/judges/:id` ✅ | 详情页 | 30% |
| 评审统计 | 已评/待评数量统计 | 需新增接口 | 统计卡片 | 0% |
| 评审记录 | 该评委的评审记录 | `GET /contests/reviews` ✅ | 记录列表 | 20% |
---
### 2.6 评审规则模块
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 规则配置 | 在赛事编辑中配置评审规则 | `POST/PATCH /contests/review-rules` ✅ | Tab组件 | 40% |
| 评分维度 | 配置评分维度JSON配置 | 已支持dimensions字段 | 动态表单 | 30% |
| 计分方式 | 选择计分方式(平均/加权/最高/最低) | 已支持calculation字段 | 下拉选择 | 40% |
| 分数范围 | 设置最低/最高分 | 已支持minScore/maxScore | 数字输入 | 40% |
---
### 2.7 赛果发布模块
#### 2.7.1 赛果列表
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 排名列表 | 按最终得分排名 | 需新增接口 | 需新增页面 | 0% |
| 奖项设置 | 设置一二三等奖及比例 | 需新增接口 | 配置表单 | 0% |
| 批量设置 | 批量设置获奖等级 | 需新增接口 | 批量操作 | 0% |
| 发布赛果 | 发布最终结果 | 需新增接口 | 按钮操作 | 0% |
#### 2.7.2 赛果详情
| 功能点 | 描述 | 后端API | 前端组件 | 完成度 |
|--------|------|---------|----------|--------|
| 获奖名单 | 查看获奖名单 | 需新增接口 | 详情页 | 0% |
| 证书生成 | 生成获奖证书 | 需新增接口 | 证书模板 | 0% |
| 导出 | 导出获奖名单 | 需新增接口 | 按钮操作 | 0% |
---
## 三、现状分析
### 3.1 后端模块完成度
| 模块 | 目录 | API完成度 | 说明 |
|------|------|-----------|------|
| 认证模块 | `src/auth/` | 100% | 登录、JWT、权限守卫 |
| 用户模块 | `src/users/` | 100% | 用户CRUD |
| 角色模块 | `src/roles/` | 100% | 角色CRUD、权限分配 |
| 权限模块 | `src/permissions/` | 100% | 权限CRUD |
| 菜单模块 | `src/menus/` | 100% | 菜单CRUD、用户菜单 |
| 租户模块 | `src/tenants/` | 100% | 租户CRUD |
| 字典模块 | `src/dict/` | 100% | 字典CRUD |
| 配置模块 | `src/config/` | 100% | 系统配置CRUD |
| 学校模块 | `src/school/` | 100% | 学校、年级、班级、部门、教师、学生 |
| 赛事核心 | `src/contests/contests/` | 90% | 赛事CRUD、发布 |
| 团队模块 | `src/contests/teams/` | 90% | 团队CRUD、成员管理 |
| 报名模块 | `src/contests/registrations/` | 85% | 报名CRUD、审核 |
| 作品模块 | `src/contests/works/` | 80% | 作品提交、版本管理 |
| 评审规则 | `src/contests/review-rules/` | 70% | 规则CRUD |
| 评委模块 | `src/contests/judges/` | 75% | 评委CRUD |
| 评审模块 | `src/contests/reviews/` | 60% | 分配、评分(需完善统计) |
| 公告模块 | `src/contests/notices/` | 90% | 公告CRUD |
| 日志模块 | `src/logs/` | 0% | **未实现** |
| 赛果模块 | - | 0% | **未实现** |
### 3.2 前端页面完成度
| 模块 | 页面 | 路径 | 完成度 | 说明 |
|------|------|------|--------|------|
| 认证 | 登录页 | `/login` | 100% | ✅ |
| 工作台 | 首页 | `/workbench` | 100% | ✅ |
| 系统管理 | 用户管理 | `/system/users` | 100% | ✅ |
| 系统管理 | 角色管理 | `/system/roles` | 100% | ✅ |
| 系统管理 | 权限管理 | `/system/permissions` | 100% | ✅ |
| 系统管理 | 菜单管理 | `/system/menus` | 100% | ✅ |
| 系统管理 | 租户管理 | `/system/tenants` | 100% | ✅ |
| 系统管理 | 字典管理 | `/system/dict` | 100% | ✅ |
| 系统管理 | 配置管理 | `/system/config` | 100% | ✅ |
| 系统管理 | 日志查询 | `/system/logs` | 0% | 待开发 |
| 学校管理 | 学校信息 | `/school/schools` | 100% | ✅ |
| 学校管理 | 部门管理 | `/school/departments` | 100% | ✅ |
| 学校管理 | 年级管理 | `/school/grades` | 100% | ✅ |
| 学校管理 | 班级管理 | `/school/classes` | 100% | ✅ |
| 学校管理 | 教师管理 | `/school/teachers` | 100% | ✅ |
| 学校管理 | 学生管理 | `/school/students` | 100% | ✅ |
| 赛事管理 | 赛事列表 | `/contests/list` | 70% | 需完善筛选、完结功能 |
| 赛事管理 | 赛事详情 | `/contests/:id` | 60% | 需完善Tab结构 |
| 赛事管理 | 赛事表单 | `ContestForm.vue` | 60% | 需完善多Tab表单 |
| 赛事管理 | 赛事公告 | - | 20% | 需新增页面 |
| 报名管理 | 个人报名 | `/contests/registrations` | 60% | 需完善审核、导出 |
| 报名管理 | 团队报名 | - | 20% | 需新增页面 |
| 参赛作品 | 作品列表 | `/contests/works` | 50% | 需完善分配、锁定 |
| 参赛作品 | 作品详情 | - | 30% | 需完善详情页 |
| 评审进度 | 进度列表 | `/contests/reviews` | 30% | 需重构为进度看板 |
| 评审进度 | 进度详情 | - | 10% | 需新增页面 |
| 评委管理 | 评委列表 | - | 30% | 需新增页面 |
| 评委管理 | 评委详情 | - | 10% | 需新增页面 |
| 评审规则 | 规则配置 | - | 30% | 需集成到赛事表单 |
| 赛果发布 | 赛果列表 | - | 0% | 待开发 |
| 赛果发布 | 赛果详情 | - | 0% | 待开发 |
### 3.3 数据模型完成度Prisma Schema
```
✅ 已定义的模型:
├── Tenant租户
├── User用户
├── Role/UserRole/Permission/RolePermission权限体系
├── Menu/TenantMenu菜单体系
├── Dict/DictItem字典
├── Config配置
├── Log日志
├── School/Grade/Department/Class/Teacher/Student学校体系
├── Contest赛事
├── ContestAttachment赛事附件
├── ContestReviewRule评审规则
├── ContestTeam/ContestTeamMember团队
├── ContestRegistration报名
├── ContestWork/ContestWorkAttachment作品
├── ContestJudge评委
├── ContestWorkJudgeAssignment作品分配
├── ContestWorkScore作品评分
└── ContestNotice赛事公告
❌ 需要新增/修改的模型:
├── Contest需新增 status: 'ongoing'|'finished' 字段)
└── ContestResult赛果发布- 可选,也可用现有模型扩展
```
---
## 四、待开发清单(按需求表格)
### 4.1 后端待开发
#### P0 - 核心功能(超管端闭环)
| 序号 | 模块 | 任务 | 现状 | 描述 |
|------|------|------|------|------|
| B1 | 赛事 | 添加赛事完结接口 | 需新增 | `PATCH /contests/:id/finish` |
| B2 | 报名 | 添加报名导出接口 | 需新增 | `GET /registrations/export` Excel导出 |
| B3 | 作品 | 添加作品历史版本接口 | 需新增 | `GET /works/:id/versions` |
| B4 | 评审 | 添加评审进度统计接口 | 需新增 | `GET /reviews/statistics` 按赛事统计 |
| B5 | 评审 | 添加评委完成度统计 | 需新增 | `GET /reviews/judge-statistics` |
| B6 | 评审 | 完善最终得分计算 | 需完善 | 根据规则计算最终得分 |
| B7 | 赛果 | 新增赛果发布模块 | 需新增 | 排名、奖项设置、发布 |
| B8 | 日志 | 日志模块实现 | 需新增 | 操作日志CRUD |
#### P1 - 辅助功能
| 序号 | 模块 | 任务 | 现状 | 描述 |
|------|------|------|------|------|
| B9 | 赛果 | 证书生成接口 | 需新增 | PDF证书生成 |
| B10 | 赛果 | 获奖名单导出 | 需新增 | Excel导出 |
| B11 | 文件 | 文件上传服务完善 | 需完善 | 支持预览URL生成 |
### 4.2 前端待开发
#### P0 - 超管端核心页面
| 序号 | 页面 | 路径 | 组件 | 依赖后端 | 描述 |
|------|------|------|------|----------|------|
| F1 | 赛事列表完善 | `/contests/list` | `contests/Index.vue` | B1 | 添加完结按钮、筛选完善 |
| F2 | 赛事表单重构 | `/contests/create` | `contests/Form.vue` | - | 多Tab表单基本信息/报名/作品/评审) |
| F3 | 赛事详情重构 | `/contests/:id` | `contests/Detail.vue` | - | 多Tab详情页 |
| F4 | 赛事公告管理 | `/contests/:id/notices` | `contests/notices/Index.vue` | - | 公告CRUD |
| F5 | 团队报名列表 | `/contests/team-registrations` | `contests/team-registrations/Index.vue` | - | 团队报名管理 |
| F6 | 作品详情页 | `/contests/works/:id` | `contests/works/Detail.vue` | B3 | 详情+附件+历史版本 |
| F7 | 评审进度看板 | `/contests/:id/review-progress` | `contests/review-progress/Index.vue` | B4, B5 | 进度统计 |
| F8 | 评委管理页 | `/contests/:id/judges` | `contests/judges/Index.vue` | - | 评委CRUD |
| F9 | 评审规则配置 | 集成到赛事表单 | `contests/components/ReviewRuleTab.vue` | - | 评分维度配置 |
| F10 | 赛果发布页 | `/contests/:id/results` | `contests/results/Index.vue` | B7 | 排名/奖项/发布 |
| F11 | 日志查询页 | `/system/logs` | `system/logs/Index.vue` | B8 | 日志查询 |
#### P1 - 详情与导出
| 序号 | 页面 | 路径 | 组件 | 依赖后端 | 描述 |
|------|------|------|------|----------|------|
| F12 | 报名导出功能 | - | - | B2 | 导出Excel按钮 |
| F13 | 评委详情弹窗 | - | `contests/judges/Detail.vue` | B5 | 评委评审统计 |
| F14 | 评审详情页 | `/contests/reviews/:id` | `contests/reviews/Detail.vue` | - | 各评委评分明细 |
| F15 | 赛果详情页 | `/contests/:id/results/:workId` | `contests/results/Detail.vue` | B7 | 获奖详情 |
| F16 | 证书下载 | - | - | B9 | 证书下载功能 |
---
## 五、开发优先级排期
### Phase 1: 赛事管理闭环3天
**目标**完善赛事列表、赛事表单多Tab、赛事详情
```
Day 1:
- F2: 赛事表单重构多Tab基本信息、报名信息、作品信息
Day 2:
- F2续: 赛事表单评审信息Tab + 评审规则配置 F9
- B1: 赛事完结接口
- F1: 赛事列表完善(完结按钮、筛选)
Day 3:
- F3: 赛事详情页重构多Tab展示
- F4: 赛事公告管理页
```
### Phase 2: 报名与作品管理2天
**目标**:完善报名审核、团队管理、作品详情
```
Day 4:
- F5: 团队报名列表页
- B2: 报名导出接口
- F12: 报名导出功能
Day 5:
- B3: 作品历史版本接口
- F6: 作品详情页(含附件、历史版本)
```
### Phase 3: 评审进度与评委管理2天
**目标**:评审进度可视化、评委管理
```
Day 6:
- B4: 评审进度统计接口
- B5: 评委完成度统计接口
- F7: 评审进度看板
Day 7:
- F8: 评委管理页
- F13: 评委详情弹窗
- F14: 评审详情页
```
### Phase 4: 赛果发布2天
**目标**:排名计算、奖项设置、赛果发布
```
Day 8:
- B6: 最终得分计算逻辑完善
- B7: 赛果发布模块(排名、奖项设置、发布接口)
Day 9:
- F10: 赛果发布页
- F15: 赛果详情页
```
### Phase 5: 辅助功能与优化2天
**目标**:日志、证书、文件服务
```
Day 10:
- B8: 日志模块实现
- F11: 日志查询页
- B11: 文件上传服务完善
Day 11:
- B9: 证书生成接口
- B10: 获奖名单导出
- F16: 证书下载功能
- 联调测试、Bug修复
```
**超管端总计约11天**
---
## 六、目录结构规划
### 6.1 后端新增/修改
```
backend/src/
├── logs/ 🆕 新增
│ ├── logs.controller.ts
│ ├── logs.service.ts
│ ├── logs.module.ts
│ └── dto/
├── contests/
│ ├── contests/ 🔧 修改
│ │ └── contests.service.ts # 添加 finish 方法
│ ├── registrations/ 🔧 修改
│ │ └── registrations.service.ts # 添加 export 方法
│ ├── works/ 🔧 修改
│ │ └── works.service.ts # 添加 getVersions 方法
│ ├── reviews/ 🔧 修改
│ │ └── reviews.service.ts # 添加统计方法、完善计分
│ └── results/ 🆕 新增
│ ├── results.controller.ts
│ ├── results.service.ts
│ └── dto/
└── files/ 🔧 完善
└── files.service.ts # 添加预览URL生成
```
### 6.2 前端新增/修改
```
frontend/src/views/
├── contests/
│ ├── Index.vue 🔧 修改(添加完结操作)
│ ├── Detail.vue 🔧 重构多Tab
│ ├── Form.vue 🆕 新增多Tab表单
│ ├── components/
│ │ ├── ContestForm.vue 🔧 修改拆分为Tab组件
│ │ ├── BasicInfoTab.vue 🆕 新增
│ │ ├── RegistrationTab.vue 🆕 新增
│ │ ├── WorkInfoTab.vue 🆕 新增
│ │ └── ReviewRuleTab.vue 🆕 新增
│ ├── notices/
│ │ └── Index.vue 🆕 新增
│ ├── team-registrations/
│ │ └── Index.vue 🆕 新增
│ ├── works/
│ │ ├── Index.vue 🔧 修改
│ │ └── Detail.vue 🆕 新增
│ ├── review-progress/
│ │ └── Index.vue 🆕 新增
│ ├── judges/
│ │ ├── Index.vue 🆕 新增
│ │ └── Detail.vue 🆕 新增(弹窗组件)
│ ├── reviews/
│ │ ├── Index.vue 🔧 重构
│ │ └── Detail.vue 🆕 新增
│ └── results/
│ ├── Index.vue 🆕 新增
│ └── Detail.vue 🆕 新增
└── system/
└── logs/
└── Index.vue 🆕 新增
```
---
## 七、菜单配置
### 7.1 需要修改/新增的菜单
```sql
-- 赛事管理下的子菜单调整
UPDATE menus SET path = '/contests/list', component = 'contests/Index' WHERE name = '赛事列表';
-- 新增菜单项
INSERT INTO menus (tenant_id, name, path, component, icon, parent_id, permission, sort, valid_state) VALUES
-- 赛事管理子菜单
(1, '赛事公告', '/contests/notices', 'contests/notices/Index', 'NotificationOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '赛事管理') t), 'contest:notice:read', 15, 1),
(1, '团队报名', '/contests/team-registrations', 'contests/team-registrations/Index', 'TeamOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '赛事管理') t), 'registration:read', 25, 1),
(1, '评审进度', '/contests/review-progress', 'contests/review-progress/Index', 'DashboardOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '赛事管理') t), 'review:read', 45, 1),
(1, '评委管理', '/contests/judges', 'contests/judges/Index', 'UserSwitchOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '赛事管理') t), 'judge:read', 55, 1),
(1, '赛果发布', '/contests/results', 'contests/results/Index', 'TrophyOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '赛事管理') t), 'result:read', 65, 1),
-- 系统管理-日志
(1, '日志查询', '/system/logs', 'system/logs/Index', 'FileTextOutlined',
(SELECT id FROM (SELECT id FROM menus WHERE name = '系统管理') t), 'log:read', 80, 1);
```
### 7.2 需要新增的权限
```sql
INSERT INTO permissions (tenant_id, code, name, resource, action, valid_state) VALUES
-- 公告权限
(1, 'contest:notice:read', '查看赛事公告', 'contest_notice', 'read', 1),
(1, 'contest:notice:create', '创建赛事公告', 'contest_notice', 'create', 1),
(1, 'contest:notice:update', '编辑赛事公告', 'contest_notice', 'update', 1),
(1, 'contest:notice:delete', '删除赛事公告', 'contest_notice', 'delete', 1),
-- 评委权限
(1, 'judge:read', '查看评委', 'judge', 'read', 1),
(1, 'judge:create', '添加评委', 'judge', 'create', 1),
(1, 'judge:update', '编辑评委', 'judge', 'update', 1),
(1, 'judge:delete', '移除评委', 'judge', 'delete', 1),
-- 赛果权限
(1, 'result:read', '查看赛果', 'result', 'read', 1),
(1, 'result:publish', '发布赛果', 'result', 'publish', 1),
(1, 'result:export', '导出赛果', 'result', 'export', 1),
-- 日志权限
(1, 'log:read', '查看日志', 'log', 'read', 1);
```
---
## 八、验收标准
### 8.1 功能验收清单
**赛事管理**
- [ ] 赛事列表支持按名称、状态、时间筛选
- [ ] 赛事可以发布/撤销/编辑/删除/标记完结
- [ ] 赛事表单包含4个Tab基本信息/报名/作品/评审)
- [ ] 赛事详情页展示完整信息
- [ ] 赛事公告支持CRUD
**报名管理**
- [ ] 个人报名列表支持筛选、审核、导出
- [ ] 团队报名列表展示团队信息、成员
- [ ] 支持批量审核通过/拒绝
**参赛作品**
- [ ] 作品列表支持筛选、分配评委、锁定
- [ ] 作品详情展示基本信息、附件、历史版本
- [ ] 作品可预览(图片/视频/文档)
**评审进度**
- [ ] 评审进度看板展示整体完成率
- [ ] 可查看各评委评审进度
- [ ] 可查看单个作品各评委评分详情
**评委管理**
- [ ] 评委列表支持添加、设置权重、移除
- [ ] 评委详情显示评审统计
**赛果发布**
- [ ] 支持按得分排名
- [ ] 支持设置奖项等级
- [ ] 支持发布赛果
- [ ] 支持导出获奖名单
### 8.2 技术验收
- [ ] 代码符合 TypeScript 规范
- [ ] API 接口RESTful风格
- [ ] 权限控制前后端一致
- [ ] 关键功能有错误处理
---
## 九、风险与注意事项
| 风险 | 影响 | 应对措施 |
|------|------|----------|
| 评分计算逻辑复杂 | 影响赛果准确性 | 仔细设计计算规则,支持多种计分方式 |
| 多Tab表单数据校验 | 用户体验差 | 分Tab校验+整体校验 |
| 文件预览兼容性 | 部分格式无法预览 | 使用第三方预览服务或限制格式 |
| 大数据量导出 | 性能问题 | 分批导出、后台任务 |
| 证书模板设计 | 设计复杂 | 先用简单模板,后续迭代 |
---
*文档版本v3.0*
*更新时间2026-01-06*
*更新内容:根据需求表格详细梳理超管端功能,制定开发计划*