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

74 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目交付状态一页纸
这份只看当前状态,不记录开发历史。更详细的背景和概念看 `项目总览.md`
## 项目是什么
这是 SimCAE 自动升级、授权、版本发布和崩溃报告服务的一套客户端 SDK + 服务端后台。
```text
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。
- 发布任务后台化:上传完成后,服务端后台继续处理,页面轮询任务状态。
- 崩溃报告上传、查询、文件下载和符号包上传接口。
- 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
```powershell
cd update-client
.\scripts\package-sdk.ps1 -SourceDir .\out\bin\Release -OutputDir .\dist\UpdateClientSDK -ZipFile .\dist\UpdateClientSDK.zip -SdkVersion 0.1.0
```
服务端 Docker 离线包:
```bash
cd update-server
bash ./scripts/package-offline-server.sh --version 0.1.0 --output-dir ./dist/SimCAEServerDockerPackage
```
服务端自动化测试:
```bash
cd update-server
./venv/bin/python3 -m pytest -q
```
## 还不算完成的事情
- 真实 Linux 版 SimCAE 主程序还没有交付联调。
- 公网生产级安全加固还未全部自动化,例如登录限流、HTTPS 自动化、默认密钥强制替换。
- 数据库迁移仍是 `tables.sql` + 手写兼容逻辑,长期维护可考虑 Alembic。