18 KiB
18 KiB
奖学金管理模块产品需求设计
文档版本: v1.0 创建时间: 2025-01-27 创建人: AI Assistant 最后更新: 2025-01-27
📋 1. 需求概述
1.1 业务背景
奖学金管理是高校学生工作的重要组成部分,涉及奖项设立、名额分配、学生申请、审核评定、结果公示等多个环节。传统的人工管理方式效率低下,容易出错,急需信息化系统支撑。
1.2 目标用户
- 学生处管理员: 奖项设立、规则配置、全校统筹管理
- 二级学院管理员: 名额分配、学生审核、结果上报
- 学生: 在线申请、进度查询、结果查看
1.3 核心价值
- 提升效率: 自动化评定,减少人工工作量
- 规范流程: 标准化管理流程,减少人为错误
- 透明公正: 全程留痕,公开透明
- 数据准确: 系统化管理,数据准确可靠
🎯 2. 核心需求分析
2.1 用户原始需求拆解
| 序号 | 原始需求描述 | 核心功能点 | 涉及角色 |
|---|---|---|---|
| 1 | 支持自动评定规则设置,系统自动评定满足条件的学生 | 自动评定规则引擎 | 学生处管理员 |
| 2 | 维护各个奖种之间兼得关系的功能 | 奖种兼得关系配置 | 学生处管理员 |
| 3 | 奖学金评定批次管理功能 | 评定批次管理 | 学生处管理员 |
| 4 | 二级学院查看名额分配情况,按班级或专业二次分配 | 名额分配管理 | 二级学院管理员 |
| 5 | 学生查看奖学金种类,自动化条件校验,在线申请 | 学生申请系统 | 学生 |
| 6 | 学生处设立奖项,分配名额,设置负责人 | 奖项设立管理 | 学生处管理员 |
| 7 | 二级学院直接指定符合条件的学生名单 | 直接指定功能 | 二级学院管理员 |
| 8 | 学生在线申请,查看审核进度 | 申请进度跟踪 | 学生 |
| 9 | 二级学院审核学生申请 | 申请审核功能 | 二级学院管理员 |
| 10 | 支持将评定结果导出 | 数据导出功能 | 学生处管理员 |
2.2 业务流程分析
graph TD
A[学生处设立奖项] --> B[配置评定规则]
B --> C[分配名额给二级学院]
C --> D[二级学院二次分配]
D --> E{评定方式}
E -->|自动评定| F[系统自动筛选]
E -->|学生申请| G[学生在线申请]
E -->|直接指定| H[学院直接指定]
F --> I[二级学院审核]
G --> I
H --> I
I --> J[结果公示]
J --> K[数据导出]
🏗️ 3. 功能模块设计
3.1 系统架构
graph TB
subgraph "奖学金管理系统"
A[奖项管理模块<br/>scholarship-type]
B[规则引擎模块<br/>scholarship-rule]
C[批次管理模块<br/>scholarship-batch]
D[名额分配模块<br/>scholarship-quota]
E[申请管理模块<br/>scholarship-application]
F[审核管理模块<br/>scholarship-review]
G[数据导出模块<br/>scholarship-export]
H[统计报表模块<br/>scholarship-statistics]
end
subgraph "外部系统"
I[学生信息系统]
J[教务管理系统]
end
A --> B
B --> E
C --> D
D --> E
E --> F
F --> G
B --> I
B --> J
3.2 核心功能模块
3.2.1 奖项管理模块 (scholarship-type)
功能描述: 奖学金种类的设立、维护和管理
主要功能:
- ✅ 奖项信息维护(奖项名称、等级、金额、条件等)
- ✅ 奖种兼得关系配置(互斥、兼容关系设置)
- ✅ 奖项状态管理(启用、停用、归档)
- ✅ 奖项模板管理(常用奖项模板)
数据模型:
-- 奖项基本信息表
scholarship_type (
id, name, level, amount, description,
status, create_time, update_time
)
-- 奖种兼得关系表
scholarship_compatibility (
id, type_id_1, type_id_2, relation_type,
create_time, update_time
)
3.2.2 规则引擎模块 (scholarship-rule)
功能描述: 自动评定规则的配置和执行
主要功能:
- ✅ 评定条件配置(成绩、综合素质、特殊条件等)
- ✅ 规则优先级设置
- ✅ 自动评定执行
- ✅ 评定结果预览和确认
规则配置示例:
{
"scholarship_type_id": 1,
"rules": [
{
"condition": "gpa >= 3.5",
"weight": 0.6
},
{
"condition": "moral_score >= 85",
"weight": 0.3
},
{
"condition": "no_disciplinary_action = true",
"weight": 0.1
}
],
"min_score": 80
}
3.2.3 批次管理模块 (scholarship-batch)
功能描述: 评定批次的创建和管理
主要功能:
- ✅ 评定批次创建(学年、学期、批次名称)
- ✅ 批次状态管理(准备、进行中、已结束)
- ✅ 批次时间节点控制(申请开始/结束时间等)
- ✅ 批次数据统计
3.2.4 名额分配模块 (scholarship-quota)
功能描述: 奖学金名额的分配和管理
主要功能:
- ✅ 总名额设置
- ✅ 按学院分配名额
- ✅ 学院内二次分配(按专业、班级)
- ✅ 名额使用情况统计
- ✅ 名额调整记录
3.2.5 申请管理模块 (scholarship-application)
功能描述: 学生申请的提交和管理
主要功能:
- ✅ 学生在线申请
- ✅ 申请条件自动校验
- ✅ 申请材料上传
- ✅ 申请进度跟踪
- ✅ 申请记录查询
3.2.6 审核管理模块 (scholarship-review)
功能描述: 申请的审核和评定
主要功能:
- ✅ 申请审核界面
- ✅ 批量审核操作
- ✅ 审核意见记录
- ✅ 审核结果统计
- ✅ 直接指定功能
3.2.7 数据导出模块 (scholarship-export)
功能描述: 评定结果的导出和管理
主要功能:
- ✅ 获奖名单导出(Excel、PDF格式)
- ✅ 统计报表导出
- ✅ 申请数据导出
- ✅ 审核记录导出
- ✅ 自定义导出模板
👥 4. 用户角色与权限
4.1 角色定义
| 角色 | 权限范围 | 主要功能 |
|---|---|---|
| 超级管理员 | 全系统 | 系统配置、用户管理、数据维护 |
| 学生处管理员 | 全校范围 | 奖项设立、规则配置、批次管理、名额分配 |
| 二级学院管理员 | 本学院范围 | 名额二次分配、学生审核、结果上报 |
| 学生 | 个人数据 | 在线申请、进度查询、结果查看 |
4.2 权限矩阵
| 功能模块 | 超级管理员 | 学生处管理员 | 二级学院管理员 | 学生 |
|---|---|---|---|---|
| 奖项管理 | ✅ | ✅ | 🔍 | 🔍 |
| 规则配置 | ✅ | ✅ | 🔍 | ❌ |
| 批次管理 | ✅ | ✅ | 🔍 | 🔍 |
| 名额分配 | ✅ | ✅ | ✏️ | 🔍 |
| 申请管理 | ✅ | 🔍 | ✏️ | ✏️ |
| 审核管理 | ✅ | ✅ | ✏️ | 🔍 |
| 数据导出 | ✅ | ✅ | ✏️ | 🔍 |
图例: ✅全部权限 ✏️编辑权限 🔍查看权限 ❌无权限
🔧 5. 技术实现方案
5.1 技术架构
- 后端框架: Spring Boot 3.4.6 + MyBatis-Plus
- 前端框架: Vue 3 + Element Plus
- 数据库: MySQL 8.0
- 缓存: Redis
- 消息队列: RabbitMQ(异步处理)
- 文件存储: MinIO(申请材料)
5.2 核心技术点
5.2.1 规则引擎实现
@Component
public class ScholarshipRuleEngine {
public List<StudentVo> autoEvaluate(Long scholarshipTypeId, Long batchId) {
// 1. 获取评定规则
ScholarshipRule rule = ruleService.getByScholarshipType(scholarshipTypeId);
// 2. 获取候选学生
List<StudentVo> candidates = studentService.getCandidates(batchId);
// 3. 执行规则评定
return candidates.stream()
.filter(student -> evaluateStudent(student, rule))
.sorted((s1, s2) -> compareByRule(s1, s2, rule))
.collect(Collectors.toList());
}
}
5.2.2 兼得关系检查
@Service
public class CompatibilityService {
public boolean checkCompatibility(Long studentId, Long scholarshipTypeId) {
// 1. 获取学生已获得的奖学金
List<Long> existingTypes = getStudentScholarships(studentId);
// 2. 检查兼得关系
return existingTypes.stream()
.noneMatch(typeId -> isIncompatible(typeId, scholarshipTypeId));
}
}
5.3 数据库设计
5.3.1 核心表结构
-- 奖学金类型表
CREATE TABLE scholarship_type (
id BIGINT PRIMARY KEY,
name VARCHAR(100) NOT NULL COMMENT '奖学金名称',
level VARCHAR(20) COMMENT '等级',
amount DECIMAL(10,2) COMMENT '金额',
description TEXT COMMENT '描述',
status TINYINT DEFAULT 1 COMMENT '状态',
tenant_id BIGINT COMMENT '租户ID',
create_by BIGINT COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_by BIGINT COMMENT '更新人',
update_time DATETIME COMMENT '更新时间',
deleted TINYINT DEFAULT 0 COMMENT '删除标记'
);
-- 评定批次表
CREATE TABLE scholarship_batch (
id BIGINT PRIMARY KEY,
name VARCHAR(100) NOT NULL COMMENT '批次名称',
academic_year VARCHAR(20) COMMENT '学年',
semester TINYINT COMMENT '学期',
start_time DATETIME COMMENT '开始时间',
end_time DATETIME COMMENT '结束时间',
status TINYINT DEFAULT 1 COMMENT '状态',
tenant_id BIGINT COMMENT '租户ID',
create_by BIGINT COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_by BIGINT COMMENT '更新人',
update_time DATETIME COMMENT '更新时间',
deleted TINYINT DEFAULT 0 COMMENT '删除标记'
);
-- 名额分配表
CREATE TABLE scholarship_quota (
id BIGINT PRIMARY KEY,
batch_id BIGINT NOT NULL COMMENT '批次ID',
scholarship_type_id BIGINT NOT NULL COMMENT '奖学金类型ID',
dept_id BIGINT COMMENT '部门ID',
major_id BIGINT COMMENT '专业ID',
class_id BIGINT COMMENT '班级ID',
total_quota INT COMMENT '总名额',
used_quota INT DEFAULT 0 COMMENT '已用名额',
tenant_id BIGINT COMMENT '租户ID',
create_by BIGINT COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_by BIGINT COMMENT '更新人',
update_time DATETIME COMMENT '更新时间',
deleted TINYINT DEFAULT 0 COMMENT '删除标记'
);
-- 申请记录表
CREATE TABLE scholarship_application (
id BIGINT PRIMARY KEY,
batch_id BIGINT NOT NULL COMMENT '批次ID',
scholarship_type_id BIGINT NOT NULL COMMENT '奖学金类型ID',
student_id BIGINT NOT NULL COMMENT '学生ID',
application_type TINYINT COMMENT '申请类型:1-学生申请,2-自动评定,3-直接指定',
status TINYINT DEFAULT 1 COMMENT '状态:1-待审核,2-通过,3-拒绝',
apply_reason TEXT COMMENT '申请理由',
review_opinion TEXT COMMENT '审核意见',
tenant_id BIGINT COMMENT '租户ID',
create_by BIGINT COMMENT '创建人',
create_time DATETIME COMMENT '创建时间',
update_by BIGINT COMMENT '更新人',
update_time DATETIME COMMENT '更新时间',
deleted TINYINT DEFAULT 0 COMMENT '删除标记'
);
📊 6. 业务流程设计
6.1 奖学金评定完整流程
sequenceDiagram
participant SP as 学生处管理员
participant CA as 二级学院管理员
participant S as 学生
participant SYS as 系统
SP->>SYS: 1. 创建评定批次
SP->>SYS: 2. 设置奖学金类型和规则
SP->>SYS: 3. 分配名额给各学院
CA->>SYS: 4. 学院内二次分配名额
alt 自动评定
SYS->>SYS: 5a. 执行自动评定规则
SYS->>CA: 5b. 推送评定结果
else 学生申请
S->>SYS: 5a. 在线提交申请
SYS->>S: 5b. 条件校验反馈
else 直接指定
CA->>SYS: 5a. 直接指定学生
end
CA->>SYS: 6. 审核申请/确认结果
SYS->>S: 7. 通知审核结果
SP->>SYS: 8. 生成获奖名单
SYS->>SP: 9. 导出评定结果
6.2 关键业务规则
6.2.1 申请条件校验
- ✅ 学籍状态检查(在校、正常)
- ✅ 成绩要求检查(GPA、单科成绩)
- ✅ 综合素质检查(德育分、违纪记录)
- ✅ 兼得关系检查(已获奖项冲突)
- ✅ 申请时间检查(批次有效期内)
6.2.2 名额分配规则
- ✅ 按学院学生数比例分配
- ✅ 支持手动调整分配比例
- ✅ 学院内可按专业/班级再分配
- ✅ 名额使用实时统计
6.2.3 审核流程规则
- ✅ 二级学院初审
- ✅ 学生处终审(可选)
- ✅ 支持批量审核操作
- ✅ 审核意见必填
📈 7. 系统集成方案
7.1 学生信息系统集成
集成目的: 获取学生基本信息、学籍状态、成绩数据
集成方式:
- 数据库直连(推荐)
- API接口调用
- 数据文件导入
数据同步:
@Scheduled(cron = "0 0 2 * * ?") // 每天凌晨2点同步
public void syncStudentData() {
// 1. 获取学生基本信息
List<StudentInfo> students = studentInfoService.getAllStudents();
// 2. 获取成绩数据
List<GradeInfo> grades = gradeService.getLatestGrades();
// 3. 更新本地数据
scholarshipStudentService.updateStudentData(students, grades);
}
🧪 8. 测试方案
8.1 功能测试
- ✅ 奖项管理功能测试
- ✅ 规则引擎准确性测试
- ✅ 申请流程完整性测试
- ✅ 审核功能正确性测试
- ✅ 权限控制有效性测试
8.2 性能测试
- ✅ 自动评定性能测试(1万学生数据)
- ✅ 并发申请压力测试(500并发)
- ✅ 大数据量查询性能测试
- ✅ 数据导出性能测试
8.3 安全测试
- ✅ 用户权限边界测试
- ✅ 数据访问安全测试
- ✅ SQL注入防护测试
- ✅ 敏感数据加密测试
📅 9. 实施计划
9.1 开发阶段规划
| 阶段 | 时间周期 | 主要任务 | 交付物 |
|---|---|---|---|
| 需求分析 | 1周 | 需求调研、原型设计 | 需求文档、原型图 |
| 系统设计 | 1周 | 架构设计、数据库设计 | 设计文档、建表脚本 |
| 核心开发 | 4周 | 后端API、前端页面开发 | 核心功能模块 |
| 集成测试 | 1周 | 系统集成、功能测试 | 测试报告 |
| 用户验收 | 1周 | 用户培训、验收测试 | 验收报告 |
| 上线部署 | 0.5周 | 生产环境部署 | 部署文档 |
9.2 里程碑节点
- M1: 完成需求分析和系统设计(第2周)
- M2: 完成核心功能开发(第6周)
- M3: 完成系统测试和集成(第7周)
- M4: 完成用户验收和上线部署(第8.5周)
📋 10. 风险评估与应对
10.1 技术风险
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 规则引擎复杂度高 | 中 | 开发周期延长 | 采用成熟的规则引擎框架 |
| 系统集成难度大 | 中 | 数据同步异常 | 提前进行接口联调测试 |
| 性能要求高 | 低 | 用户体验差 | 优化查询SQL,使用缓存 |
10.2 业务风险
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 业务规则变更频繁 | 高 | 系统维护成本高 | 设计灵活的配置化规则 |
| 用户接受度低 | 中 | 系统推广困难 | 加强用户培训和支持 |
| 数据安全要求高 | 高 | 合规风险 | 严格权限控制,数据加密 |
10.3 项目风险
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 需求理解偏差 | 中 | 返工重做 | 加强需求沟通确认 |
| 人员变动 | 低 | 进度延期 | 做好知识传承和文档 |
| 时间紧张 | 中 | 质量下降 | 合理安排进度,重点保证核心功能 |
📚 11. 附录
11.1 相关文档
- 《高校奖学金管理办法》
- 《学生信息系统接口文档》
- 《数据安全管理规定》
11.2 参考资料
- Spring Boot官方文档
- Vue.js开发指南
- MySQL性能优化手册
- 系统集成最佳实践
11.3 联系方式
- 产品经理: 张经理 (zhang@university.edu.cn)
- 技术负责人: 李工程师 (li@university.edu.cn)
- 测试负责人: 王测试 (wang@university.edu.cn)
文档状态: ✅ 已完成 审核状态: 🔄 待审核 版本控制: Git管理,版本标签v1.0
本文档为奖学金管理模块的产品需求设计,涵盖了从需求分析到实施计划的完整内容。后续将根据实际开发过程中的反馈进行持续更新和完善。