feat: 添加 Analytics 分析功能(行为追踪、错误码、协议更新)
This commit is contained in:
@@ -28,6 +28,10 @@ deploy/
|
||||
├── build-prod-image.sh
|
||||
├── docker-compose.prod.yml
|
||||
├── .env.prod.example
|
||||
├── data/
|
||||
│ └── analytics/
|
||||
├── static/
|
||||
│ └── releases/
|
||||
└── README.md
|
||||
```
|
||||
|
||||
@@ -80,6 +84,18 @@ cp deploy/.env.prod.example deploy/.env.prod
|
||||
|
||||
### 2) 启动常驻服务
|
||||
|
||||
确保 analytics 数据目录已存在(用于持久化 `SOCIAL_ANALYTICS__DATA_PATH`):
|
||||
|
||||
```bash
|
||||
mkdir -p deploy/data/analytics
|
||||
```
|
||||
|
||||
如果服务器启用了更严格权限策略(含 rootless Docker 或自定义容器运行用户),请确保该目录对容器运行用户可写:
|
||||
|
||||
```bash
|
||||
chmod 775 deploy/data/analytics
|
||||
```
|
||||
|
||||
```bash
|
||||
docker compose --env-file deploy/.env.prod -f deploy/docker-compose.prod.yml up -d redis web worker-agent worker-general scheduler
|
||||
```
|
||||
@@ -122,6 +138,15 @@ docker compose --env-file deploy/.env.prod -f deploy/docker-compose.prod.yml up
|
||||
|
||||
在 nginx 增加静态目录映射:`location /releases/ { alias /你的项目绝对路径/deploy/static/releases/; }`,这样 `https://你的域名/releases/xxx.apk` 可直接下载安装包。并在 `deploy/.env.prod` 设置 `SOCIAL_APP_VERSION__DOWNLOAD_BASE_URL=https://你的域名` 与 `SOCIAL_APP_VERSION__RELEASE_PATH_PREFIX=releases`,确保 `check-updates` 返回的 `download_url` 指向该路径。
|
||||
|
||||
## Analytics 数据持久化
|
||||
|
||||
- `SOCIAL_ANALYTICS__DATA_PATH` 默认值是 `backend/data/analytics`。
|
||||
- 生产编排已挂载:`deploy/data/analytics -> /app/backend/data/analytics`。
|
||||
- `web` 和 `worker-general` 共用同一挂载目录,避免写入与读取不一致。
|
||||
- 若你在 `.env.prod` 覆盖了 `SOCIAL_ANALYTICS__DATA_PATH`,请同步调整 `docker-compose.prod.yml` 的挂载目标路径。
|
||||
- analytics 挂载为独立目录,不会影响 `deploy/static/releases -> /app/deploy/static/releases` 的 APK 发布链路。
|
||||
- 建议将 `deploy/data/analytics` 纳入日常备份策略,避免宿主机磁盘故障导致数据丢失。
|
||||
|
||||
## Android APK 打包
|
||||
|
||||
打包 Android APK 时需指定后端地址:
|
||||
|
||||
@@ -46,6 +46,7 @@ services:
|
||||
volumes:
|
||||
- ../logs:/app/logs
|
||||
- ./static/releases:/app/deploy/static/releases:ro
|
||||
- ./data/analytics:/app/backend/data/analytics
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
@@ -101,6 +102,7 @@ services:
|
||||
volumes:
|
||||
- ../logs:/app/logs
|
||||
- ./static/releases:/app/deploy/static/releases:ro
|
||||
- ./data/analytics:/app/backend/data/analytics
|
||||
|
||||
scheduler:
|
||||
image: ${SOCIAL_BACKEND_IMAGE:-social-app-backend:prod}
|
||||
|
||||
@@ -54,6 +54,28 @@
|
||||
"release_notes": "\u91cd\u6784 Reminder Notification \u7cfb\u7edf\u5e76\u66f4\u65b0\u5e94\u7528\u5305\u540d",
|
||||
"file_size": 61813288,
|
||||
"sha256": "899a3ae89f9931d9ef1bf5354eeae75d4b5a81ecce83f05a2820c95ff6771e55"
|
||||
},
|
||||
{
|
||||
"platform": "android",
|
||||
"channel": "release",
|
||||
"version_name": "0.1.2",
|
||||
"version_code": 6,
|
||||
"min_supported_version_code": 6,
|
||||
"file_name": "social-app-android-v0.1.2+6-release.apk",
|
||||
"release_notes": "\u90e8\u7f72\u914d\u7f6e\u4e0e\u7a33\u5b9a\u6027\u4f18\u5316",
|
||||
"file_size": 62506070,
|
||||
"sha256": "96f2b4f003540d83b70cd33c51465b4b71615d6fc35b735c01e409e9e1b1660d"
|
||||
},
|
||||
{
|
||||
"platform": "android",
|
||||
"channel": "release",
|
||||
"version_name": "0.1.2",
|
||||
"version_code": 7,
|
||||
"min_supported_version_code": 7,
|
||||
"file_name": "social-app-android-v0.1.2+7-release.apk",
|
||||
"release_notes": "\u5207\u6362\u4e0b\u8f7d\u57df\u540d\u4e3a 115.190.63.157",
|
||||
"file_size": 62506070,
|
||||
"sha256": "261352e4731121659152d0060b4524053bc90412d440a49348d2215ec098d5d6"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user