文档版本: v1.0 创建时间: 2025-01-27 创建人: AI Assistant 最后更新: 2025-01-27
奖学金管理是高校学生工作的重要组成部分,涉及奖项设立、名额分配、学生申请、审核评定、结果公示等多个环节。传统的人工管理方式效率低下,容易出错,急需信息化系统支撑。
| 序号 | 原始需求描述 | 核心功能点 | 涉及角色 |
|---|---|---|---|
| 1 | 支持自动评定规则设置,系统自动评定满足条件的学生 | 自动评定规则引擎 | 学生处管理员 |
| 2 | 维护各个奖种之间兼得关系的功能 | 奖种兼得关系配置 | 学生处管理员 |
| 3 | 奖学金评定批次管理功能 | 评定批次管理 | 学生处管理员 |
| 4 | 二级学院查看名额分配情况,按班级或专业二次分配 | 名额分配管理 | 二级学院管理员 |
| 5 | 学生查看奖学金种类,自动化条件校验,在线申请 | 学生申请系统 | 学生 |
| 6 | 学生处设立奖项,分配名额,设置负责人 | 奖项设立管理 | 学生处管理员 |
| 7 | 二级学院直接指定符合条件的学生名单 | 直接指定功能 | 二级学院管理员 |
| 8 | 学生在线申请,查看审核进度 | 申请进度跟踪 | 学生 |
| 9 | 二级学院审核学生申请 | 申请审核功能 | 二级学院管理员 |
| 10 | 支持将评定结果导出 | 数据导出功能 | 学生处管理员 |
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[数据导出]
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
功能描述: 奖学金种类的设立、维护和管理
主要功能:
数据模型:
-- 奖项基本信息表
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
)
功能描述: 自动评定规则的配置和执行
主要功能:
规则配置示例:
{
"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
}
功能描述: 评定批次的创建和管理
主要功能:
功能描述: 奖学金名额的分配和管理
主要功能:
功能描述: 学生申请的提交和管理
主要功能:
功能描述: 申请的审核和评定
主要功能:
功能描述: 评定结果的导出和管理
主要功能:
| 角色 | 权限范围 | 主要功能 |
|---|---|---|
| 超级管理员 | 全系统 | 系统配置、用户管理、数据维护 |
| 学生处管理员 | 全校范围 | 奖项设立、规则配置、批次管理、名额分配 |
| 二级学院管理员 | 本学院范围 | 名额二次分配、学生审核、结果上报 |
| 学生 | 个人数据 | 在线申请、进度查询、结果查看 |
| 功能模块 | 超级管理员 | 学生处管理员 | 二级学院管理员 | 学生 |
|---|---|---|---|---|
| 奖项管理 | ✅ | ✅ | 🔍 | 🔍 |
| 规则配置 | ✅ | ✅ | 🔍 | ❌ |
| 批次管理 | ✅ | ✅ | 🔍 | 🔍 |
| 名额分配 | ✅ | ✅ | ✏️ | 🔍 |
| 申请管理 | ✅ | 🔍 | ✏️ | ✏️ |
| 审核管理 | ✅ | ✅ | ✏️ | 🔍 |
| 数据导出 | ✅ | ✅ | ✏️ | 🔍 |
图例: ✅全部权限 ✏️编辑权限 🔍查看权限 ❌无权限
@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());
}
}
@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));
}
}
-- 奖学金类型表
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 '删除标记'
);
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. 导出评定结果
集成目的: 获取学生基本信息、学籍状态、成绩数据
集成方式:
数据同步:
@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);
}
| 阶段 | 时间周期 | 主要任务 | 交付物 |
|---|---|---|---|
| 需求分析 | 1周 | 需求调研、原型设计 | 需求文档、原型图 |
| 系统设计 | 1周 | 架构设计、数据库设计 | 设计文档、建表脚本 |
| 核心开发 | 4周 | 后端API、前端页面开发 | 核心功能模块 |
| 集成测试 | 1周 | 系统集成、功能测试 | 测试报告 |
| 用户验收 | 1周 | 用户培训、验收测试 | 验收报告 |
| 上线部署 | 0.5周 | 生产环境部署 | 部署文档 |
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 规则引擎复杂度高 | 中 | 开发周期延长 | 采用成熟的规则引擎框架 |
| 系统集成难度大 | 中 | 数据同步异常 | 提前进行接口联调测试 |
| 性能要求高 | 低 | 用户体验差 | 优化查询SQL,使用缓存 |
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 业务规则变更频繁 | 高 | 系统维护成本高 | 设计灵活的配置化规则 |
| 用户接受度低 | 中 | 系统推广困难 | 加强用户培训和支持 |
| 数据安全要求高 | 高 | 合规风险 | 严格权限控制,数据加密 |
| 风险项 | 风险等级 | 影响 | 应对措施 |
|---|---|---|---|
| 需求理解偏差 | 中 | 返工重做 | 加强需求沟通确认 |
| 人员变动 | 低 | 进度延期 | 做好知识传承和文档 |
| 时间紧张 | 中 | 质量下降 | 合理安排进度,重点保证核心功能 |
文档状态: ✅ 已完成 审核状态: 🔄 待审核 版本控制: Git管理,版本标签v1.0
本文档为奖学金管理模块的产品需求设计,涵盖了从需求分析到实施计划的完整内容。后续将根据实际开发过程中的反馈进行持续更新和完善。