Initial commit: 批量退课工具项目
This commit is contained in:
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# 学生课程批量退选工具
|
||||
|
||||
## 🚀 功能概述
|
||||
|
||||
本工具旨在帮助管理员通过 API 自动批量退选学生的课程。
|
||||
|
||||
系统会从项目根目录下的 `退课列表.xlsx` 文件中读取学生 ID 和待退选的课程班 ID 列表,然后执行以下操作:
|
||||
|
||||
1. **获取学生课程**:通过 `GET` 请求获取每个学生当前已选的课程班列表。
|
||||
2. **匹配与退课**:在学生的已选课程中匹配需要退选的课程班 ID,并通过 `DELETE` 请求发起退课操作。
|
||||
3. **结果反馈**:在终端清晰地输出每一位学生的处理结果,并在操作结束后提供总结报告。
|
||||
|
||||
> **🛡️ 安全第一**:为了防止误操作,本工具采用 **先预览,后确认** 的安全执行模式。
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 快速上手指南
|
||||
|
||||
### 第 1 步:环境配置 (`.env` 文件)
|
||||
|
||||
在首次使用前,请在项目根目录下创建一个名为 `.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` 文件包含了敏感信息,请 **绝对不要** 将其提交到任何公共代码仓库。
|
||||
|
||||
### 第 2 步:准备数据 (`退课列表.xlsx`)
|
||||
|
||||
请确保项目根目录下存在 `退课列表.xlsx` 文件,并遵循以下格式:
|
||||
|
||||
| 学生ID | 课程班ID |
|
||||
| --- | --- |
|
||||
| 3831629 | 1820221, 1820210 |
|
||||
| 3831630 | 1820456 |
|
||||
|
||||
- **学生ID**: 学生的唯一标识符。
|
||||
- **课程班ID**: 需要退选的一个或多个课程班 ID,多个 ID 之间请用 **英文逗号** `,` 分隔。
|
||||
|
||||
### 第 3 步:安装依赖
|
||||
|
||||
在项目根目录下打开终端,运行以下命令:
|
||||
|
||||
> 👉 **执行安装命令**
|
||||
> ```bash
|
||||
> pip3 install -r requirements.txt
|
||||
> ```
|
||||
|
||||
这将安装运行本工具所需的所有库 (`requests`, `openpyxl`, `python-dotenv`)。
|
||||
|
||||
### 第 4 步:执行脚本
|
||||
|
||||
一切准备就绪后,在项目根目录下运行主程序:
|
||||
|
||||
> 👉 **执行主程序**
|
||||
> ```bash
|
||||
> python3 src/main.py
|
||||
> ```
|
||||
|
||||
#### 4.1) 预览变更
|
||||
|
||||
脚本启动后,将 **自动进入预览模式**。它会分析数据并显示即将发生的操作,但 **不会执行任何实际的退课**。
|
||||
|
||||
```
|
||||
--- 预览模式: 以下操作将不会实际执行 ---
|
||||
---
|
||||
➡️ [预览] 学生 3831629 将退课: 体育自主选修, 音乐
|
||||
ℹ️ 学生 3831630 无匹配课程班可退。
|
||||
---
|
||||
```
|
||||
|
||||
#### 4.2) 确认执行
|
||||
|
||||
预览信息显示完毕后,程序会暂停并等待您的最终确认。
|
||||
|
||||
> 👉 **输入 `drop` 确认执行**
|
||||
> ```
|
||||
> 请检查以上预览信息。
|
||||
> 👉 如果确认要执行退课操作,请输入 'drop' 并按 Enter。输入其他任何内容将取消操作: drop
|
||||
> ```
|
||||
|
||||
- **确认执行**:精确输入 `drop` 并按回车键,脚本将开始执行实际的退课操作。
|
||||
- **取消操作**:输入任何其他内容(或直接按回车),程序将立即安全退出。
|
||||
|
||||
#### 4.3) 查看结果
|
||||
|
||||
确认执行后,脚本会处理每个学生,并实时打印结果。全部操作完成后,会显示最终的统计报告。
|
||||
|
||||
```
|
||||
--- 开始执行批量退课 ---
|
||||
---
|
||||
✅ 学生 3831629 已退课: 体育自主选修, 音乐
|
||||
ℹ️ 学生 3831630 无匹配课程班,跳过。
|
||||
|
||||
--- 批量退课结果 ---
|
||||
✅ 成功: 1
|
||||
❌ 失败: 0
|
||||
```
|
||||
Reference in New Issue
Block a user