内容
# LMS 助手
基于人工智能的LMS助手,监控作业、生成解决方案、创建格式化提交文档,并在用户批准后提交。
为 **SSN工程学院LMS** (基于Moodle)构建。
## 架构
```
LMS (Moodle) ←→ Playwright ←→ MCP 服务器 ←→ 人工智能代理
↕
FastAPI 网页仪表盘
↕
SQLite 数据库
```
## 快速入门
```bash
# 设置
python -m venv .venv
source .venv/bin/activate
pip install -e .
# 安装Playwright浏览器
playwright install chromium
# 配置凭证
cp .env .env.local # 编辑LMS凭证和AI API密钥
```
## 命令
| 命令 | 功能 |
|---|---|
| `python -m app.main mcp` | 运行MCP服务器(标准输入输出)— 连接AI代理 |
| `python -m app.main web` | 在 http://127.0.0.1:8080 运行网页仪表盘 |
| `python -m app.main all` | 运行MCP服务器 + 网页界面 + 调度器 |
| `python -m app.main init-db` | 初始化/重置数据库 |
## MCP 工具(12种工具)
| 工具 | 描述 |
|---|---|
| `login()` | 登录LMS |
| `logout()` | 注销 |
| `list_assignments()` | 列出所有可见作业 |
| `get_assignment(id)` | 获取完整作业详情 |
| `download_attachment(id, url, filename?)` | 下载附件文件 |
| `classify_assignment(id)` | AI分类(文档/编程/手写等) |
| `solve_assignment(id)` | AI生成解决方案 |
| `generate_document(id, fmt='docx')` | 创建格式化DOCX/PDF |
| `upload_submission(id, file_path)` | 上传文件到LMS |
| `submit_assignment(id)` | 提交作业 |
| `get_submission_status(id)` | 检查提交状态 |
## 项目结构
```
lms_mcp/
├── app/
│ ├── mcp/ # MCP服务器 + 工具注册
│ │ ├── server.py # FastMCP设置,工具装饰器
│ │ └── tools.py # 工具实现
│ ├── lms/ # Playwright LMS自动化
│ │ ├── auth.py # 登录/注销
│ │ ├── browser.py # 浏览器生命周期管理
│ │ ├── assignments.py # 列出,获取,下载
│ │ ├── submission.py # 上传,提交,状态
│ │ └── selectors.py # Moodle CSS选择器
│ ├── ai/ # LLM集成
│ │ ├── client.py # Anthropic/OpenAI抽象
│ │ ├── classifier.py # 作业类型分类
│ │ └── solver.py # 解决方案生成
│ ├── documents/ # 文档生成
│ │ ├── generator.py # DOCX和PDF生成
│ │ └── templates.py # 文档模板
│ ├── database/ # SQLite持久化
│ │ ├── models.py # 架构
│ │ └── repository.py # CRUD操作
│ ├── notifications/ # 用户通知
│ │ └── notifier.py
│ ├── scheduler/ # 周期性监控
│ │ └── monitor.py # APScheduler
│ ├── ui/ # 网页仪表盘
│ │ ├── app.py # FastAPI应用
│ │ ├── routes.py # API端点
│ │ └── templates/ # Jinja2模板
│ └── main.py # 入口点
├── config/
│ └── settings.py # 配置
├── data/ # SQLite数据库
├── generated/ # 输出文档
└── site_files/ # 参考HTML快照
```
## 工作流程
1. **监控** → 调度器轮询LMS获取新作业
2. **通知** → 检测到新作业并保存
3. **分类** → AI确定作业类型
4. **解决** → AI生成解决方案内容
5. **文档** → 生成格式化DOCX/PDF,包含学生信息
6. **审查** → 用户预览/编辑/重新生成(通过工具)
7. **提交** → 上传并提交到LMS(仅限用户批准)
## 环境变量(`.env`)
```
LMS_URL=https://lms.ssn.edu.in
LMS_USERNAME=your_email@ssn.edu.in
LMS_PASSWORD=your_password
ANTHROPIC_API_KEY=sk-ant-...
STUDENT_NAME=您的姓名
STUDENT_REG_NO=2410112
```