chore(build): 精简 Dockerfile 可选构建阶段, 清理文档与引导页冗余引用

This commit is contained in:
shy3130
2026-10-11 15:42:55 +08:00
parent 6a2a9bb2a7
commit 350ffbf612
17 changed files with 32 additions and 123 deletions
+1 -14
View File
@@ -16,7 +16,7 @@ docker run -d --name tsp -p 3018:3018 -v ${PWD}/data:/app/data ghcr.io/shy3130/t
```
- 需要配置时:从 `.env.example` 复制出 `.env`,命令里加 `--env-file .env`。
- 镜像默认**不含** 插件(合规考虑),也不含 `legacy-cpu` / `backtest` extras —— 老 CPU(无 AVX2)或需要 vectorbt 回测时,请用方式 B 通过 `BACKEND_EXTRAS` 自构建。
- 镜像默认不含 `legacy-cpu` / `backtest` extras —— 老 CPU(无 AVX2)或需要 vectorbt 回测时,请用方式 B 通过 `BACKEND_EXTRAS` 自构建。
- 跑自己改过的代码:fork 后到仓库 Actions 页启用 workflow(fork 默认禁用),构建出的 `ghcr.io/<你的用户名>/tick-stock-panel` 用法相同。
- 想要 compose 全套挂载(`.env` / `tiers.yaml` / 数据卷):参考根目录 `docker-compose.yml`,把 `build:` 段换成 `image: ghcr.io/shy3130/tick-stock-panel:latest`。
@@ -41,19 +41,6 @@ docker compose up --build
Docker 采用两阶段构建,前端 dist 拷进后端镜像,**单容器**运行,数据完全在自己手里。
> ⚠️ ** 插件默认不打包(合规考虑)**
>
> 数据源本质是抓取第三方财经网站(如东方财富)的行情接口,未经对方授权,可能违反其服务条款并涉及交易所行情版权问题。**出于合规考虑,Docker 默认构建不再内置 插件依赖**。
>
> - **默认行为**:`docker compose up --build` 构建出的镜像**不含** ,插件不可用。
> - **如确需启用**(自行承担合规责任):
> ```bash
> docker compose build --build-arg INCLUDE_=1
> docker compose up -d
> ```
> - 启用后镜像会额外内置 Node.js 运行时并预装 依赖,插件开箱即用。
> - **建议优先使用 TickFlow 等正规授权数据源。**
更新到新版本:
```bash
+1 -1
View File
@@ -163,7 +163,7 @@
### 数据源插件化
内置 [TickFlow](https://tickflow.org) 官方 SDK(日 K / 分钟 K / 指数 / 财务 / 实时行情),同时支持接入第三方数据源:YAML 声明自有 HTTP 接口,或开发插件源(参考实现 ,Docker 镜像已内置)。多个数据集(日K / 除权因子 / 实时行情 / 分钟K / 五档盘口 / 财务,注册表持续扩展)按源声明自由组合,在「设置 → 数据源」切换。
内置 [TickFlow](https://tickflow.org) 官方 SDK(日 K / 分钟 K / 指数 / 财务 / 实时行情),同时支持接入第三方数据源:YAML 声明自有 HTTP 接口,或开发插件源。多个数据集(日K / 除权因子 / 实时行情 / 分钟K / 五档盘口 / 财务,注册表持续扩展)按源声明自由组合,在「设置 → 数据源」切换。
详见 [custom-data-source.md](./custom-data-source.md) 与 [plugin-development.md](./plugin-development.md)。
+2 -11
View File
@@ -1,6 +1,6 @@
# 数据源插件开发指南
数据源插件是可选的行情数据来源(fuyao、、akshare 等),作为独立模块放在
数据源插件是可选的行情数据来源(fuyao、akshare 等),作为独立模块放在
`backend/app/plugins/` 下。services 层(kline_sync / quote_service / financial_sync)
全部通过统一路由点分流:插件声明了某数据集就走插件,未声明自动回退 TickFlow。
因此**一个合格的插件只需要正确实现契约,不需要改动任何 service / API 代码**;
@@ -57,13 +57,8 @@ TickFlow 的「先探后存」语义:
| runtime | 含义 | 典型场景 |
|---|---|---|
| `python` | 纯 Python 依赖, `pip install` | akshare、tushare |
| `node` | 需要 Node.js 运行时, `npm install` | |
| `none` | 无额外依赖 | 纯 HTTP API 源 |
> ⚠️ 在 Docker 中默认不打包(合规考虑:它抓取第三方财经网站接口,存在版权与
> 反爬风险)。如需启用,构建时传 `--build-arg INCLUDE_=1`,使用风险自负。
> 详见 [deployment.md](./deployment.md)。
`runtime` 字段当前仅用于 UI 展示, 实际依赖检测由 `check` 函数负责。
### check 函数
@@ -218,7 +213,7 @@ provider 不应自行切换或回退到其他数据源。
记日志;完全无法识别的口径 → 拒收并回退 TickFlow。契约仍要求源头写对,守卫只是兜底。
可选类属性 `minute_history_days = 5` 声明 1 分钟历史深度(交易日);未声明视为
深历史(TickFlow 基准)。浅源(如 免费分时仅保留最近 5 个交易日)声明后,
深历史(TickFlow 基准)。浅源(如免费分时仅保留最近 5 个交易日的源)声明后,
个股分时档位自动收窄为可行选项并默认 5 日,深源默认 20 日。
> **全量分钟 (full_minute) 数据集契约**:声明 `full_minute` 数据集并把
@@ -318,10 +313,6 @@ uv run --extra dev python -m ruff check app/plugins/<your_plugin>/ tests/test_<y
- `client.py` — httpx 客户端(X-api-key 认证 + 统一信封解包 + 分页 + 页间隔限频 + 单标的日K + dump 预签名下载, S3 下载不带 Key 头)
- `provider.py` — Provider 实现(实测/文档双字段名映射、百分数→小数制、volume 股→手、上海零点戳 +8h 时区、dump 按 release 版本缓存、软失败、Key 探测)
- `tests/test_fuyao_provider.py` — 73 个契约测试, 是新插件的测试范本
- **`backend/app/plugins//`** — Node 型插件, 通过 subprocess 桥接调用
- `bridge.py` — Python↔Node 桥接 + availability 检测
- `bridge.mjs` — Node 端(并发池、重试、SDK 解析)
- `provider.py` — Provider 实现(归一化、分批、错误降级)
## 路由机制(无需关心, 仅参考)