2.0.0 Beta : Self-hosted Release

This commit is contained in:
2026-08-09 02:03:29 +08:00
parent 63a0751aba
commit 37cb05eb70
33 changed files with 810 additions and 31 deletions
+68 -4
View File
@@ -1,4 +1,6 @@
# YRTV 2.0.0 Beta
# YRTV 2.0.0 Beta · Superjacky6 Self-hosted Edition
> Created by **Superjacky6** · jacky / jk / yr / jacky0987
YRTV 是面向固定 CS2 战队的私人数据站。它不是公共玩家排行榜,而是让队员拥有类似职业选手的个人主页,并为战队提供比赛档案、队内比较、阵容分析、对手情报和战术工具。
@@ -27,7 +29,7 @@ YRTV 是面向固定 CS2 战队的私人数据站。它不是公共玩家排行
- 111 个日/周/月/季/年度奖项
- 19 条正面/负面/趣味数据发现
- 36 枚地图与 ELO 分段勋章
- 36 项自动化测试通过
- 40 项自动化测试通过
- 43 项数据完整性检查通过
数据规模会随导入变化,Admin 数据完整性中心显示的结果是运行时事实。
@@ -102,7 +104,40 @@ YRTV 是面向固定 CS2 战队的私人数据站。它不是公共玩家排行
- L1/L2/L3/Web 文件状态和回滚快照可视化
- 后台写操作使用 CSRF 防护
## 快速开始
## Docker 自托管
推荐给其他战队使用 Docker Compose
```bash
cp .env.example .env
# 修改 SECRET_KEY、ADMIN_TOKEN、VIEWER_TOKEN
docker compose up -d --build
```
默认访问 `http://127.0.0.1:5001`。首次空安装:
1. 使用 `.env` 中的 `ADMIN_TOKEN` 登录 `/admin/`
2. 首次启动向导创建战队和 roster。
3.`/admin/import-match` 上传自己的 `iframe_network.json`
运行数据保存在 `YRTV_DATA_PATH`,默认是 Git 忽略的
`./runtime-data``git pull` 或重建镜像不会覆盖该目录。
### 迁移当前数据
当前仓库内已有数据迁移到外置目录:
```bash
make prepare-data
cp .env.example .env
docker compose up -d --build
```
迁移使用 SQLite Backup API,不修改源数据库,并生成
`runtime-data/migration-manifest.json`、SHA256 和 `quick_check` 结果。
## Python 开发模式
环境要求:
@@ -140,6 +175,10 @@ make run
make run # 启动 Flask
make check # 编译检查 + 自动化测试
make pipeline # 备份后执行完整 L1 -> L2 -> L3
make bootstrap # 初始化空运行时数据库
make prepare-data # 复制现有数据到 runtime-data
make docker-up # 构建并启动容器
make docker-logs # 查看容器日志
make l1 # 仅构建 L1
make l2 # 仅构建 L2
@@ -242,6 +281,8 @@ Flask services and player profiles
## 数据库治理
- 所有运行路径集中定义在 `database/paths.py`
- `YRTV_DATA_DIR` 可将数据库、备份、锁和导入文件移出代码仓库
- 未设置 `YRTV_DATA_DIR` 时继续兼容原 `database/` 数据路径
- 完整编排入口为 `database/pipeline.py`
- 同一时间只允许一个 pipeline
- Pipeline 运行前备份 L1/L2/L3
@@ -252,6 +293,24 @@ Flask services and player profiles
- 高频玩家历史、Party、事件和经济查询具有专用索引
- 数据库和目录规则详见 `database/README.md`
## 访问模式
- `SITE_VISIBILITY=public`:前台公开,Admin 仍需令牌。
- `SITE_VISIBILITY=private`:前台需要 `VIEWER_TOKEN`
- `/healthz` 始终开放给 Docker 和反向代理健康检查。
- 后台写操作具有 CSRF 防护。
Docker 示例默认使用 `private`
## 品牌与许可证
- 主品牌:`Superjacky6`
- 项目签名:`jacky / jk / yr / jacky0987`
- 页面、报告、后台、元数据、CLI 和容器镜像保留品牌署名
- 比赛事实和统计指标中不写入水印
- 许可证:AGPL-3.0-or-later
- 署名规则:`NOTICE.md`
## 数据质量
Admin 数据完整性中心检查:
@@ -289,6 +348,8 @@ yrtv/
│ ├── maintenance.py # 备份、恢复、健康检查
│ ├── job_store.py # ETL 作业状态
│ └── pipeline.py # 完整流水线
├── docker/
│ └── entrypoint.sh
├── tests/ # 自动化测试
├── utils/ # JSON 结构分析工具
├── web/
@@ -297,6 +358,9 @@ yrtv/
│ ├── templates/
│ └── static/
├── Makefile
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── requirements.txt
└── wsgi.py
```
@@ -305,7 +369,7 @@ yrtv/
- 当前主要数据源为 5E iframe 网络响应。
- 不包含自动网页下载器和 Demo parser。
- 认证仍是单一 Admin Token,适合私人部署,不适合开放注册
- 支持独立 Viewer Token 和 Admin Token,但不提供开放注册或多用户权限系统
- SQLite 适合当前单战队规模,不面向高并发多租户。
- 部分高级空间能力需要地图边界、路径和 Demo 数据,当前显示 `N/A`
- `StatsService` 仍保留部分兼容逻辑;新功能已拆入 Player Profile、Team Performance、Roster Version 等领域服务。