Files
toolbox/README.md
2025-10-22 17:58:21 +08:00

111 lines
3.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 学生课程批量退选工具
## 🚀 功能概述
本工具旨在帮助管理员通过 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
```