3.2 KiB
3.2 KiB
项目交付状态一页纸
这份只看当前状态,不记录开发历史。更详细的背景和概念看 项目总览.md。
项目是什么
这是 SimCAE 自动升级、授权、版本发布和崩溃报告服务的一套客户端 SDK + 服务端后台。
update-client/ Launcher / Updater / Bootstrap、SDK 打包、客户端接入文档
update-server/ FastAPI 后端、Vue 管理后台、Docker 离线部署包
当前可以交付什么
- Windows/Linux 客户端升级运行时:
Launcher、Updater、Bootstrap。 - 客户端 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。
- 发布任务后台化:上传完成后,服务端后台继续处理,页面轮询任务状态。
- 崩溃报告上传、查询、文件下载和符号包上传接口。
当前要特别注意
keys/manifest_private_key.pem必须在真实服务端部署包里,但不能进 Git、不能给客户端、不能公开传播。- 客户端 SDK 里的
manifest_public_key.pem必须和服务端私钥配套。 config/server_config.json会编进客户端程序;改服务端地址后必须重新编译 Launcher / Updater / Bootstrap。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。