历史文档/更多资料
长文档建议按当前分组逐页阅读;右侧辅助栏会保留当前位置和快速操作。
更多
开发指南、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
# 2. 安装客户端依赖(客户端位于 apps/client/)
cd apps/client
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目录结构速览
Mini-HBUT/(仓库根)
├── apps/client/ # 客户端(Vue 前端 + Tauri/Capacitor)
│ ├── 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新增功能流程
- 在
apps/client/src-tauri/src/(如 modules、http_client)新增 Rust 业务逻辑。 - 在
apps/client/src-tauri/src/lib.rs中注册 Tauri Command。 - 前端通过
axios_adapter.js新增 /v2 API 映射。 - 在
apps/client/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 固定监听本机;除健康检查外,外部程序必须配置并发送 HBUT_BRIDGE_TOKEN。
常用接口
GET /health — 检查 Bridge 是否在线
POST /login — 触发登录
POST /sync_grades — 获取最新成绩
POST /sync_schedule — 获取课表
POST /fetch_exams — 获取考试安排
POST /fetch_ranking — 获取绩点排名NoneBot 调用示例
import os
import httpx
from nonebot import on_command
cmd = on_command("成绩")
token = os.environ["HBUT_BRIDGE_TOKEN"]
@cmd.handle()
async def handle():
headers = {"Authorization": f"Bearer {token}"}
async with httpx.AsyncClient() as client:
resp = await client.post(
"http://127.0.0.1:4399/sync_grades",
headers=headers,
)
resp.raise_for_status()
data = resp.json()
await cmd.finish(f"课程数: {len(data.get('data', {}).get('grades', []))}")cURL 调用示例
# 检查服务状态
curl http://127.0.0.1:4399/health
# 受保护接口:应用启动前需配置同值 HBUT_BRIDGE_TOKEN
curl -X POST http://127.0.0.1:4399/sync_grades -H "Authorization: Bearer $HBUT_BRIDGE_TOKEN"
curl -X POST http://127.0.0.1:4399/sync_schedule -H "Authorization: Bearer $HBUT_BRIDGE_TOKEN"安全与限频
- Bridge 固定监听 127.0.0.1,不接受局域网或公网绑定。
- 除 /health 和只读嵌入资源外,脚本必须携带 HBUT_BRIDGE_TOKEN。
- 缓存 API 还会按接口要求校验 JWT scope。
- 高频任务建议加本地缓存,避免触发登录频率限制。
参与贡献
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 提交过代码、报告过问题、提出过建议的贡献者们。
推荐阅读路径
相关文档
当前页面读完后,可以按下面的交叉链接继续。用户文档、开发者文档、故障排查、参考资料和历史文档会互相补充。