# teacher-workload-system
**Repository Path**: listen-carefully/teacher-workload-system
## Basic Information
- **Project Name**: teacher-workload-system
- **Description**: 教师工作量及超课时费核算系统 - 基于React + FastAPI的全栈Web应用
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-03-05
- **Last Updated**: 2026-03-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 教师工作量及超课时费核算系统





一个基于 React + FastAPI 的高校教师工作量自动化核算管理系统
[在线演示](http://demo.example.com) · [功能特性](#-功能特性) · [快速开始](#-快速开始) · [技术栈](#-技术栈)
---
## 📖 项目简介
教师工作量及超课时费核算系统是一个面向高校教务管理的全栈Web应用,旨在解决传统手工核算效率低、易出错的问题。系统实现了教学任务管理、工作量自动核算、超课时费计算、多维度统计分析等核心功能,支持多角色权限管理和数据隔离。
### 核心价值
- 🚀 **自动化核算**:一键完成全校教师工作量核算,节省90%人工时间
- 📊 **智能统计**:多维度数据分析,实时生成可视化报表
- 🔐 **权限管理**:基于RBAC的三级权限体系,数据安全隔离
- 📱 **响应式设计**:支持PC、平板等多种设备访问
- 💾 **数据导入导出**:支持Excel批量导入教师信息、导出核算结果
---
## ✨ 功能特性
### 核心功能模块
#### 1. 基础数据管理
- **院系管理**:院系信息的增删改查、状态管理
- **教师管理**:教师档案管理、支持Excel批量导入
- **课程管理**:课程信息维护、课程类型配置
- **班级管理**:班级信息管理、学生人数统计
- **学期管理**:学期设置、当前学期切换
#### 2. 教学任务管理
- 教学任务分配与调整
- 支持按学期、教师、课程多维度查询
- 实际学时录入与修改
- 任务统计与汇总
#### 3. 工作量核算
- **核算标准配置**:按职称设置额定工作量和超课时单价
- **课程系数设置**:理论课(1.0)、实验课(1.2)、实训课(1.5)
- **一键核算**:自动计算所有教师工作量和超课时费
- **核算明细**:详细展示每门课程的计算过程
- **发布管理**:草稿/已发布状态控制,发布后锁定数据
#### 4. 统计分析
- **数据概览**:教师数、课程数、任务数等核心指标
- **工作量统计**:总工作量、超课时费汇总
- **排行榜**:教师工作量TOP排名
- **图表展示**:柱状图、饼图、折线图等多种图表
- **数据导出**:支持导出Excel报表
#### 5. 通知系统
- 支持全校通知、院系通知、个人通知
- 未读消息提醒
- 通知优先级设置
- 已读/未读状态管理
#### 6. 权限管理
- **超级管理员**:全局管理权限
- **院系管理员**:本院系数据管理权限
- **教师**:个人数据查看权限
- 操作日志记录与审计
---
## 🎯 核心算法
### 工作量计算公式
```
单门课程工作量 = 实际学时 × 课程系数
课程系数:
- 理论课(theory): 1.0
- 实验课(experiment): 1.2
- 实训课(practice): 1.5
总工作量 = Σ(所有课程工作量)
超课时 = MAX(总工作量 - 额定工作量, 0)
超课时费 = 超课时 × 超课时单价
```
### 计算示例
某教授的核算标准:
- 额定工作量:280学时
- 超课时单价:100元/学时
本学期教学任务:
| 课程 | 类型 | 实际学时 | 系数 | 工作量 |
|--------------|--------|----------|------|--------|
| 程序设计基础 | 理论课 | 64 | 1.0 | 64.0 |
| 数据结构 | 理论课 | 64 | 1.0 | 64.0 |
| 程序设计实验 | 实验课 | 32 | 1.2 | 38.4 |
| 软件工程实训 | 实训课 | 80 | 1.5 | 120.0 |
计算结果:
- 总工作量 = 286.4 学时
- 超课时 = 286.4 - 280 = 6.4 学时
- 超课时费 = 6.4 × 100 = 640 元
---
## 🛠️ 技术栈
### 前端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| React | 19.2 | 前端框架 |
| TypeScript | 5.9 | 类型安全 |
| Ant Design | 6.1 | UI组件库 |
| Zustand | 5.0 | 状态管理 |
| React Router | 7.12 | 路由管理 |
| Axios | 1.13 | HTTP请求 |
| ECharts | 6.0 | 数据可视化 |
| Vite | 7.2 | 构建工具 |
### 后端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| Python | 3.13 | 编程语言 |
| FastAPI | Latest | Web框架 |
| SQLAlchemy | 2.0 | ORM框架 |
| MySQL | 8.0 | 数据库 |
| Pydantic | 2.0 | 数据验证 |
| JWT | - | 身份认证 |
| BCrypt | - | 密码加密 |
| openpyxl | 3.1 | Excel处理 |
### 架构特点
- 🏗️ **前后端分离**:React SPA + RESTful API
- 🔒 **安全认证**:JWT Token + BCrypt密码加密
- 📦 **模块化设计**:清晰的代码组织结构
- 🎨 **响应式布局**:适配多种屏幕尺寸
- 🚀 **高性能**:Vite构建 + FastAPI异步处理
---
## 🚀 快速开始
### 环境要求
- Node.js >= 18.0
- Python >= 3.13
- MySQL >= 8.0
### 1. 克隆项目
```bash
git clone https://github.com/yourusername/workload-system.git
cd workload-system
```
### 2. 数据库初始化
```bash
# 使用MySQL客户端执行初始化脚本
mysql -u root -p < DB/init_database.sql
```
或使用SQLyog等图形化工具执行 `DB/init_database.sql`
### 3. 后端启动
```bash
cd backend
# 创建虚拟环境(首次)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库连接信息
# 启动服务
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
后端服务将运行在 http://localhost:8000
API文档:http://localhost:8000/docs
### 4. 前端启动
```bash
cd admin
# 安装依赖
npm install
# 启动开发服务器
npm run dev
```
前端应用将运行在 http://localhost:5173
### 5. 登录系统
默认测试账号:
| 角色 | 账号 | 密码 |
|------------|----------|----------|
| 超级管理员 | admin | admin123 |
| 院系管理员 | cs_admin | 123456 |
| 教师 | T001 | 123456 |
---
## 📁 项目结构
```
workload-system/
├── admin/ # 前端项目
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面组件
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # TypeScript类型
│ │ ├── utils/ # 工具函数
│ │ └── styles/ # 全局样式
│ ├── docs/ # 项目文档
│ └── package.json
│
├── backend/ # 后端项目
│ ├── app/
│ │ ├── api/ # API路由
│ │ │ └── v1/ # v1版本接口
│ │ ├── models/ # 数据库模型
│ │ ├── schemas/ # Pydantic模式
│ │ ├── services/ # 业务服务
│ │ ├── utils/ # 工具函数
│ │ ├── config.py # 配置文件
│ │ ├── database.py # 数据库连接
│ │ └── main.py # 应用入口
│ ├── uploads/ # 上传文件目录
│ ├── .env # 环境配置
│ └── requirements.txt # Python依赖
│
├── DB/ # 数据库脚本
│ ├── ER图SQL文件/
│ └── init_database.sql # 初始化脚本
│
└── README.md # 项目说明
```
---
## 📊 数据库设计
### ER图概览
系统共包含13张数据表,核心实体关系如下:
```
院系 (department)
├─→ 教师 (teacher)
├─→ 班级 (class_info)
└─→ 课程 (course)
学期 (semester)
├─→ 教学任务 (teaching_task)
├─→ 核算标准 (workload_standard)
└─→ 工作量核算结果 (workload_result)
教学任务 (teaching_task)
└─→ 工作量核算明细 (workload_detail)
用户 (sys_user)
├─→ 通知 (notice)
├─→ 通知已读 (notice_read)
└─→ 操作日志 (operation_log)
```
### 核心数据表
| 表名 | 说明 | 记录数(示例) |
|------|------|----------------|
| sys_user | 系统用户 | ~100 |
| department | 院系信息 | ~20 |
| teacher | 教师档案 | ~500 |
| course | 课程信息 | ~300 |
| class_info | 班级信息 | ~100 |
| semester | 学期信息 | ~10 |
| teaching_task | 教学任务 | ~2000/学期 |
| workload_standard | 核算标准 | ~4/学期 |
| workload_result | 核算结果 | ~500/学期 |
| workload_detail | 核算明细 | ~2000/学期 |
| notice | 通知公告 | ~100 |
| notice_read | 已读记录 | ~5000 |
| operation_log | 操作日志 | ~10000 |
详细设计请参考:[数据库设计文档](admin/docs/06-数据库设计文档.md)
---
## 🔌 API接口
### 接口规范
- 基础路径:`/api/v1`
- 请求方式:RESTful风格(GET/POST/PUT/DELETE)
- 响应格式:JSON
- 认证方式:JWT Bearer Token
### 统一响应格式
```json
{
"code": 200,
"message": "success",
"data": {}
}
```
### 核心接口列表
| 模块 | 接口 | 说明 |
|------|------|------|
| 认证 | POST /api/v1/auth/login | 用户登录 |
| 认证 | POST /api/v1/auth/logout | 用户登出 |
| 认证 | GET /api/v1/auth/me | 获取当前用户信息 |
| 院系 | GET /api/v1/departments | 获取院系列表 |
| 教师 | GET /api/v1/teachers | 获取教师列表 |
| 教师 | POST /api/v1/teachers/import | 批量导入教师 |
| 课程 | GET /api/v1/courses | 获取课程列表 |
| 任务 | GET /api/v1/tasks | 获取教学任务列表 |
| 任务 | POST /api/v1/tasks | 创建教学任务 |
| 标准 | GET /api/v1/standards | 获取核算标准 |
| 核算 | POST /api/v1/workloads/calculate | 执行工作量核算 |
| 核算 | POST /api/v1/workloads/publish | 发布核算结果 |
| 核算 | GET /api/v1/workloads/export | 导出核算结果 |
| 统计 | GET /api/v1/statistics/overview | 获取统计概览 |
| 统计 | GET /api/v1/statistics/teacher-ranking | 教师排行榜 |
| 通知 | GET /api/v1/notices/my | 获取我的通知 |
完整API文档:http://localhost:8000/docs
---
## 🎨 界面预览
### 登录页面
- 简洁的登录界面
- 支持记住密码
- 输入验证提示
### 工作台
- 数据概览卡片(教师数、课程数、任务数等)
- 工作量统计图表
- 核算进度展示
- 教师工作量排行榜
- 未读通知列表
### 工作量核算
- 核算参数设置
- 一键核算按钮
- 核算进度实时显示
- 核算结果列表
- 明细查看弹窗
- 批量发布/撤回
### 统计分析
- 多维度筛选条件
- ECharts可视化图表
- 数据表格展示
- Excel导出功能
---
## 🔐 安全特性
### 认证与授权
- JWT Token身份认证
- Token自动刷新机制
- BCrypt密码加密存储
- 基于角色的访问控制(RBAC)
### 数据安全
- SQL注入防护(ORM参数化查询)
- XSS攻击防护(前端输入过滤)
- CSRF防护(Token验证)
- 敏感数据加密存储
### 操作审计
- 登录日志记录
- 敏感操作日志
- IP地址记录
- 操作时间追溯
---
## 📈 性能优化
### 前端优化
- 路由懒加载
- 组件按需加载
- 图片懒加载
- 请求防抖节流
- 列表虚拟滚动
### 后端优化
- 数据库索引优化
- SQL查询优化
- 分页查询
- 异步处理
- 缓存机制
---
## 🧪 测试
### 前端测试
```bash
cd admin
npm run test
```
### 后端测试
```bash
cd backend
pytest
```
---
## 📦 部署
### 生产环境构建
#### 前端构建
```bash
cd admin
npm run build
# 构建产物在 dist/ 目录
```
#### 后端部署
```bash
cd backend
# 使用 gunicorn 部署
gunicorn app.main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000
```
### Docker部署(推荐)
```bash
# 构建镜像
docker-compose build
# 启动服务
docker-compose up -d
```
### Nginx配置示例
```nginx
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /var/www/workload-system/dist;
try_files $uri $uri/ /index.html;
}
# 后端API代理
location /api {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 上传文件访问
location /uploads {
proxy_pass http://localhost:8000;
}
}
```
---
## 🤝 贡献指南
欢迎提交Issue和Pull Request!
### 开发流程
1. Fork本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 提交Pull Request
### 代码规范
- 前端:遵循ESLint规则
- 后端:遵循PEP 8规范
- 提交信息:遵循Conventional Commits规范
---
## 📄 许可证
本项目采用 [MIT](LICENSE) 许可证
---
## 👨💻 作者
**Your Name**
- GitHub: [@yourusername](https://github.com/yourusername)
- Email: your.email@example.com
---
## 🙏 致谢
感谢以下开源项目:
- [React](https://reactjs.org/)
- [FastAPI](https://fastapi.tiangolo.com/)
- [Ant Design](https://ant.design/)
- [ECharts](https://echarts.apache.org/)
- [SQLAlchemy](https://www.sqlalchemy.org/)
---
## 📞 联系方式
如有问题或建议,欢迎通过以下方式联系:
- 提交 [Issue](https://github.com/yourusername/workload-system/issues)
- 发送邮件至:your.email@example.com
- 加入讨论群:[QQ群/微信群]
---
**⭐ 如果这个项目对你有帮助,请给一个Star支持一下!⭐**
Made with ❤️ 宁采臣的剑