Skip to content

xiethon/chaoxing-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

超星刷课管理平台

一站式超星学习通自动刷课管理系统,支持多学生、多课程并行学习,提供 Web 管理界面。

✨ 功能特性

  • 🎓 多学生管理 — 添加多个学生账号,独立管理各自课程
  • 📚 自动刷课 — 自动播放视频任务点,模拟真实学习进度
  • 📊 进度追踪 — 实时显示每门课程的完成进度
  • 🌐 公网访问 — 内置 Cloudflare Tunnel 穿透,手机随时查看
  • 📱 移动适配 — 响应式界面,手机端卡片布局
  • 🔐 管理员认证 — JWT 登录保护

🏗 项目架构

chaoxing-web/
├── backend/                  # 后端服务
│   ├── main.py              # FastAPI 入口 + SPA 路由
│   ├── api/
│   │   ├── auth.py          # JWT 认证 (admin/123456)
│   │   ├── students.py      # 学生 & 课程 CRUD API
│   │   └── websocket.py     # WebSocket 实时推送
│   ├── models/
│   │   └── database.py      # SQLAlchemy 模型 + SQLite
│   ├── services/
│   │   ├── chaoxing_service.py  # 超星 API 封装 (登录/课程/进度)
│   │   └── study_engine.py      # 刷课引擎 (多线程调度)
│   ├── static/              # 前端构建产物 (自动生成)
│   └── requirements.txt
├── frontend/                 # 前端应用
│   ├── src/
│   │   ├── main.js          # Vue 入口 + Axios 配置
│   │   ├── router/index.js  # 路由配置
│   │   └── views/
│   │       ├── Login.vue          # 登录页
│   │       ├── Students.vue       # 学生列表 (PC表格/手机卡片)
│   │       ├── AddStudent.vue     # 添加学生
│   │       └── StudentCourses.vue # 课程详情 + 进度
│   ├── package.json
│   └── vite.config.js
└── start.sh                  # 一键启动脚本

技术栈

层级 技术
后端 Python 3.10+ · FastAPI · SQLAlchemy · SQLite
前端 Vue 3 · Vite · Element Plus
认证 JWT (python-jose)
刷课 调用 chaoxing CLI 子进程
穿透 Cloudflare Tunnel (cloudflared)

工作流程

浏览器/手机 → cloudflared → FastAPI(:8080)
                                ├── /api/*       → REST API
                                ├── /ws/*        → WebSocket 推送
                                └── /*           → SPA (Vue)

管理员点击「开始学习」
    → study_engine 启动线程
        → 为每门课生成 config.ini
        → subprocess 调用 chaoxing CLI
        → 轮询进度 → WebSocket 推送前端

📦 安装部署

环境要求

  • macOS / Linux
  • Python 3.10+
  • Node.js 18+
  • chaoxing CLI 已克隆到同级目录

1. 安装后端依赖

cd backend
pip3 install -r requirements.txt

2. 安装前端依赖并构建

cd frontend
npm install
npm run build

3. 一键启动

# 启动后端 + 构建前端 + 开启公网穿透
bash start.sh

启动后会显示:

╔══════════════════════════════════════════════════════╗
║         超星刷课管理平台 - 已启动                      ║
╠══════════════════════════════════════════════════════╣
║  📍 本地访问:  http://localhost:8080                   ║
║  🌐 公网访问:  https://xxx.trycloudflare.com           ║
║  👤 管理员:    admin / 123456                         ║
╚══════════════════════════════════════════════════════╝

Ctrl+C 停止所有服务。

手动启动(不用穿透)

# 复制前端构建产物到后端
cp -r frontend/dist backend/static

# 启动后端
cd backend
python3 -m uvicorn main:app --host 0.0.0.0 --port 8080

访问 http://localhost:8080

🚀 使用教程

1. 登录

打开网页,输入管理员账号:

  • 用户名: admin
  • 密码: 123456

2. 添加学生

点击「添加」按钮,填写:

  • 学生账号: 学号
  • 密码: 登录密码
  • 登录方式: 机构账号登录 / 手机号登录

系统会自动验证登录并拉取该学生的全部课程。

3. 管理课程

点击学生姓名进入课程列表:

  • 开关: 控制该课程是否参与自动学习
  • 全选 / 全不选: 批量操作
  • 刷新: 从超星服务器拉取最新进度

4. 开始刷课

  • 在学生列表点击「开始学习」
  • 或在课程详情页点击「开始」

系统会按顺序学习所有已启用的课程。

5. 查看进度

  • 进度条实时显示完成比例
  • 课程状态: 已完成 / 学习中 / 待学习 / 已停用

📝 日志查看

# 后端服务日志
tail -f /tmp/chaoxing-backend.log

# 刷课引擎日志 (带时间戳)
tail -f /tmp/chaoxing-study.log

# 某个学生某门课的详细日志
tail -f chaoxing/log_student_{学生ID}_{课程ID}.log

⚠️ 注意事项

  • 首次启动会自动创建 SQLite 数据库
  • 如果开了系统代理,刷课引擎会自动绕过(已内置 trust_env=False
  • Cloudflare Tunnel 每次启动地址会变,适合临时使用
  • start.sh 仅在前端源码有变更时才会重新构建

📁 API 接口

方法 路径 说明
POST /api/auth/login 管理员登录
GET /api/students 学生列表
POST /api/students 添加学生
DELETE /api/students/{id} 删除学生
GET /api/students/{id}/courses 课程列表
PUT /api/students/{id}/courses/{cid}/toggle 切换课程开关
PUT /api/students/{id}/courses/batch-toggle 批量切换
POST /api/students/{id}/start 开始学习
POST /api/students/{id}/stop 停止学习
POST /api/students/{id}/refresh 刷新进度

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors