180 lines
3.5 KiB
Markdown
180 lines
3.5 KiB
Markdown
# 快速更新指南 - 修复会话过期问题
|
||
|
||
## 🎯 本次更新解决的问题
|
||
|
||
**症状:** 程序运行几小时后出现:
|
||
```
|
||
[WARNING] 未能提取到成绩信息,返回原始文本
|
||
[INFO] 成绩无变化(共 0 门课程)
|
||
```
|
||
|
||
**原因:** 登录会话过期,需要重新登录
|
||
|
||
**解决:** ✅ 自动检测并重新登录
|
||
|
||
---
|
||
|
||
## 📦 方式1:快速更新(推荐)
|
||
|
||
### 在本地打包
|
||
```bash
|
||
cd /mnt/e/50425/Documents/Github/GPA_Monitoring
|
||
chmod +x 打包.sh
|
||
./打包.sh
|
||
```
|
||
|
||
### 上传到服务器
|
||
```bash
|
||
scp gpa_monitor.tar.gz 用户名@服务器IP:~/
|
||
```
|
||
|
||
### 在服务器上更新
|
||
```bash
|
||
# 停止服务
|
||
systemctl stop grade-monitor
|
||
|
||
# 备份
|
||
cd ~/grade_monitor
|
||
cp monitor.py monitor.py.backup.$(date +%Y%m%d)
|
||
|
||
# 解压更新
|
||
tar -xzf ~/gpa_monitor.tar.gz -C ~/grade_monitor
|
||
|
||
# 赋予权限
|
||
chmod +x diagnose.sh
|
||
|
||
# 重启服务
|
||
systemctl restart grade-monitor
|
||
|
||
# 查看日志(确认自动重新登录功能)
|
||
tail -f monitor.log
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 方式2:仅更新 monitor.py
|
||
|
||
如果只想更新主程序文件:
|
||
|
||
### 在本地
|
||
```bash
|
||
# WSL中
|
||
cd /mnt/e/50425/Documents/Github/GPA_Monitoring
|
||
scp monitor.py 用户名@服务器IP:~/grade_monitor/
|
||
```
|
||
|
||
### 在服务器上
|
||
```bash
|
||
systemctl stop grade-monitor
|
||
systemctl start grade-monitor
|
||
tail -f ~/grade_monitor/monitor.log
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 验证更新成功
|
||
|
||
查看日志,应该能看到:
|
||
|
||
### 正常运行
|
||
```
|
||
[INFO] 开始新一轮检查
|
||
[INFO] 获取成绩页面...
|
||
[DEBUG] 找到成绩表格
|
||
[INFO] 成功提取成绩信息,共 17 行
|
||
[INFO] 共解析到 15 门课程
|
||
[INFO] 成绩无变化(共 15 门课程)
|
||
```
|
||
|
||
### 会话过期时自动处理
|
||
```
|
||
[WARNING] 检测到会话过期,尝试重新登录...
|
||
[INFO] 开始登录统一身份认证...
|
||
[INFO] 登录成功!成功访问成绩页面
|
||
[INFO] 重新登录成功,继续监控
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 故障诊断
|
||
|
||
如果更新后仍有问题:
|
||
|
||
```bash
|
||
cd ~/grade_monitor
|
||
|
||
# 运行诊断工具
|
||
./diagnose.sh
|
||
|
||
# 或手动测试
|
||
python3 monitor.py --test --debug
|
||
|
||
# 查看生成的调试文件
|
||
ls -lh debug_page.html
|
||
cat .last_grade_content.txt
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 更新内容详细列表
|
||
|
||
1. **会话过期自动重新登录** (monitor.py 第697-718行)
|
||
- 检测 `LOGIN_REQUIRED` 状态
|
||
- 自动调用 `login()` 重新登录
|
||
- 记录详细日志
|
||
|
||
2. **改进成绩提取** (monitor.py 第286-370行)
|
||
- 检测登录页面
|
||
- 支持多种表格选择器
|
||
- 自动保存 debug_page.html
|
||
- 添加详细调试日志
|
||
|
||
3. **改进课程解析** (monitor.py 第375-405行)
|
||
- 检测登录失效
|
||
- 识别未解析的HTML
|
||
- 统计课程数量
|
||
|
||
4. **新增调试模式**
|
||
- `python3 monitor.py --debug`
|
||
- 显示详细运行信息
|
||
|
||
5. **新增诊断工具**
|
||
- `diagnose.sh` - 自动检测并给出建议
|
||
- `故障排查指南.md` - 详细排查步骤
|
||
|
||
---
|
||
|
||
## 💡 最佳实践
|
||
|
||
1. **定期检查日志**(每天1-2次即可)
|
||
```bash
|
||
tail -n 50 ~/grade_monitor/monitor.log
|
||
```
|
||
|
||
2. **不要频繁重启服务**
|
||
- 新版本会自动处理会话过期
|
||
- 只在真正出问题时才重启
|
||
|
||
3. **保留备份**
|
||
```bash
|
||
# 每次更新前都会自动备份
|
||
ls -lh ~/grade_monitor/monitor.py.backup.*
|
||
```
|
||
|
||
4. **合理设置检查间隔**
|
||
- 建议 120-300 秒
|
||
- 避免触发学校系统限流
|
||
|
||
---
|
||
|
||
## 🆘 需要帮助?
|
||
|
||
1. 先运行诊断工具:`./diagnose.sh`
|
||
2. 查看故障排查指南:`cat 故障排查指南.md`
|
||
3. 查看详细修复说明:`cat 修复说明_2026-01-21.md`
|
||
|
||
---
|
||
|
||
**更新日期:** 2026-01-21
|
||
**版本:** v2.0 - 自动会话恢复版
|