服务端文档入口
==============

你第一次打开 update-server/Docs 时，先看这一份。这里告诉你每份文档是干什么的，以及部署、测试、维护分别该看哪一份。

文档阅读顺序
============

1. 01-服务端Docker打包部署指南.md
   适合部署和运维。说明 Docker 离线包里有什么、怎么打包、怎么部署、.env 每个字段怎么填、怎么查看日志和备份数据。

2. 02-崩溃报告接口联调指南.md
   适合测试人员、客户端崩溃上报接入人员。说明 CRASH_REPORT_TOKEN、CRASH_SYMBOL_TOKEN、CRASH_ADMIN_TOKEN 分别怎么用，并给出可直接复制的 curl 示例。

3. 03-后端工程化结构说明.md
   适合后端维护人员。说明当前 FastAPI 后端如何按 routes/services/repositories/schemas 分层，以及后续工程化方向。

常用任务入口
============

如果你已经拿到 `SimCAEServerDockerPackage.tar.gz`，直接看：

```text
01-服务端Docker打包部署指南.md 的“三、使用者：最小部署流程”
```

如果你要重新生成 Docker 离线部署包，执行：

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

常用源码入口：

- main.py：服务启动、数据库初始化、MinIO 初始化、全局客户端鉴权。
- app/api/routes/：管理后台、客户端更新、崩溃报告等 HTTP 路由。
- app/services/：业务逻辑。
- app/repositories/：SQLite 数据库读写。
- admin-ui/：新版管理后台前端源码。
- scripts/package-offline-server.sh：生成服务端 Docker 离线部署包。

本地自动化测试：

```bash
cd update-server
./venv/bin/pip install -r requirements-dev.txt
./venv/bin/python3 -m pytest -q
```

当前测试会自动创建临时数据库、临时签名密钥和临时存储目录，不会改动本地 `mini.db`、`.env` 或真实上传文件。覆盖范围包括管理员登录/JWT、应用创建、License 创建设备登记、更新检查、发布入库/文件存储回退、崩溃报告上传幂等和管理员查询。

本地源码启动：

```bash
cd update-server
./venv/bin/python3 main.py
```
