欢迎来到OpenJWC教务通知系统的服务后端!
本项目是OpenJWC教务通知系统的服务后端部分。OpenJWC是一个完整的教务通知系统,包括移动客户端、私有部署服务后端与控制面板
- 定期爬虫:定时运行爬虫包装器爬取教务通知
- 数据管理:LanceDB 管理资讯主数据,SQLite 管理用户态与系统设置
- API服务:接受和处理用户请求
- AI对话:调用LLM API响应用户chat请求
- RAG知识库:使用RAG技术将教务资讯用作LLM的知识库
- 用户功能:用户可以获取资讯列表、与chat交流,并投稿资讯
- 管理功能:管理员通过控制面板进行配置和用户管理
- 容器化部署:服务通过Docker容器运行 (docker相关的配置不在这里)
OpenJWC-WebAPI/
├── main.py # FastAPI应用主入口
├── app/
│ ├── api/v1/ # API路由
│ │ ├── client/ # 客户端API
│ │ └── admin/ # 管理员API
│ ├── core/ # 核心配置
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ └── utils/ # 工具函数
├── data/ # 数据目录
├── bin/ # 二进制文件目录
├── logs/ # 日志目录
└── pyproject.toml # 项目配置
- 后端框架:FastAPI >= 0.135.1
- 数据库:LanceDB(资讯主存储)+ SQLite(用户态/系统配置)
- AI服务:DeepSeek API + 智谱AI API
- 认证:JWT + bcrypt加密
- 异步HTTP:httpx + uvicorn
- 日志:结构化日志系统
- 错误处理:Tenacity重试机制
- Python >= 3.12
- uv 包管理器
- 项目根目录提供示例配置文件 .env.example
- 生产环境请至少设置以下变量:
OPENJWC_SECRET_KEY:JWT 签名密钥OPENJWC_JWT_ALGORITHM:JWT 算法(默认 HS256)LANCE_DB_PATH:LanceDB 数据目录(可选,默认 data/lancedb)
-
克隆项目
git clone <repository-url> cd OpenJWC-webapi
-
安装uv包管理器
# 如果还没有安装uv curl -LsSf https://astral.sh/uv/install.sh | sh # 添加到PATH source ~/.bashrc # 或者重新打开终端
-
安装项目依赖
uv pip install -e . # 默认安装(云端 embedding 路径)
如需本地 embedding(sentence-transformers/torch),安装 local extra:
uv pip install -e ".[local]" -
初始化数据库
uv run python main.py # 使用uv运行,会自动初始化数据库
# 开发模式运行
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# 生产模式运行
uvicorn main:app --host 0.0.0.0 --port 8000启动服务后,访问以下地址查看API文档
- Swagger UI:http://localhost:8000/docs
- ReDoc:http://localhost:8000/redoc
news_id- 资讯ID(主键)title- 标题publish_date- 发布时间url- 详情链接content_text- 正文tags- 标签
key_string- API密钥owner_name- 所有者名称is_active- 是否激活max_devices- 最大设备数bound_devices- 绑定设备
系统设置存储在system_settings中,主要配置项包括
{
"deepseek_api_key": "your_deepseek_api_key",
"zhipu_api_key": "your_zhipu_api_key",
"crawler_interval_minutes": 480,
"crawler_days_gap": 200,
"search_max_day_diff": 60,
"prompt_debug": false,
"notices_auth": false,
"submission_max_length": 10000,
"system_prompt": "你的系统提示词"
}config.py- 系统配置和常量定义security.py- 安全相关功能
client/- 客户端API实现notices.py- 通知相关APIchat.py- 对话功能APIsubmission.py- 投稿功能APImotto.py- 格言功能APIdevice.py- 设备管理APIregister.py- 注册API
admin/- 管理员API实现auth.py- 认证APIsettings.py- 设置管理APImonitor.py- 监控APIapikeys.py- API密钥管理logs.py- 日志管理APInotices.py- 通知管理APIsubmission.py- 投稿管理API
sql_db_service.py- 数据库服务vector_db_service.py- 向量数据库服务ai_service.py- AI服务prompt_engine.py- 提示词引擎submission_service.py- 投稿服务motto_service.py- 格言服务
logging_manager.py- 日志管理openjwc_cli.py- 命令行工具ping_check.py- 网络检查sysinfo_monitor.py- 系统监控
- 使用异步编程模式
- 遵循PEP 8代码规范
- 使用类型注解
- 编写详细的文档字符串
- 使用反向代理(如Nginx)
- 配置SSL证书
- 设置环境变量
- 配置日志轮转
- 监控服务状态
- 结构化日志输出
- 不同级别的日志
- 日志文件自动轮转
- API响应时间
- 错误率统计
- 数据库查询性能
- AI服务调用状态
-
AI服务连接失败
- 检查网络连接
- 验证API密钥
- 查看日志文件
-
数据库连接错误
- 检查数据库文件权限
- 确认数据目录存在
-
爬虫功能异常
- 检查爬虫二进制文件
- 验证配置参数
本项目采用MIT许可证,详见LICENSE文件
如有问题或建议,欢迎提交Issue或Pull Request