Skip to content

JacksonHe04/palm-ams

东南大学 PALM 实验室研究生招生管理系统

CSA Logo PALM Logo

Vue Django TypeScript MySQL License

📖 项目简介

东南大学 PALM 实验室研究生招生管理系统 (PALM AMS - Pattern Learning and Mining Lab Admissions Management System) 是一个现代化的教育机构招生管理平台。系统采用前后端分离架构设计,为 PALM 实验室提供完整的招生流程管理、学生信息管理、面试评分、数据统计分析等功能,致力于提升招生工作效率,优化管理流程。

系统主页

系统主页

登录界面

登录界面

筛选功能

筛选页面 筛选结果

面试评分

面试评分

数据统计

数据统计

系统设置

账户设置 字段设置 规则设置

✨ 核心特性

  • 🎯 多类型申请通道:支持推免、考研、博士、直博四种申请类型
  • 📝 智能表单系统:动态字段配置,支持论文、奖项等复杂信息录入
  • 👥 学生信息管理:完整的申请者档案管理和状态跟踪
  • 🎯 面试评分系统:标准化面试流程和评分机制
  • 📊 数据分析仪表盘:实时统计图表,支持多维度数据分析
  • 🔍 高级筛选功能:多条件组合筛选,快速定位目标申请者
  • ⚙️ 灵活配置管理:院校、专业、人员、奖项等基础数据可配置
  • 📱 响应式设计:完美适配桌面端和移动端
  • 🔐 权限管理系统:基于角色的访问控制
  • 📄 文件管理:支持简历、证明材料等文件上传和管理

🛠️ 技术栈

前端技术

  • 框架:Vue 3.5.10 + TypeScript
  • 构建工具:Vite 5.4.14
  • UI 组件库:Element Plus 2.9.3
  • 样式框架:Tailwind CSS 3.4.17 + Sass
  • 状态管理:Pinia 2.3.0
  • 路由管理:Vue Router 4.4.5
  • HTTP 客户端:Axios 1.7.7
  • 图表库:ECharts 5.5.1
  • 工具库:UUID、JSZip、XLSX、SortableJS

后端技术

  • 框架:Django 4.2.0 + Django REST Framework
  • 数据库:MySQL 8.0+
  • 数据库驱动:PyMySQL 1.1.1
  • 跨域处理:django-cors-headers
  • 身份验证:PyJWT
  • 数据处理:Pandas、openpyxl、xlwt
  • 图像处理:Pillow

开发工具

  • 代码规范:ESLint + Commitlint + Husky
  • 部署:Nginx + uWSGI
  • 版本控制:Git

🚀 快速开始

环境要求

  • Node.js: >= 16.0.0
  • Python: >= 3.8
  • MySQL: >= 8.0
  • pnpm: >= 7.0 (推荐) 或 npm

安装步骤

1. 克隆项目

git clone https://github.com/JacksonHe04/palm-ams.git
cd palm-ams

2. 前端环境配置

cd front-vite
pnpm install
# 或使用 npm install

3. 后端环境配置

cd back-django
pip install -r requirements.txt

4. 数据库配置

  1. 创建 MySQL 数据库:
CREATE DATABASE palm_apply CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 修改 ./back-django/ApplicationSystem/settings.py 中的数据库配置:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'palm_apply',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'your_username',
        'PASSWORD': 'your_password',
    }
}
  1. 执行数据库迁移:
cd back-django
python manage.py makemigrations
python manage.py migrate

5. 启动服务

启动后端服务:

cd back-django
python manage.py runserver 8000

启动前端服务:

cd front-vite
pnpm dev
# 或 npm run dev

访问 http://localhost:5173 即可使用系统。

生产环境部署

前端构建

cd front-vite
pnpm build

后端部署

系统支持 uWSGI + Nginx 部署方式,详细配置请参考 ./nginx/ 目录下的配置文件。

📁 项目结构

palm-ams/
├── front-vite/                 # 前端项目 (Vue 3 + TypeScript)
│   ├── src/
│   │   ├── apis/              # API 接口定义
│   │   ├── components/        # 公共组件
│   │   ├── router/            # 路由配置
│   │   ├── stores/            # Pinia 状态管理
│   │   ├── styles/            # 样式文件
│   │   ├── types/             # TypeScript 类型定义
│   │   ├── utils/             # 工具函数
│   │   └── views/             # 页面组件
│   │       ├── front-desk/    # 前台页面
│   │       ├── management/    # 后台管理页面
│   │       └── login/         # 登录页面
│   ├── public/                # 静态资源
│   ├── package.json
│   └── vite.config.js         # Vite 配置
├── back-django/               # 后端项目 (Django)
│   ├── Api/                   # API 应用模块
│   │   ├── apply/             # 申请管理
│   │   ├── auth/              # 身份验证
│   │   ├── students/          # 学生管理
│   │   ├── interview/         # 面试管理
│   │   ├── setting/           # 系统设置
│   │   ├── field/             # 字段配置
│   │   ├── files/             # 文件管理
│   │   └── ...
│   ├── ApplicationSystem/     # Django 项目配置
│   ├── database/              # 数据库模型
│   ├── static/                # 静态文件
│   ├── templates/             # 模板文件
│   ├── manage.py
│   └── requirements.txt       # Python 依赖
├── nginx/                     # Nginx 配置文件
├── docs/                      # 项目文档
│   ├── help/                  # 帮助文档
│   ├── images/                # 截图
│   └── release/               # 版本发布说明
├── .github/                   # GitHub 配置
├── package.json               # 项目根配置
├── commitlint.config.js       # 提交规范配置
└── README.md                  # 项目说明

🔧 功能模块详解

前台功能

申请系统

  • 推免申请通道 (/apply/recommend-master):推荐免试研究生申请
  • 考研申请通道 (/apply/exam-master):统考硕士研究生申请
  • 博士申请通道 (/apply/phd):博士研究生申请
  • 直博申请通道 (/apply/direct-phd):本科直接攻读博士申请

信息展示

  • 实验室介绍 (/introduction):PALM 实验室详细介绍
  • 成员展示 (/members):实验室成员信息
  • 学术成果 (/academics):研究成果和论文发表
  • 新闻动态 (/news):实验室最新动态

后台管理功能

数据管理

  • 学生表格 (/manage/students):申请者信息管理和查看
  • 数据库管理 (/manage/database):数据库操作和维护
  • 录取结果 (/manage/result):录取状态管理
  • 录取失败 (/manage/failed):未录取申请者管理

评估系统

  • 面试打分 (/manage/interview):面试评分和记录
  • 百分比统计 (/manage/percent):各项指标百分比分析
  • 数据分析 (/manage/analysis):多维度数据统计和图表展示

系统配置

  • 规则设置 (/manage/setting):录取规则和条件配置
  • 字段配置 (/manage/field):表单字段动态配置
  • 账号管理 (/manage/account):用户权限和账号管理

📡 API 接口文档

申请相关接口

// 提交申请
POST /api/apply/
// 获取学生列表
GET /api/students/

设置相关接口

// 院校配置
GET /api/settings/universities/
PUT /api/settings/universities/

// 专业配置
GET /api/settings/majors/
PUT /api/settings/majors/

// 人员配置
GET /api/settings/personnel/
PUT /api/settings/personnel/

// 奖项配置
GET /api/settings/awards/
PUT /api/settings/awards/

// 年份设置
GET /api/settings/year/
PUT /api/settings/year/

数据模型

Apply 模型 (申请者信息)

class Apply(models.Model):
    # 基本信息
    id = models.CharField(primary_key=True, max_length=255)
    name = models.CharField(max_length=255)
    applicationType = models.CharField(max_length=255)  # 申请类型
    year = models.IntegerField()  # 申请年份
    
    # 教育背景
    university = models.CharField(max_length=255)  # 本科院校
    major = models.CharField(max_length=255)  # 专业
    rank = models.IntegerField()  # 排名
    percentage = models.CharField(max_length=255)  # 百分比
    
    # 联系方式
    phone = models.CharField(max_length=255)
    email = models.CharField(max_length=255)
    
    # 志愿选择
    firstChoice = models.CharField(max_length=255)
    secondChoice = models.CharField(max_length=255)
    thirdChoice = models.CharField(max_length=255)
    
    # 论文信息 (支持最多3篇)
    paper1_paperName = models.CharField(max_length=255)
    paper1_ccfLevel = models.CharField(max_length=255)
    paper1_isFirst = models.BooleanField()
    
    # 奖项信息 (支持最多3项)
    award1_awardName = models.CharField(max_length=255)
    award1_levelRanking = models.CharField(max_length=255)
    award1_isLeader = models.BooleanField()
    
    # 状态字段
    status = models.CharField(max_length=255)
    isFilterCondition = models.CharField(max_length=255)

🛠️ 开发指南

代码规范

项目使用 ESLint + Commitlint + Husky 确保代码质量:

# 代码检查
pnpm lint-vue  # Vue 文件检查
pnpm lint-ts   # TypeScript 文件检查

# 提交规范
git commit -m "feat: 添加新功能"
git commit -m "fix: 修复bug"
git commit -m "docs: 更新文档"

提交类型规范

  • feat: 新功能
  • fix: 修复 bug
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 重构
  • perf: 性能优化
  • test: 测试相关
  • chore: 构建过程或辅助工具变动

开发环境配置

  1. 前端开发

    • 使用 Vite 热重载开发服务器
    • 支持 TypeScript 类型检查
    • 集成 Tailwind CSS 实时编译
  2. 后端开发

    • Django 开发服务器自动重载
    • 支持 Django REST Framework 调试
    • 集成 CORS 跨域支持

部署说明

开发环境

# 前端
cd front-vite && pnpm dev

# 后端
cd back-django && python manage.py runserver

生产环境

# 前端构建
cd front-vite && pnpm build

# 后端部署 (使用 uWSGI + Nginx)
uwsgi --ini palm.ini

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'feat: Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

贡献者

  • JacksonHe04 - 项目创建者和主要维护者

📄 相关文档

🔗 相关链接

📞 联系方式

如有问题或建议,请通过以下方式联系:

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。


⭐ 如果这个项目对你有帮助,请给它一个 Star!

Made with ❤️ by JacksonHe04

About

东南大学 PALM 实验室研究生招生管理系统【官方】

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •