Files
hzdyjs/docs/需求文档/奖惩补贴需求/奖学金管理模块产品需求设计.md
2025-08-10 00:24:31 +08:00

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 联系方式


文档状态: ✅ 已完成 审核状态: 🔄 待审核 版本控制: Git管理,版本标签v1.0


本文档为奖学金管理模块的产品需求设计,涵盖了从需求分析到实施计划的完整内容。后续将根据实际开发过程中的反馈进行持续更新和完善。