⚒️ 重大重构 LoveACE V2
引入了 mongodb 对数据库进行了一定程度的数据加密 性能改善 代码简化 统一错误模型和响应 使用 apifox 作为文档
This commit is contained in:
291
README.md
291
README.md
@@ -1,159 +1,115 @@
|
||||
# LoveACE - 财大教务自动化工具
|
||||
# LoveACE - 财大自动化工具
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img src="logo.jpg" alt="LoveAC Logo" width="120" height="120" />
|
||||
|
||||
**简化学生教务操作,提高使用效率**
|
||||
|
||||
[](LICENSE)
|
||||
[](https://python.org)
|
||||
[](https://fastapi.tiangolo.com)
|
||||
[]
|
||||
|
||||
<img src="https://cdn.apifox.com/app/project-icon/custom/20251011/e20b3227-13dd-4057-b1d3-dc821294d914.jpeg" alt="LoveACE Logo" width="120" height="120" />
|
||||
|
||||
**Make It Easy**
|
||||
</div>
|
||||
|
||||
## 🚀 项目简介
|
||||
|
||||
LoveACE 是一个面向安徽财经大学的教务系统自动化工具,专为安徽财经大学教务OA系统设计。通过RESTful API接口,提供自动评教(开发中)、课表查询、成绩查询等功能,大幅简化学生的教务操作流程。
|
||||
LoveACE 是一个面向安徽财经大学的教务系统自动化工具,专为安徽财经大学各类系统设计。通过 RESTful API 接口,提供课表查询、成绩查询、积分查询、宿舍管理等功能,大幅简化学生的日常操作流程。
|
||||
|
||||
### ✨ 主要特性
|
||||
|
||||
- **🔐 安全认证**: 基于邀请码的用户注册系统,确保使用安全
|
||||
- **📚 教务集成**: 深度集成教务系统,支持学业信息、培养方案查询
|
||||
- **⭐ 智能评教**: 全自动评教系统,支持任务管理和进度监控
|
||||
- **🔐 安全认证**: 基于 Token 的用户认证系统,RSA 加密保护敏感信息
|
||||
- **📚 教务集成**: 深度集成教务系统,支持成绩、课表、考试、培养方案、学业信息查询
|
||||
- **💯 积分查询**: 爱安财系统集成,实时查询积分和明细
|
||||
- **🚀 高性能**: 基于FastAPI构建,支持异步处理和高并发
|
||||
- **📖 完整文档**: 提供详细的API文档和部署指南
|
||||
- **🏠 宿舍管理**: ISIM系统集成,支持电费查询和房间信息查询
|
||||
- **🚀 高性能**: 基于 FastAPI 构建,支持异步处理和高并发
|
||||
- **📊 中间件支持**: 请求处理时间监控、CORS 配置
|
||||
- **🔒 数据安全**: RSA 加密存储敏感信息,保护用户隐私
|
||||
|
||||
### 🛠️ 技术栈
|
||||
|
||||
- **后端框架**: [FastAPI](https://fastapi.tiangolo.com/) - 现代、快速的Python Web框架
|
||||
- **数据库**: [SQLAlchemy](https://sqlalchemy.org/) (异步) - 强大的ORM工具
|
||||
- **HTTP客户端**: 基于[aiohttp](https://aiohttp.readthedocs.io/)的自定义异步客户端
|
||||
- **日志系统**: [richuru](https://github.com/GreyElaina/richuru) - rich + loguru的完美结合
|
||||
- **文档系统**: [VitePress](https://vitepress.dev/) - 现代化的文档生成工具
|
||||
- **后端框架**: [FastAPI](https://fastapi.tiangolo.com/) - 现代、快速的 Python Web 框架
|
||||
- **数据库**: [SQLAlchemy](https://sqlalchemy.org/) (异步) + [aiomysql](https://aiomysql.readthedocs.io/) - 强大的异步 ORM
|
||||
- **HTTP客户端**: [httpx](https://www.python-httpx.org/) - 现代化的异步 HTTP 客户端
|
||||
- **日志系统**: [richuru](https://github.com/GreyElaina/richuru) - rich + loguru 的完美结合
|
||||
- **包管理**: [uv](https://github.com/astral-sh/uv) - 极速 Python 包管理器
|
||||
- **加密工具**: [cryptography](https://cryptography.io/) - RSA 加密支持
|
||||
- **数据解析**: [BeautifulSoup4](https://www.crummy.com/software/BeautifulSoup/) + [lxml](https://lxml.de/) - HTML 解析
|
||||
|
||||
## 📦 快速开始
|
||||
## 📚 API 功能
|
||||
|
||||
### 前置条件
|
||||
### 认证模块 (`/auth`)
|
||||
- **用户注册**: 创建新用户账号
|
||||
- **用户登录**: 获取访问令牌
|
||||
- **身份验证**: 验证当前用户身份和令牌有效性
|
||||
|
||||
- **Python 3.12+**
|
||||
- **PDM**
|
||||
- **MySQL** 数据库
|
||||
### 教务系统 (`/jwc`)
|
||||
- **成绩查询**: 查询学期成绩和历史成绩
|
||||
- **课表查询**: 获取当前学期课程表
|
||||
- **考试安排**: 查看考试时间和地点
|
||||
- **培养方案**: 查询专业培养方案
|
||||
- **学业信息**: 获取学生基本学业信息
|
||||
- **学期信息**: 查询学期列表
|
||||
|
||||
### 安装部署
|
||||
### 爱安财系统 (`/aac`)
|
||||
- **学分查询**: 查询总的爱安财学分
|
||||
- **学分明细**: 获取爱安财学分明细
|
||||
|
||||
```bash
|
||||
# 1. 克隆项目
|
||||
git clone https://github.com/LoveACE-Team/LoveACE.git
|
||||
cd LoveACE
|
||||
|
||||
# 2. 安装依赖
|
||||
pdm install
|
||||
|
||||
# 3. 配置环境
|
||||
python main.py
|
||||
# 首次启动会生成默认配置,随后自行编辑 config.json 填写数据库配置和其他设置
|
||||
|
||||
# 4. 启动服务
|
||||
python main.py
|
||||
```
|
||||
|
||||
服务启动后访问(以实际为准):
|
||||
- **API服务**: http://localhost:8000
|
||||
- **API文档**: http://localhost:8000/docs
|
||||
### 宿舍管理 (`/isim`)
|
||||
- **电费查询**: 查询宿舍剩余电费
|
||||
- **房间信息**: 获取宿舍房间详细信息
|
||||
|
||||
## 📚 文档
|
||||
|
||||
### 在线文档
|
||||
访问我们的在线文档获取完整指南:**https://LoveACE-team.github.io/LoveACE**
|
||||
### API 文档
|
||||
启动服务后,在 debug 模式下访问:
|
||||
- **Swagger UI**: http://localhost:4500/docs
|
||||
- **ReDoc**: http://localhost:4500/redoc
|
||||
- **OpenAPI Schema**: http://localhost:4500/openapi.json
|
||||
|
||||
### 文档内容
|
||||
- **📖 快速开始**: 安装和基本使用指南
|
||||
- **⚙️ 配置指南**: 详细的配置选项说明
|
||||
- **🚀 部署指南**: 生产环境部署教程
|
||||
- **📡 API文档**: 交互式API文档 (基于OpenAPI)
|
||||
- **🤝 贡献指南**: 如何参与项目开发
|
||||
- **⚖️ 免责声明**: 使用须知和免责条款
|
||||
|
||||
### 本地构建文档
|
||||
|
||||
```bash
|
||||
# 安装文档依赖
|
||||
yarn install
|
||||
|
||||
# 启动开发服务器
|
||||
yarn docs:dev
|
||||
|
||||
# 构建静态文档
|
||||
yarn docs:build
|
||||
```
|
||||
> **注意**: 生产环境下,文档接口默认关闭,需在配置文件中设置 `app.debug = true` 启用。
|
||||
|
||||
## 🏗️ 项目结构
|
||||
|
||||
```
|
||||
LoveAC/
|
||||
├── 📁 database/ # 数据库相关代码
|
||||
│ ├── creator.py # 数据库会话管理
|
||||
│ ├── base.py # 基础模型定义
|
||||
│ └── user.py # 用户数据模型
|
||||
├── 📁 provider/ # 服务提供者
|
||||
│ ├── aufe/ # 安徽财经大学服务
|
||||
│ │ ├── client.py # 基础HTTP客户端
|
||||
│ │ ├── jwc/ # 教务系统集成
|
||||
│ │ └── aac/ # 爱安财系统集成
|
||||
│ └── loveac/ # 内部服务
|
||||
├── 📁 router/ # API路由定义
|
||||
│ ├── common_model.py # 通用响应模型
|
||||
│ ├── invite/ # 邀请码相关路由
|
||||
│ ├── login/ # 登录认证路由
|
||||
│ ├── jwc/ # 教务系统路由
|
||||
│ └── aac/ # 爱安财系统路由
|
||||
├── 📁 utils/ # 工具函数
|
||||
├── 📁 config/ # 配置管理
|
||||
├── 📁 docs/ # 项目文档
|
||||
├── 📄 main.py # 应用入口文件
|
||||
├── 📄 config.json # 配置文件
|
||||
├── 📄 openapi.json # OpenAPI规范文件(FastAPI生成)
|
||||
└── 📄 pyproject.toml # 项目依赖配置
|
||||
LoveACE-V2/
|
||||
├── 📁 loveace/ # 主应用目录
|
||||
│ ├── 📁 config/ # 配置管理
|
||||
│ │ ├── logger.py # 日志配置
|
||||
│ │ ├── manager.py # 配置管理器
|
||||
│ │ └── settings.py # 配置模型
|
||||
│ ├── 📁 database/ # 数据库相关代码
|
||||
│ │ ├── creator.py # 数据库会话管理
|
||||
│ │ ├── base/ # 基础模型定义
|
||||
│ │ ├── auth/ # 认证相关模型 (用户、令牌、登录、注册)
|
||||
│ │ ├── aac/ # 爱安财积分票据模型
|
||||
│ │ └── isim/ # 宿舍管理模型
|
||||
│ ├── 📁 router/ # API路由定义
|
||||
│ │ ├── dependencies/ # 路由依赖项 (认证、日志等)
|
||||
│ │ ├── endpoint/ # API端点
|
||||
│ │ │ ├── auth/ # 认证路由 (登录、注册、authme)
|
||||
│ │ │ ├── jwc/ # 教务系统路由 (成绩、课表、考试、培养方案等)
|
||||
│ │ │ ├── aac/ # 爱安财系统路由 (积分查询)
|
||||
│ │ │ └── isim/ # 宿舍管理路由 (电费、房间信息)
|
||||
│ │ └── schemas/ # 通用响应模型和错误处理
|
||||
│ ├── 📁 service/ # 服务层
|
||||
│ │ ├── model/ # 服务模型
|
||||
│ │ └── remote/ # 远程服务
|
||||
│ │ └── aufe/ # 安徽财经大学服务集成
|
||||
│ ├── 📁 middleware/ # 中间件
|
||||
│ │ └── process_time.py # 请求处理时间中间件
|
||||
│ └── 📁 utils/ # 工具函数
|
||||
│ ├── richuru_hook.py # Rich + Loguru 集成
|
||||
│ └── rsa.py # RSA 加密工具
|
||||
├── 📁 data/ # 数据文件
|
||||
│ ├── isim_rooms.json # 宿舍房间数据
|
||||
│ └── keys/ # RSA密钥对
|
||||
├── 📁 logs/ # 日志文件目录
|
||||
├── 📄 main.py # 应用入口文件
|
||||
├── 📄 config.json # 配置文件
|
||||
├── 📄 pyproject.toml # 项目依赖配置 (uv)
|
||||
├── 📄 uv.lock # 依赖锁定文件
|
||||
└── 📄 README.md # 项目说明文档
|
||||
```
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### 数据库配置
|
||||
```json
|
||||
{
|
||||
"database": {
|
||||
"url": "mysql+aiomysql://username:password@host:port/database",
|
||||
"pool_size": 10,
|
||||
"max_overflow": 20
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 应用配置
|
||||
```json
|
||||
{
|
||||
"app": {
|
||||
"host": "0.0.0.0",
|
||||
"port": 8000,
|
||||
"debug": false,
|
||||
"cors_allow_origins": ["*"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
完整配置选项请参考 [配置指南](https://LoveACE-team.github.io/LoveACE/config)。
|
||||
|
||||
## 🚀 部署
|
||||
|
||||
详细部署指南请参考 [部署文档](https://LoveACE-team.github.io/LoveACE/deploy)。
|
||||
|
||||
## 🤝 贡献
|
||||
|
||||
我们欢迎所有形式的贡献!在参与之前,请阅读我们的 [贡献指南](https://LoveACE-team.github.io/LoveACE/contributing)。
|
||||
我们欢迎所有形式的贡献!
|
||||
|
||||
### 贡献方式
|
||||
|
||||
@@ -162,26 +118,101 @@ LoveAC/
|
||||
- 📝 **代码贡献**: 提交Pull Request
|
||||
- 📖 **文档改进**: 帮助完善文档
|
||||
|
||||
### 开发指南
|
||||
|
||||
```bash
|
||||
# 克隆项目
|
||||
git clone https://github.com/LoveACE-Team/LoveACE.git
|
||||
cd LoveACE
|
||||
|
||||
# 安装开发依赖
|
||||
uv sync --group dev
|
||||
|
||||
# 代码格式化
|
||||
black .
|
||||
isort .
|
||||
|
||||
# 代码检查
|
||||
ruff check .
|
||||
```
|
||||
|
||||
## ⚖️ 免责声明
|
||||
|
||||
**重要提醒**: 本软件仅供学习和个人使用,请在使用前仔细阅读 [免责声明](https://LoveACE-team.github.io/LoveACE/disclaimer)。
|
||||
**重要提醒**: 本软件仅供学习、研究和个人非商业用途使用。
|
||||
|
||||
- ✅ 本软件为教育目的开发的开源项目
|
||||
- ⚠️ 使用时请遵守学校相关规定和法律法规
|
||||
- 🛡️ 请妥善保管个人账户信息
|
||||
- ❌ 不得用于任何商业用途
|
||||
### 使用条款
|
||||
|
||||
- ✅ **开源性质**: 本软件为教育目的开发的开源项目,遵循 MIT 许可证
|
||||
- 📚 **用途限制**: 仅限于学习交流、技术研究等非商业用途
|
||||
- ⚠️ **合规使用**: 使用时请严格遵守学校相关规定、服务条款及您所在地的法律法规
|
||||
- 🛡️ **账户安全**: 请妥善保管个人账户信息,不要与他人共享,避免账号泄露
|
||||
- 🔒 **隐私保护**: 本软件不会主动收集、存储或泄露用户的个人信息
|
||||
|
||||
### 商业使用禁止
|
||||
|
||||
- ❌ **严禁商用**: 本软件不得用于任何形式的商业用途,包括但不限于:
|
||||
- 收费服务或产品
|
||||
- 商业广告和推广
|
||||
- 未经授权的数据采集和销售
|
||||
- ⚠️ **风险自负**: 任何未经授权的商业使用所产生的法律责任、经济损失、侵权纠纷及其他风险,均由商业使用者自行承担,与本软件作者及所有贡献者无关
|
||||
|
||||
### 免责条款
|
||||
|
||||
- 🚫 **后果免责**: 开发者及贡献者不对使用本软件造成的任何直接或间接后果负责,包括但不限于:
|
||||
- 账号封禁或处罚
|
||||
- 数据丢失或泄露
|
||||
- 服务中断或错误
|
||||
- 学业或经济损失
|
||||
- 🔧 **无担保**: 本软件按"现状"提供,不提供任何明示或暗示的担保,包括但不限于适销性、特定用途适用性的担保
|
||||
- 📋 **自行判断**: 用户应自行判断使用本软件的风险,并承担使用本软件的全部责任
|
||||
|
||||
### 接受条款
|
||||
|
||||
- 📜 **视为同意**: 下载、安装、使用本软件或对本软件进行任何形式的操作,即表示您已充分阅读、理解并同意接受本免责声明的所有条款
|
||||
- ⛔ **不同意则停止**: 如果您不同意本免责声明的任何条款,请立即停止使用本软件并删除所有相关文件
|
||||
|
||||
## 📞 支持与联系
|
||||
|
||||
- 📧 **邮箱**: [sibuxiang@proton.me](mailto:sibuxiang@proton.me)
|
||||
- 🐛 **Bug报告**: [GitHub Issues](https://github.com/LoveACE-Team/LoveACE/issues)
|
||||
- 💬 **讨论交流**: [GitHub Discussions](https://github.com/LoveACE-Team/LoveACE/discussions)
|
||||
- 📖 **在线文档**: [项目文档](https://LoveACE-team.github.io/LoveACE)
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 [MIT许可证](LICENSE) 开源。
|
||||
|
||||
**重要商业使用限制**: 本软件不得用于商业用途。任何未经授权的商业使用所产生的一切法律责任、经济损失及其他风险,均由商业使用者自行承担,与本软件作者及贡献者无关。
|
||||
|
||||
```bash
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 LoveACE Team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
COMMERCIAL USE RESTRICTION:
|
||||
This software is NOT intended for commercial use. Any unauthorized commercial
|
||||
use of this software is strictly prohibited. All legal liabilities, financial
|
||||
losses, and other risks arising from unauthorized commercial use shall be
|
||||
borne solely by the commercial user and are not the responsibility of the
|
||||
software authors or contributors.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
```
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
|
||||
Reference in New Issue
Block a user