commit ca55ede9a8fbdc51f9fb760866f1000d1dce358e Author: likingcode Date: Sun Mar 1 16:24:21 2026 +0000 Initial commit: 高校创新创业项目孵化平台设计文档 diff --git a/01-需求分析文档.md b/01-需求分析文档.md new file mode 100644 index 0000000..71c4875 --- /dev/null +++ b/01-需求分析文档.md @@ -0,0 +1,313 @@ +# 高校创新创业项目孵化平台 - 需求分析文档 + +## 一、用户角色分析 + +### 1.1 角色定义 + +| 角色 | 描述 | 核心职责 | +|------|------|----------| +| 学生 | 平台主要使用者,创新创业项目的申报者 | 项目申报、进度更新、成果提交、学分查询 | +| 教师 | 项目指导教师和评审专家 | 项目指导、评审打分、意见反馈 | +| 管理员 | 系统运维和业务管理 | 用户管理、项目管理、规则配置、数据统计 | + +### 1.2 角色权限矩阵 + +| 功能模块 | 学生 | 教师 | 管理员 | +|----------|------|------|--------| +| 用户注册/登录 | ✅ | ✅ | ✅ | +| 个人信息管理 | ✅ | ✅ | ✅ | +| 项目申报 | ✅ | ❌ | ✅ | +| 项目查看(自己) | ✅ | ❌ | ✅ | +| 项目查看(全部) | ❌ | ✅(分配) | ✅ | +| 项目评审 | ❌ | ✅ | ✅ | +| 成果提交 | ✅ | ❌ | ✅ | +| 学分查询 | ✅ | ✅(指导学生) | ✅ | +| 规则配置 | ❌ | ❌ | ✅ | +| 用户管理 | ❌ | ❌ | ✅ | +| 数据统计 | ❌ | ❌ | ✅ | + +### 1.3 用户属性详细设计 + +#### 学生属性 +- 学号(唯一标识) +- 姓名 +- 性别 +- 学院 +- 专业 +- 年级 +- 班级 +- 联系电话 +- 邮箱 +- 指导教师ID + +#### 教师属性 +- 工号(唯一标识) +- 姓名 +- 性别 +- 学院 +- 职称 +- 联系电话 +- 邮箱 +- 研究方向 + +#### 管理员属性 +- 管理员账号 +- 姓名 +- 权限范围 +- 联系方式 + +--- + +## 二、功能模块拆分 + +### 2.1 模块总览图(文字描述) + +``` +高校创新创业项目孵化平台 +├── 用户中心模块 +│ ├── 用户注册 +│ ├── 用户登录/登出 +│ ├── 个人信息管理 +│ └── 密码修改/重置 +│ +├── 项目管理模块 +│ ├── 项目申报 +│ ├── 项目查询 +│ ├── 项目修改 +│ ├── 项目进度跟踪 +│ └── 项目归档 +│ +├── 评审管理模块 +│ ├── 评审任务分配 +│ ├── 在线评审 +│ ├── 评审意见填写 +│ └── 评审结果查询 +│ +├── 成果管理模块 +│ ├── 成果录入 +│ ├── 成果附件上传 +│ ├── 成果审核 +│ └── 成果统计 +│ +├── 学分认定模块 +│ ├── 学分规则配置 +│ ├── 学分自动计算 +│ ├── 学分明细查询 +│ └── 学分异议处理 +│ +├── 数据统计模块 +│ ├── 项目统计 +│ ├── 成果统计 +│ ├── 学分统计 +│ └── 可视化报表 +│ +└── 系统管理模块 + ├── 用户管理 + ├── 角色权限管理 + ├── 系统配置 + └── 操作日志 +``` + +### 2.2 各模块功能详细说明 + +#### 2.2.1 用户中心模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 用户注册 | 学生/教师自助注册 | 账号、密码、身份信息 | 注册结果 | 全部 | +| 用户登录 | 账号密码登录,支持记住密码 | 账号、密码 | Token、用户信息 | 全部 | +| 个人信息管理 | 修改个人信息 | 修改字段 | 修改结果 | 全部 | +| 密码修改 | 修改登录密码 | 原密码、新密码 | 修改结果 | 全部 | + +#### 2.2.2 项目管理模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 项目申报 | 提交新项目申请 | 项目名称、类型、描述、成员、预算 | 申报结果 | 学生 | +| 项目查询 | 按条件查询项目 | 查询条件 | 项目列表 | 全部 | +| 项目修改 | 修改项目信息 | 修改内容 | 修改结果 | 学生(自己的) | +| 项目进度跟踪 | 更新项目进度 | 进度信息、附件 | 更新结果 | 学生 | +| 项目归档 | 项目结题后归档 | 项目ID | 归档结果 | 管理员 | + +#### 2.2.3 评审管理模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 评审任务分配 | 分配评审专家 | 项目ID、教师ID | 分配结果 | 管理员 | +| 在线评审 | 填写评审意见 | 评审表单 | 提交结果 | 教师 | +| 评审意见填写 | 详细评审意见 | 意见内容、评分 | 保存结果 | 教师 | +| 评审结果查询 | 查看评审结果 | 项目ID | 评审详情 | 学生/教师 | + +#### 2.2.4 成果管理模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 成果录入 | 录入项目成果 | 成果类型、描述、附件 | 录入结果 | 学生 | +| 成果附件上传 | 上传证明材料 | 文件 | 文件URL | 学生 | +| 成果审核 | 审核成果真实性 | 审核意见 | 审核结果 | 教师/管理员 | +| 成果统计 | 统计成果数量 | 统计条件 | 统计报表 | 管理员 | + +#### 2.2.5 学分认定模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 学分规则配置 | 配置学分计算规则 | 规则参数 | 配置结果 | 管理员 | +| 学分自动计算 | 根据成果计算学分 | 成果信息 | 学分明细 | 系统 | +| 学分明细查询 | 查看学分详情 | 学生ID | 学分明细 | 学生/教师 | +| 学分异议处理 | 处理学分异议申请 | 异议内容 | 处理结果 | 管理员 | + +#### 2.2.6 数据统计模块 + +| 功能点 | 功能描述 | 输入 | 输出 | 角色 | +|--------|----------|------|------|------| +| 项目统计 | 项目数量、状态分布 | 时间范围 | 统计数据 | 管理员 | +| 成果统计 | 成果类型、级别分布 | 时间范围 | 统计数据 | 管理员 | +| 学分统计 | 学分分布、平均学分 | 时间范围 | 统计数据 | 管理员 | +| 可视化报表 | 图表展示统计结果 | 数据源 | ECharts图表 | 管理员 | + +--- + +## 三、业务流程描述 + +### 3.1 项目申报流程 + +``` +1. 学生登录系统 +2. 进入项目申报页面 +3. 填写项目基本信息: + - 项目名称 + - 项目类型(创新训练/创业训练/创业实践) + - 项目级别(校级/省级/国家级) + - 项目简介 + - 研究计划 + - 预期成果 + - 经费预算 +4. 添加项目成员(可多人协作) +5. 选择指导教师 +6. 上传附件材料(项目计划书等) +7. 提交申报 +8. 系统生成项目编号 +9. 项目状态变更为"待初审" +``` + +### 3.2 项目评审流程 + +``` +初审阶段: +1. 管理员查看待初审项目列表 +2. 管理员分配初审专家(1-3人) +3. 系统发送评审通知给专家 +4. 专家登录系统查看评审任务 +5. 专家在线评审: + - 查看项目详情 + - 查看附件材料 + - 填写评审意见 + - 给出评分 + - 选择通过/不通过/修改后通过 +6. 系统汇总评审意见 +7. 若通过,项目状态变更为"初审通过" +8. 若不通过,项目状态变更为"初审不通过",学生可修改后重新提交 + +中期检查阶段: +1. 管理员发起中期检查 +2. 学生填写中期检查报告 +3. 上传阶段性成果材料 +4. 指导教师评审中期报告 +5. 系统记录中期检查结果 + +结题验收阶段: +1. 学生提交结题申请 +2. 上传最终成果材料 +3. 管理员分配验收专家 +4. 专家评审验收材料 +5. 系统记录验收结果 +6. 项目状态变更为"已结题" +``` + +### 3.3 学分认定流程 + +``` +1. 项目结题后,系统自动触发学分认定 +2. 系统读取项目信息: + - 项目级别 + - 项目成员排名 + - 结题评价等级 +3. 系统查询学分规则表 +4. 计算每位成员应得学分: + - 基础学分 = 规则配置的对应级别学分 + - 成员学分 = 基础学分 × 排名系数 +5. 生成学分明细记录 +6. 学生查看学分认定结果 +7. 若有异议,可提交申诉 +8. 管理员审核申诉 +9. 最终确认学分 +``` + +### 3.4 成果管理流程 + +``` +1. 项目进行中/结题后,学生录入成果 +2. 选择成果类型: + - 学术论文 + - 发明专利 + - 实用新型专利 + - 软件著作权 + - 竞赛获奖 + - 创业实践成果 + - 其他 +3. 填写成果详情: + - 成果名称 + - 发表/获得时间 + - 发表/颁发机构 + - 成果描述 +4. 上传证明材料(证书、论文等) +5. 提交审核 +6. 指导教师/管理员审核真实性 +7. 审核通过后,成果状态变更为"已认证" +8. 系统根据成果类型自动计算附加学分 +``` + +--- + +## 四、非功能性需求 + +### 4.1 性能需求 +- 系统响应时间 < 2秒 +- 支持500并发用户 +- 数据库查询优化,索引设计合理 + +### 4.2 安全需求 +- 用户密码加密存储(BCrypt) +- 使用Sa-Token进行会话管理和权限控制 +- 敏感操作需二次确认 +- 操作日志记录 + +### 4.3 可用性需求 +- 界面简洁直观,符合用户习惯 +- 提供操作提示和帮助文档 +- 错误信息友好明确 + +### 4.4 兼容性需求 +- 支持主流浏览器(Chrome、Firefox、Edge、Safari) +- 响应式设计,支持移动端访问 + +--- + +## 五、需求优先级 + +| 优先级 | 模块 | 说明 | +|--------|------|------| +| P0 | 用户中心 | 基础功能,必须优先实现 | +| P0 | 项目管理-申报 | 核心业务入口 | +| P0 | 项目管理-查询 | 基础功能 | +| P1 | 评审管理 | 核心业务流程 | +| P1 | 学分认定 | 核心价值功能 | +| P1 | 成果管理 | 核心业务 | +| P2 | 数据统计 | 增值功能 | +| P2 | 系统管理 | 管理功能 | + +--- + +*文档版本: v1.0* +*创建日期: 2026-03-01* +*作者: PMClaw* \ No newline at end of file diff --git a/02-数据库设计文档.md b/02-数据库设计文档.md new file mode 100644 index 0000000..9032fec --- /dev/null +++ b/02-数据库设计文档.md @@ -0,0 +1,477 @@ +# 高校创新创业项目孵化平台 - 数据库设计文档 + +## 一、数据库概述 + +### 1.1 设计原则 +- 遵循第三范式,减少数据冗余 +- 合理设置索引,优化查询性能 +- 使用软删除,保留历史数据 +- 统一字段命名规范(下划线命名法) + +### 1.2 公共字段说明 + +所有表都包含以下公共字段: + +| 字段名 | 类型 | 说明 | +|--------|------|------| +| id | BIGINT | 主键,自增 | +| create_time | DATETIME | 创建时间 | +| update_time | DATETIME | 更新时间 | +| create_by | BIGINT | 创建人ID | +| update_by | BIGINT | 更新人ID | +| deleted | TINYINT | 逻辑删除标识(0-未删除,1-已删除) | + +--- + +## 二、用户相关表 + +### 2.1 用户表 (sys_user) + +```sql +CREATE TABLE `sys_user` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `username` VARCHAR(50) NOT NULL COMMENT '用户名', + `password` VARCHAR(100) NOT NULL COMMENT '密码(BCrypt加密)', + `real_name` VARCHAR(50) NOT NULL COMMENT '真实姓名', + `gender` TINYINT DEFAULT 0 COMMENT '性别(0-未知,1-男,2-女)', + `phone` VARCHAR(20) DEFAULT NULL COMMENT '联系电话', + `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱', + `avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像URL', + `status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用,1-启用)', + `role_type` TINYINT NOT NULL COMMENT '角色类型(1-学生,2-教师,3-管理员)', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_by` BIGINT DEFAULT NULL COMMENT '创建人', + `update_by` BIGINT DEFAULT NULL COMMENT '更新人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_username` (`username`), + KEY `idx_role_type` (`role_type`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'; +``` + +### 2.2 学生信息表 (stu_info) + +```sql +CREATE TABLE `stu_info` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `student_no` VARCHAR(20) NOT NULL COMMENT '学号', + `college` VARCHAR(100) NOT NULL COMMENT '学院', + `major` VARCHAR(100) NOT NULL COMMENT '专业', + `grade` VARCHAR(10) NOT NULL COMMENT '年级', + `class_name` VARCHAR(50) DEFAULT NULL COMMENT '班级', + `advisor_id` BIGINT DEFAULT NULL COMMENT '指导教师ID', + `total_credit` DECIMAL(5,1) DEFAULT 0.0 COMMENT '累计创新学分', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_student_no` (`student_no`), + UNIQUE KEY `uk_user_id` (`user_id`), + KEY `idx_college` (`college`), + KEY `idx_grade` (`grade`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表'; +``` + +### 2.3 教师信息表 (teacher_info) + +```sql +CREATE TABLE `teacher_info` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `teacher_no` VARCHAR(20) NOT NULL COMMENT '工号', + `college` VARCHAR(100) NOT NULL COMMENT '学院', + `title` VARCHAR(50) DEFAULT NULL COMMENT '职称', + `research_field` VARCHAR(255) DEFAULT NULL COMMENT '研究方向', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_teacher_no` (`teacher_no`), + UNIQUE KEY `uk_user_id` (`user_id`), + KEY `idx_college` (`college`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师信息表'; +``` + +--- + +## 三、项目相关表 + +### 3.1 项目表 (project) + +```sql +CREATE TABLE `project` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '项目ID', + `project_no` VARCHAR(30) NOT NULL COMMENT '项目编号', + `project_name` VARCHAR(200) NOT NULL COMMENT '项目名称', + `project_type` TINYINT NOT NULL COMMENT '项目类型(1-创新训练,2-创业训练,3-创业实践)', + `project_level` TINYINT NOT NULL COMMENT '项目级别(1-校级,2-省级,3-国家级)', + `leader_id` BIGINT NOT NULL COMMENT '负责人ID', + `advisor_id` BIGINT NOT NULL COMMENT '指导教师ID', + `description` TEXT COMMENT '项目简介', + `research_plan` TEXT COMMENT '研究计划', + `expected_result` TEXT COMMENT '预期成果', + `budget` DECIMAL(10,2) DEFAULT 0.00 COMMENT '经费预算', + `status` TINYINT DEFAULT 1 COMMENT '状态(1-待初审,2-初审中,3-初审通过,4-初审不通过,5-中期检查中,6-中期通过,7-中期不通过,8-结题验收中,9-已结题,10-已归档)', + `start_time` DATE DEFAULT NULL COMMENT '立项时间', + `end_time` DATE DEFAULT NULL COMMENT '结题时间', + `college` VARCHAR(100) DEFAULT NULL COMMENT '所属学院', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_by` BIGINT DEFAULT NULL COMMENT '创建人', + `update_by` BIGINT DEFAULT NULL COMMENT '更新人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_project_no` (`project_no`), + KEY `idx_leader_id` (`leader_id`), + KEY `idx_advisor_id` (`advisor_id`), + KEY `idx_status` (`status`), + KEY `idx_project_level` (`project_level`), + KEY `idx_college` (`college`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目表'; +``` + +### 3.2 项目成员表 (project_member) + +```sql +CREATE TABLE `project_member` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `project_id` BIGINT NOT NULL COMMENT '项目ID', + `user_id` BIGINT NOT NULL COMMENT '成员ID', + `member_order` INT DEFAULT 1 COMMENT '成员排名(影响学分分配)', + `role` TINYINT DEFAULT 1 COMMENT '角色(1-成员,2-负责人)', + `join_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '加入时间', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_project_user` (`project_id`, `user_id`), + KEY `idx_user_id` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目成员表'; +``` + +### 3.3 项目附件表 (project_attachment) + +```sql +CREATE TABLE `project_attachment` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `project_id` BIGINT NOT NULL COMMENT '项目ID', + `file_name` VARCHAR(255) NOT NULL COMMENT '文件名', + `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', + `file_size` BIGINT DEFAULT NULL COMMENT '文件大小(字节)', + `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型', + `attachment_type` TINYINT DEFAULT 1 COMMENT '附件类型(1-申报材料,2-中期材料,3-结题材料)', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` BIGINT DEFAULT NULL COMMENT '上传人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_project_id` (`project_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目附件表'; +``` + +--- + +## 四、评审相关表 + +### 4.1 评审表 (review) + +```sql +CREATE TABLE `review` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '评审ID', + `project_id` BIGINT NOT NULL COMMENT '项目ID', + `reviewer_id` BIGINT NOT NULL COMMENT '评审人ID', + `review_type` TINYINT NOT NULL COMMENT '评审类型(1-初审,2-中期检查,3-结题验收)', + `score` DECIMAL(5,1) DEFAULT NULL COMMENT '评审分数(0-100)', + `opinion` TEXT COMMENT '评审意见', + `result` TINYINT DEFAULT NULL COMMENT '评审结果(1-通过,2-不通过,3-修改后通过)', + `status` TINYINT DEFAULT 1 COMMENT '状态(1-待评审,2-已评审)', + `review_time` DATETIME DEFAULT NULL COMMENT '评审时间', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_project_id` (`project_id`), + KEY `idx_reviewer_id` (`reviewer_id`), + KEY `idx_review_type` (`review_type`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评审表'; +``` + +### 4.2 评审评分项表 (review_score_item) + +```sql +CREATE TABLE `review_score_item` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `review_id` BIGINT NOT NULL COMMENT '评审ID', + `item_name` VARCHAR(100) NOT NULL COMMENT '评分项名称', + `item_score` DECIMAL(5,1) NOT NULL COMMENT '该项分数', + `max_score` DECIMAL(5,1) NOT NULL COMMENT '该项满分', + `item_comment` VARCHAR(500) DEFAULT NULL COMMENT '该项评语', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `idx_review_id` (`review_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='评审评分项表'; +``` + +--- + +## 五、成果相关表 + +### 5.1 成果表 (achievement) + +```sql +CREATE TABLE `achievement` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '成果ID', + `project_id` BIGINT NOT NULL COMMENT '项目ID', + `achievement_type` TINYINT NOT NULL COMMENT '成果类型(1-学术论文,2-发明专利,3-实用新型专利,4-软件著作权,5-竞赛获奖,6-创业实践,7-其他)', + `achievement_name` VARCHAR(200) NOT NULL COMMENT '成果名称', + `achievement_level` TINYINT DEFAULT NULL COMMENT '成果级别(1-校级,2-市级,3-省级,4-国家级,5-国际级)', + `author_names` VARCHAR(500) DEFAULT NULL COMMENT '作者/获奖人姓名', + `publish_time` DATE DEFAULT NULL COMMENT '发表/获得时间', + `publish_org` VARCHAR(200) DEFAULT NULL COMMENT '发表/颁发机构', + `description` TEXT COMMENT '成果描述', + `credit` DECIMAL(5,1) DEFAULT 0.0 COMMENT '认定学分', + `status` TINYINT DEFAULT 1 COMMENT '状态(1-待审核,2-已认证,3-审核不通过)', + `auditor_id` BIGINT DEFAULT NULL COMMENT '审核人ID', + `audit_time` DATETIME DEFAULT NULL COMMENT '审核时间', + `audit_opinion` VARCHAR(500) DEFAULT NULL COMMENT '审核意见', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_by` BIGINT DEFAULT NULL COMMENT '创建人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_project_id` (`project_id`), + KEY `idx_achievement_type` (`achievement_type`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成果表'; +``` + +### 5.2 成果附件表 (achievement_attachment) + +```sql +CREATE TABLE `achievement_attachment` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID', + `achievement_id` BIGINT NOT NULL COMMENT '成果ID', + `file_name` VARCHAR(255) NOT NULL COMMENT '文件名', + `file_path` VARCHAR(500) NOT NULL COMMENT '文件路径', + `file_size` BIGINT DEFAULT NULL COMMENT '文件大小(字节)', + `file_type` VARCHAR(50) DEFAULT NULL COMMENT '文件类型', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `create_by` BIGINT DEFAULT NULL COMMENT '上传人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_achievement_id` (`achievement_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成果附件表'; +``` + +--- + +## 六、学分相关表 + +### 6.1 学分规则表 (credit_rule) + +```sql +CREATE TABLE `credit_rule` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '规则ID', + `rule_name` VARCHAR(100) NOT NULL COMMENT '规则名称', + `rule_type` TINYINT NOT NULL COMMENT '规则类型(1-项目级别,2-成果类型)', + `target_type` TINYINT NOT NULL COMMENT '目标类型(与项目级别或成果类型对应)', + `target_level` TINYINT DEFAULT NULL COMMENT '目标级别(用于成果级别细分)', + `base_credit` DECIMAL(5,1) NOT NULL COMMENT '基础学分', + `leader_coefficient` DECIMAL(3,2) DEFAULT 1.00 COMMENT '负责人系数', + `member_coefficient` DECIMAL(3,2) DEFAULT 0.50 COMMENT '成员系数', + `description` VARCHAR(500) DEFAULT NULL COMMENT '规则说明', + `status` TINYINT DEFAULT 1 COMMENT '状态(0-禁用,1-启用)', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_by` BIGINT DEFAULT NULL COMMENT '创建人', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_rule_type` (`rule_type`), + KEY `idx_target_type` (`target_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学分规则表'; +``` + +### 6.2 学分明细表 (credit_detail) + +```sql +CREATE TABLE `credit_detail` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '明细ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + `project_id` BIGINT DEFAULT NULL COMMENT '项目ID', + `achievement_id` BIGINT DEFAULT NULL COMMENT '成果ID', + `credit_source` TINYINT NOT NULL COMMENT '学分来源(1-项目结题,2-成果认证)', + `credit` DECIMAL(5,1) NOT NULL COMMENT '获得学分', + `coefficient` DECIMAL(3,2) DEFAULT 1.00 COMMENT '分配系数', + `rule_id` BIGINT DEFAULT NULL COMMENT '适用规则ID', + `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注', + `status` TINYINT DEFAULT 1 COMMENT '状态(1-正常,2-申诉中,3-已调整)', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_user_id` (`user_id`), + KEY `idx_project_id` (`project_id`), + KEY `idx_achievement_id` (`achievement_id`), + KEY `idx_credit_source` (`credit_source`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学分明细表'; +``` + +### 6.3 学分申诉表 (credit_appeal) + +```sql +CREATE TABLE `credit_appeal` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '申诉ID', + `credit_detail_id` BIGINT NOT NULL COMMENT '学分明细ID', + `user_id` BIGINT NOT NULL COMMENT '申诉人ID', + `appeal_reason` TEXT NOT NULL COMMENT '申诉原因', + `appeal_evidence` VARCHAR(500) DEFAULT NULL COMMENT '申诉证据(附件路径)', + `status` TINYINT DEFAULT 1 COMMENT '状态(1-待处理,2-已通过,3-已驳回)', + `handler_id` BIGINT DEFAULT NULL COMMENT '处理人ID', + `handle_time` DATETIME DEFAULT NULL COMMENT '处理时间', + `handle_result` TEXT COMMENT '处理结果', + `adjusted_credit` DECIMAL(5,1) DEFAULT NULL COMMENT '调整后学分', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + KEY `idx_credit_detail_id` (`credit_detail_id`), + KEY `idx_user_id` (`user_id`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学分申诉表'; +``` + +--- + +## 七、系统管理表 + +### 7.1 操作日志表 (sys_log) + +```sql +CREATE TABLE `sys_log` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `user_id` BIGINT DEFAULT NULL COMMENT '操作用户ID', + `username` VARCHAR(50) DEFAULT NULL COMMENT '操作用户名', + `operation` VARCHAR(100) NOT NULL COMMENT '操作名称', + `method` VARCHAR(200) DEFAULT NULL COMMENT '请求方法', + `params` TEXT COMMENT '请求参数', + `ip` VARCHAR(50) DEFAULT NULL COMMENT 'IP地址', + `time` BIGINT DEFAULT NULL COMMENT '执行时长(毫秒)', + `result` TINYINT DEFAULT 1 COMMENT '执行结果(1-成功,0-失败)', + `error_msg` TEXT COMMENT '错误信息', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`), + KEY `idx_user_id` (`user_id`), + KEY `idx_create_time` (`create_time`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表'; +``` + +### 7.2 系统配置表 (sys_config) + +```sql +CREATE TABLE `sys_config` ( + `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '配置ID', + `config_key` VARCHAR(100) NOT NULL COMMENT '配置键', + `config_value` VARCHAR(500) NOT NULL COMMENT '配置值', + `config_name` VARCHAR(100) NOT NULL COMMENT '配置名称', + `description` VARCHAR(255) DEFAULT NULL COMMENT '配置说明', + `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` TINYINT DEFAULT 0 COMMENT '删除标识', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_config_key` (`config_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统配置表'; +``` + +--- + +## 八、数据库关系图(文字描述) + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ 用户子系统 │ +├─────────────────────────────────────────────────────────────────┤ +│ sys_user (用户表) │ +│ │ │ +│ ├──1:1──> stu_info (学生信息表) │ +│ └──1:1──> teacher_info (教师信息表) │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ 项目子系统 │ +├─────────────────────────────────────────────────────────────────┤ +│ project (项目表) │ +│ │ │ +│ ├──1:N──> project_member (项目成员表) │ +│ ├──1:N──> project_attachment (项目附件表) │ +│ ├──1:N──> review (评审表) │ +│ ├──1:N──> achievement (成果表) │ +│ └──1:N──> credit_detail (学分明细表) │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ 评审子系统 │ +├─────────────────────────────────────────────────────────────────┤ +│ review (评审表) │ +│ │ │ +│ └──1:N──> review_score_item (评审评分项表) │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ 成果子系统 │ +├─────────────────────────────────────────────────────────────────┤ +│ achievement (成果表) │ +│ │ │ +│ ├──1:N──> achievement_attachment (成果附件表) │ +│ └──1:1──> credit_detail (学分明细表) │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ 学分子系统 │ +├─────────────────────────────────────────────────────────────────┤ +│ credit_rule (学分规则表) │ +│ │ │ +│ └──1:N──> credit_detail (学分明细表) │ +│ │ │ +│ └──1:N──> credit_appeal (学分申诉表) │ +└─────────────────────────────────────────────────────────────────┘ +``` + +--- + +## 九、初始化数据 + +### 9.1 学分规则初始化数据 + +```sql +-- 项目级别学分规则 +INSERT INTO credit_rule (rule_name, rule_type, target_type, base_credit, leader_coefficient, member_coefficient, description) VALUES +('校级项目', 1, 1, 1.0, 1.00, 0.50, '校级创新创业项目基础学分'), +('省级项目', 1, 2, 2.0, 1.00, 0.50, '省级创新创业项目基础学分'), +('国家级项目', 1, 3, 3.0, 1.00, 0.50, '国家级创新创业项目基础学分'); + +-- 成果类型学分规则 +INSERT INTO credit_rule (rule_name, rule_type, target_type, target_level, base_credit, description) VALUES +('学术论文-核心期刊', 2, 1, 3, 1.5, '发表核心期刊论文'), +('学术论文-SCI/EI', 2, 1, 4, 2.0, '发表SCI/EI论文'), +('发明专利', 2, 2, NULL, 2.0, '获得发明专利授权'), +('实用新型专利', 2, 3, NULL, 1.0, '获得实用新型专利授权'), +('软件著作权', 2, 4, NULL, 0.5, '获得软件著作权登记'), +('竞赛获奖-省级', 2, 5, 3, 1.0, '省级竞赛获奖'), +('竞赛获奖-国家级', 2, 5, 4, 2.0, '国家级竞赛获奖'); +``` + +### 9.2 管理员账号初始化 + +```sql +-- 默认管理员账号(密码: admin123,实际使用BCrypt加密) +INSERT INTO sys_user (username, password, real_name, gender, role_type, status) VALUES +('admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt9hQIu', '系统管理员', 1, 3, 1); +``` + +--- + +*文档版本: v1.0* +*创建日期: 2026-03-01* +*作者: PMClaw* \ No newline at end of file