WARNING
本页由 AI 工具参考代码编写,部分内容未经过人工审核,内容仅供参考。如果无法解决问题或需要协助部署,可邮箱联系:kuohu@getastra.cn
User Backend 用户端后端
Go 后端 API,负责课表数据存储、规则计算、WebSocket 推送等核心功能。
技术栈
- Go 1.26+ + Gin + GORM
- 支持 MySQL 和 SQLite(通过配置切换)
项目结构
代码组织
接口约定
- 管理端前缀:
/web/* - 客户端:无前缀
- 认证:JWT(
Authorization: Bearer <token>),写操作需密码二次确认 - 响应格式:
status/message/data或error/detail - 参数校验错误 →
400,资源缺失 →404,内部异常 →500
认证与鉴权
- JWT:HS256,签名密钥为
secret.token,过期 24 小时;登录接口/web/auth/login - 写操作密码确认:
X-Verify-Password头(或请求体password),校验的是用户密码,不是secret.token - 内部服务认证:
X-Internal-Secret头(sys-backend 等调用)
数据写入策略
- 配置类写入使用 upsert(
ON CONFLICT ... UPDATE ALL) - 多表操作必须使用事务
- SaaS 版本所有表含
namespace字段
课表规则引擎
4 类规则按优先级叠加:COMPENSATION → TIMETABLE → SCHEDULE → ALL。支持多级作用域:ALL → school → school/grade → school/grade/class。
本地开发环境搭建
- 安装 Go 1.26+ 与 Git
- 克隆仓库并进入目录:
- 生成配置文件:
- 按需修改
config.toml:- 开发建议使用 SQLite:
db.type = "sqlite"、db.path = "./data/dev.db"(无需安装数据库) apikey.apihost为必填项,即使不开发天气功能也要保留(可填占位域名)- 开发 WebSocket 功能时将
run.serverless设为false
- 开发建议使用 SQLite:
- 启动:
启动成功后监听 :9000(可用 curl http://localhost:9000/web/health 验证)。
注意:后端不会自动创建管理员账号。本地开发需要先通过用户管理接口(或配合系统端)创建一个
admin用户才能登录管理端。
常用命令
OpenAPI 文档
接口规范见仓库根目录 AstraServerGo.openapi.json。修改或新增 API 时必须同步更新该文件。