跳到正文
历史文档/更多资料

长文档建议按当前分组逐页阅读;右侧辅助栏会保留当前位置和快速操作。

更多

开发指南、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

新增功能流程

  1. src-tauri/src/(如 modules、http_client)新增 Rust 业务逻辑。
  2. src-tauri/src/lib.rs 中注册 Tauri Command。
  3. 前端通过 axios_adapter.js 新增 /v2 API 映射。
  4. src/components/ 中添加或修改 Vue 组件。
  5. 补充缓存策略、降级逻辑和错误处理路径。

质量与安全规范

代码安全
• 禁止在日志中输出密码、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 报告、功能建议,还是代码贡献。

如何贡献

  1. Fork 仓库:在 GitHub 上 Fork Mini-HBUT 仓库到你的账号。
  2. 创建分支:基于 main 分支创建你的功能分支(feature/你的功能名)。
  3. 开发测试:完成开发后确保功能正常运行,并通过基本测试。
  4. 提交 PR:向主仓库的 main 分支发起 Pull Request。
  5. 代码审查:等待维护者审查,可能需要根据反馈修改。

贡献方式

🐛
报告 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 提交过代码、报告过问题、提出过建议的贡献者们。

推荐阅读路径

相关文档

当前页面读完后,可以按下面的交叉链接继续。用户文档、开发者文档、故障排查、参考资料和历史文档会互相补充。