历史文档/更多资料
长文档建议按当前分组逐页阅读;右侧辅助栏会保留当前位置和快速操作。
更多
开发指南、NoneBot 集成、参与贡献、开源协议和相关链接。
开发指南
环境准备
- Node.js 20+ 与 npm — 前端构建和开发服务器。
- Rust stable(建议 1.78+) — Tauri 2.x 桌面后端需要 Rust 编译环境。
- Android SDK / NDK — 构建 Android 版本时需要(通过 Android Studio 安装最便捷)。
- macOS + Xcode 15+ — 构建 iOS 版本时需要。
- Git — 版本管理。
快速开始
# 1. 克隆仓库
git clone https://github.com/RollRoll520/Mini-HBUT.git
cd Mini-HBUT/tauri-app
# 2. 安装前端依赖
npm install
# 3. 启动开发模式(前端 + Tauri 桌面端)
npm run tauri dev
# 4. 仅启动前端开发(用于 Web 模式调试)
npm run dev
# 5. 构建桌面端
npm run tauri build
# 6. 构建 Android 端
npm run tauri android build
# 7. 构建 iOS 端(macOS only)
npm run tauri ios build目录结构速览
tauri-app/
├── src/ # Vue 前端
│ ├── components/ # 业务组件(30+)
│ ├── utils/ # 工具函数
│ │ └── axios_adapter.js # HTTP 适配层
│ ├── platform/ # 平台桥接
│ └── config/ # UI 配置
├── src-tauri/
│ └── src/
│ ├── lib.rs # Tauri Commands 入口
│ ├── http_client/ # 网络请求模块
│ ├── http_server.rs # HTTP Bridge
│ └── db.rs # SQLite
├── android/ # Capacitor Android
├── ios/ # Capacitor iOS
└── cloudflare/worker/ # 云同步 Worker新增功能流程
- 在
src-tauri/src/(如 modules、http_client)新增 Rust 业务逻辑。 - 在
src-tauri/src/lib.rs中注册 Tauri Command。 - 前端通过
axios_adapter.js新增 /v2 API 映射。 - 在
src/components/中添加或修改 Vue 组件。 - 补充缓存策略、降级逻辑和错误处理路径。
质量与安全规范
代码安全
• 禁止在日志中输出密码、token、cookie。
• Rust 端避免 unwrap / expect,统一返回 Result。
• 请求失败必须给出可读错误信息。
接口规范
• Bridge 默认仅监听本地回环(127.0.0.1)。
• 高频接口需要限频与缓存。
• 新增接口必须给出输入输出示例。
NoneBot 集成与自动化
Mini-HBUT 的 HTTP Bridge(127.0.0.1:4399)可以被 NoneBot、脚本或其他程序调用, 实现自动通知、定时查询等自动化能力。
接入方式
Bridge 地址
http://127.0.0.1:4399
响应格式
ApiResponse (success / data / error / time)
Bridge 仅监听本机,若需跨设备访问请通过安全通道转发并增加鉴权。
常用接口
GET /health — 检查 Bridge 是否在线
POST /login — 触发登录
POST /fetch_grades — 获取最新成绩
POST /fetch_schedule — 获取课表
POST /fetch_exams — 获取考试安排
POST /fetch_ranking — 获取绩点排名NoneBot 调用示例
import httpx
from nonebot import on_command
cmd = on_command("成绩")
@cmd.handle()
async def handle():
async with httpx.AsyncClient() as client:
resp = await client.get("http://127.0.0.1:4399/fetch_grades")
if resp.status_code == 200:
data = resp.json()
await cmd.finish(f"GPA: {data.get('data', {}).get('gpa', '-')}")cURL 调用示例
# 检查服务状态
curl http://127.0.0.1:4399/health
# 获取成绩
curl -X POST http://127.0.0.1:4399/fetch_grades
# 获取课表
curl -X POST http://127.0.0.1:4399/fetch_schedule安全与限频
- Bridge 端口仅监听 127.0.0.1,外网访问需自行转发。
- 涉及缓存读取的接口需要 JWT 或本地信任策略。
- 高频任务建议加本地缓存,避免触发登录频率限制。
参与贡献
Mini-HBUT 是开源项目,欢迎任何形式的贡献!无论是提交 Bug 报告、功能建议,还是代码贡献。
如何贡献
- Fork 仓库:在 GitHub 上 Fork Mini-HBUT 仓库到你的账号。
- 创建分支:基于
main分支创建你的功能分支(feature/你的功能名)。 - 开发测试:完成开发后确保功能正常运行,并通过基本测试。
- 提交 PR:向主仓库的
main分支发起 Pull Request。 - 代码审查:等待维护者审查,可能需要根据反馈修改。
贡献方式
🐛
报告 Bug
在 GitHub Issues 中提交详细的问题描述和复现步骤
💡
功能建议
在 Issues 中提出功能请求,描述需求场景
📖
完善文档
帮助改进文档、翻译或修正错误
提交规范
# Commit Message 格式
<type>(<scope>): <subject>
# 示例
feat(grade): 添加成绩趋势图表
fix(login): 修复验证码识别失败重试
docs(readme): 更新安装说明
style(schedule): 优化课表卡片布局
refactor(api): 重构缓存管理模块开源协议
GPL v3GNU General Public License v3.0
简单来说:
- 可以:自由使用、修改、分发本软件。
- 要求:修改后的衍生作品也需要使用 GPL v3 协议发布源代码。
- 禁止:将本软件闭源后用于商业分发。
这意味着你可以自由使用 Mini-HBUT 的代码来学习和开发,但如果你基于它创建了新项目并分发, 你需要以相同的开源协议发布你的源代码。
相关链接
致谢
Mini-HBUT 的开发离不开以下开源项目和服务:
Vue 3
Tauri 2
Capacitor
Vant 4
Rust
Tokio
reqwest
scraper
Vite
Pinia
Cloudflare Workers
jsDelivr
感谢所有为 Mini-HBUT 提交过代码、报告过问题、提出过建议的贡献者们。
推荐阅读路径
相关文档
当前页面读完后,可以按下面的交叉链接继续。用户文档、开发者文档、故障排查、参考资料和历史文档会互相补充。