Files
toolbox/README.md
2025-10-24 12:53:22 +08:00

240 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 学生课程批量退选工具
## 🚀 功能概述
本工具提供用户友好的 Web 界面来帮助管理员批量退选学生的课程,支持文件上传、数据预览和可视化操作,让批量退课更加直观便捷。
## 🏗️ 项目架构
```
deleclass_副本2/
├── src/ # 后端 API 服务
│ └── main.py # Flask API 服务器
├── toolbox-app/ # 前端 Web 应用
│ ├── src/ # Vue.js 源代码
│ ├── public/ # 静态资源
│ └── package.json # 前端依赖配置
├── requirements.txt # Python 依赖
├── generate_template.py # Excel 模板生成工具
├── .env.example # 环境变量模板
└── README.md # 项目文档
```
## 🛠️ 技术栈
### 后端
- **Python 3.x** - 主要编程语言
- **Flask** - Web 框架,提供 API 服务
- **openpyxl** - Excel 文件处理
- **requests** - HTTP 请求库
- **python-dotenv** - 环境变量管理
### 前端
- **Vue.js 3** - 现代化前端框架
- **Vite** - 快速构建工具
- **Element Plus** - UI 组件库
- **Axios** - HTTP 客户端
## 🎯 核心功能
系统会处理 Excel 文件中的学生 ID 和课程班 ID 列表,执行以下操作:
1. **获取学生课程**:通过 `GET` 请求获取每个学生当前已选的课程班列表
2. **匹配与退课**:在学生的已选课程中匹配需要退选的课程班 ID并通过 `DELETE` 请求发起退课操作
3. **结果反馈**:提供详细的处理结果和统计报告
> **🛡️ 安全第一**:为了防止误操作,本工具采用 **先预览,后确认** 的安全执行模式。
---
## 🚀 快速开始
### 1. 启动后端服务
```bash
# 安装 Python 依赖
pip3 install -r requirements.txt
# 配置环境变量(创建 .env 文件)
cp .env.example .env
# 编辑 .env 文件,填入您的 API 配置
# 启动 Flask 后端服务
python3 src/main.py
```
### 2. 启动前端应用
```bash
# 进入前端目录
cd toolbox-app
# 安装 Node.js 依赖
npm install
# 启动开发服务器
npm run dev
```
### 3. 使用 Web 界面
1. 打开浏览器访问 `http://localhost:5173`
2. 上传包含学生 ID 和课程班 ID 的 Excel 文件
3. 预览退课数据,确认无误后执行批量退课
4. 查看详细的操作结果和统计信息
## 📋 数据格式要求
Excel 文件应包含以下列:
| 学生ID | 课程班ID |
| --- | --- |
| 3831629 | 1820221, 1820210 |
| 3831630 | 1820456 |
- **学生ID**: 学生的唯一标识符
- **课程班ID**: 需要退选的一个或多个课程班 ID多个 ID 之间用英文逗号 `,` 分隔
## ⚙️ 环境配置
创建 `.env` 文件并配置以下参数:
```dotenv
# --- API 配置 ---
BASE_URL=https://api.seiue.com
# --- 身份认证 ---
# ⚠️ 请将 <你的Token> 替换为有效的 Bearer Token
AUTHORIZATION="Bearer <你的Token>"
X_ROLE="shadow"
X_SCHOOL_ID="665"
X_REFLECTION_ID="969269"
SEMESTER_ID=61626
```
> **⚠️ 重要提醒:**
> - 必须将 `AUTHORIZATION` 中的 `<你的Token>` 替换为您的有效令牌
> - `.env` 文件包含敏感信息,请勿提交到公共代码仓库
---
## 🔧 开发指南
### 本地开发环境搭建
1. **克隆项目**
```bash
git clone https://git.vcck.cn/nvex/toolbox.git
cd toolbox
```
2. **后端开发**
```bash
# 安装 Python 依赖
pip3 install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件
# 启动后端服务(开发模式)
python3 src/main.py
```
3. **前端开发**
```bash
cd toolbox-app
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
```
### 项目结构说明
```
├── src/main.py # Flask API 服务器
├── toolbox-app/
│ ├── src/
│ │ ├── components/ # Vue 组件
│ │ ├── views/ # 页面视图
│ │ ├── router/ # 路由配置
│ │ └── store/ # 状态管理
│ ├── public/ # 静态资源
│ └── vite.config.js # Vite 配置
├── requirements.txt # Python 依赖
├── generate_template.py # Excel 模板生成工具
└── .env.example # 环境变量模板
```
## 📦 部署指南
### 生产环境部署
1. **后端部署**
```bash
# 使用 gunicorn 部署 Flask 应用
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:5000 src.main:app
```
2. **前端部署**
```bash
cd toolbox-app
npm run build
# 将 dist/ 目录部署到 Web 服务器
```
3. **使用 Docker可选**
```dockerfile
# 示例 Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "src/main.py"]
```
## 🤝 贡献指南
1. Fork 本项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📄 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🆘 常见问题
### Q: 如何生成 Excel 模板?
A: 运行 `python3 generate_template.py` 生成标准格式的 Excel 模板文件。
### Q: API 认证失败怎么办?
A: 请检查 `.env` 文件中的 `AUTHORIZATION` 配置,确保 Token 有效且格式正确。
### Q: 前端无法连接后端?
A: 确保后端服务已启动(默认端口 5000检查前端配置中的 API 基础 URL。
### Q: Excel 文件格式错误?
A: 确保 Excel 文件包含 "学生ID" 和 "课程班ID" 列,且数据格式符合要求。
---
## 📞 技术支持
如有问题或建议,请通过以下方式联系:
- 📧 提交 Issue: [项目 Issues](https://git.vcck.cn/nvex/toolbox/issues)
- 💬 项目讨论: [项目讨论区](https://git.vcck.cn/nvex/toolbox/discussions)
---