Nakul-26/exam-notification-system
GitHub: Nakul-26/exam-notification-system
一款集成 WhatsApp 通知功能的学校教务管理平台,帮助教育机构自动化管理学生成绩并向家长推送考试分数。
Stars: 0 | Forks: 0
# 考试成绩与 WhatsApp 通知系统
**🚀 [在线演示](https://exam-management.pages.dev/)**
*(登录身份 **Admin:** `admin@school.com` / `Admin@123` 或 **Teacher:** `teacher@school.com` / `Teacher@123`)*
### 📝 演示账号
*你可以使用以下账号来探索 [在线演示](https://exam-management.pages.dev/):*
| 角色 | 邮箱 | 密码 |
| :--- | :--- | :--- |
| **Admin** | `admin@school.com` | `Admin@123` |
| **Teacher** | `teacher@school.com` | `Teacher@123` |
这是一个综合性的学校管理平台,旨在简化教务操作,自动化跟踪学生成绩,并通过 WhatsApp Cloud API 实现与家长的无缝沟通。
## 📸 系统概览
### 安全认证与访问

*现代化、安全的登录界面,支持基于角色的访问控制 (RBAC),适用于 Admin 和 Teacher。*
### 学生与班级管理

*管理学生档案,支持批量 Excel 导入和高级搜索筛选。*

*轻松定义班级和分支来组织学校架构。*
### 教务配置

*定义核心课程和科目列表。*

*将学生和科目映射到特定的班级分支,创建结构化的教学环境。*
### 教职工管理

*管理教师档案,并将其分配到特定的班级与科目组合中。*
### 考试与成绩操作

*配置考试、设置时间表,并通过自动化验证管理成绩数据。*
## 🚀 核心功能
### 🛡️ 安全且可扩展的架构
- **多租户设计:** 数据通过 `collegeId` 进行逻辑隔离,确保多个机构的隐私和可扩展性。
- **强大的安全性:** 实现了带有 **Refresh Token 轮换**的 JWT、CSRF 防护以及账户锁定机制。
- **API 加固:** 受 **Helmet**、Express Rate Limiter 和 MongoDB 查询清理保护。
### 📱 WhatsApp 集成 (Meta Cloud API)
- **自动发送成绩:** 将考试分数直接发送到家长的 WhatsApp 号码。
- **智能防护:** 包含每月发送上限、按收件人发送报告以及电话号码标准化。
- **自定义通知:** 在自动发送的成绩消息中添加个性化备注。
### 📊 数据与审计管理
- **批量操作:** 使用 **Excel (XLSX)** 模板无缝导入/导出学生、教师和成绩。
- **全面的审计:** 跟踪所有管理操作和安全事件,并支持导出为 CSV 以满足合规要求。
- **教师门户:** 为教职员工提供受限视图,仅允许他们管理所分配班级的成绩和通知。
## 🛠️ 技术栈
- **前端:** React 19, TypeScript, Vite, Vanilla CSS。
- **后端:** Node.js, Express, MongoDB (Mongoose)。
- **通信:** Meta WhatsApp Cloud API。
- **安全:** JWT, CSRF, Helmet, Rate Limiting。
## ⚙️ 设置与安装
### 前置条件
- Node.js 18+ & npm
- MongoDB Atlas 账号
- Meta Developer 账号(用于 WhatsApp API)
### 安装
1. **克隆仓库**
2. **安装依赖**
# 安装后端依赖
cd backend && npm install
# 安装前端依赖
cd ../frontend && npm install
3. **配置**
- 将 `backend/.env.example` 复制到 `backend/.env`,并填写你的 MongoDB URI 和 WhatsApp API 凭据。
- *注意:如果你的 MongoDB 密码包含特殊字符,请确保对其进行 URL 编码。*
4. **生成演示数据**(可选)
cd backend
node src/scripts/seedDemoUsers.js
5. **启动开发服务器**
# 启动后端 (端口 5000)
cd backend && npm run dev
# 启动前端 (端口 5173)
cd frontend && npm run dev
## 💡 注意事项
- **WhatsApp 测试模式:** 在开发环境下,消息只会发送到你在 Meta App Dashboard 中验证过的号码。
- **数据隔离:** 所有数据都与 `collegeId` 关联(默认为 'default')。
*专注于效率、安全性和用户体验而开发。*
标签:MITM代理, WhatsApp集成, 多租户架构, 学校管理系统, 成绩管理, 教育管理, 自动化攻击, 角色访问控制