Files
update-system/项目交付状态一页纸.md

3.5 KiB
Raw Permalink Blame History

项目交付状态一页纸

这份只看当前状态,不记录开发历史。更详细的背景和概念看 项目总览.md

项目是什么

这是 SimCAE 自动升级、授权、版本发布和崩溃报告服务的一套客户端 SDK + 服务端后台。

update-client/   Launcher / Updater / Bootstrap、SDK 打包、客户端接入文档
update-server/   FastAPI 后端、Vue 管理后台、Docker 离线部署包

当前可以交付什么

  • Windows/Linux 客户端升级运行时:LauncherUpdaterBootstrap
  • 客户端 SDK 包:包含运行程序、配置模板、接入文档、最终客户端打包脚本。
  • 服务端 Docker 离线部署包:包含 API 镜像、管理后台、MinIO、compose 文件、配置模板和 Manifest 签名密钥。
  • 管理后台:基于 pure-admin-thin / Vue3 / Element Plus / TypeScript / Vite。
  • 后端:基于 FastAPI,已经按 routes / services / repositories / schemas / core 分层,并支持 JWT / RBAC。
  • 后端自动化测试:pytest,覆盖登录/JWT、License/设备、更新检查、发布和崩溃报告核心流程。

已完成的核心功能

  • 应用、渠道、版本发布、策略管理。
  • License 授权、设备登记、设备数限制。
  • Manifest 生成、SHA-256 文件校验、私钥签名、公钥验签。
  • 客户端检查更新、下载、安装、健康检查、失败回滚。
  • 升级日志、下载日志、管理员审计日志。
  • 发布清单 发布清单.txt / release_manifest.txt,支持选择发布哪些文件、排除哪些文件。
  • 发布压缩包支持 zip、tar.gz、tgz、tar.bz2、tbz2、rar。
  • 发布任务后台化:上传完成后,服务端后台继续处理,页面轮询任务状态。
  • 崩溃报告上传、查询、文件下载和符号包上传接口。
  • Git 标签清单:管理后台策略可控制 Launcher 是否生成 tags.txt;服务端用 GITEA_TOKEN 拉取仓库 tags,客户端永远拿不到 token,只拿整理后的文本。

当前要特别注意

  • keys/manifest_private_key.pem 必须在真实服务端部署包里,但不能进 Git、不能给客户端、不能公开传播。
  • 客户端 SDK 里的 manifest_public_key.pem 必须和服务端私钥配套。
  • config/server_config.json 会编进客户端程序;改服务端地址后必须重新编译 Launcher / Updater / Bootstrap。
  • GITEA_TOKEN 只允许放在服务端 .env,不要写进客户端配置、不要给 Launcher、不要提交 Git。
  • app_config.json 首次启动会导入当前用户配置区,非空配置导入后会清空为 {}
  • Manifest 缓存和设备身份等运行态文件默认在当前用户数据目录,不再默认写安装目录。
  • 公网部署前仍建议改默认 token/password、配置 HTTPS、限制 MinIO 控制台暴露范围、收紧 CORS。

打包入口

客户端 SDK

cd update-client
.\scripts\package-sdk.ps1 -SourceDir .\out\bin\Release -OutputDir .\dist\UpdateClientSDK -ZipFile .\dist\UpdateClientSDK.zip -SdkVersion 0.1.0

服务端 Docker 离线包:

cd update-server
bash ./scripts/package-offline-server.sh --version 0.1.0 --output-dir ./dist/SimCAEServerDockerPackage

服务端自动化测试:

cd update-server
./venv/bin/python3 -m pytest -q

还不算完成的事情

  • 真实 Linux 版 SimCAE 主程序还没有交付联调。
  • 公网生产级安全加固还未全部自动化,例如登录限流、HTTPS 自动化、默认密钥强制替换。
  • 数据库迁移仍是 tables.sql + 手写兼容逻辑,长期维护可考虑 Alembic。