接口文档 · 在线升级(教师端)

满足根 CLAUDE.md #3/#5。对接第三方版本平台见 ../版本管理接口对接文档.md。 Base URL:dev http://localhost:8000;生产 https://teacher-api.weizhiqingtu.com。日志分类:在线升级

检查更新 GET /api/version/check(公开口)

后端按 platform→包名 映射,代理调第三方公开口 GET {VERSION_API_BASE}/app/version?app=<pkg>,归一化返回。单一来源便于换平台、记日志、避免前端 CORS。第三方不可用或应用未注册时优雅降级为 found:false

Query:

参数 必填 取值 映射包名(默认)
platform android com.zhihuijiaoyu.teacher
mac com.zhihuijiaoyu.teacher.mac
win com.zhihuijiaoyu.teacher.win

响应 dataUpdateInfo):

{
  "found": true,
  "platform": "android",
  "packageName": "com.zhihuijiaoyu.teacher",
  "versionName": "0.2.0",
  "versionCode": 200,
  "downloadUrl": "https://aihtml.qimingdaren.com/.../app-apk/xxx.apk",
  "fileSize": 60817408,
  "changelog": "修复若干问题",
  "minSupportedCode": null,
  "forceUpdate": false
}

无更新 / 未注册应用:{ "found": false, "platform": "android", "packageName": "..." }

curl "http://localhost:8000/api/version/check?platform=android"

错误码:422 platform 非 android/mac/win。

客户端逻辑

  • 桌面(Electron):ProfilePopover →「检查更新」→ window.desktop.checkUpdate(apiBase)(主进程比对 app.getVersion() semver)→ 有更新弹 UpdateDialog(更新日志 + 进度)→ 下载 dmg/exe 到临时目录 → shell.openPath 打开安装。forceUpdate 时不可关闭弹窗。
  • 移动(Expo):MeScreen →「检查更新」→ checkUpdate('android') 比对 app.json version → 有更新 Alert 显示更新日志 → 确认用 Linking.openURL(downloadUrl) 系统浏览器下载 APK(用户点开安装)。forceUpdate 时无「稍后」。
  • Web:不涉及升级(始终最新),不展示入口。

发版(写入第三方平台)

../构建打包指南.md「发版到版本平台」与 scripts/publish-version.mjs(需平台账号,凭据走 env)。