feat(data): 实现配置表 CRUD 与 Schema 初始化拆分
- 新增 data/db/ 数据库访问层:pool 管理、类型定义、Zod 校验、参数化 SQL 查询 - 新增 data/db/config-crud.ts:MonitoredSymbolsRepo / ExchangeConfigRepo / AppConfigRepo 三个 CRUD 服务类 - 新增 data/config.ts:中心化配置模块,零依赖 .env 解析 + Zod 校验 - 新增 data/schema/:klines.sql + config.sql 参考 DDL - 新增 data/exchanges/:交易所类型定义与 Binance WebSocket 封装 - 新增 data/run/:交易所连接启动入口 - 重构 data/init-db/:001_init.sql 仅保留 TimescaleDB + klines,配置表拆分至 002_config.sql - 更新 docker-compose.yml:挂载 init-db 初始化脚本
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// ============================================================
|
||||
// exchanges/types.ts — WebSocket 事件数据类型
|
||||
// ============================================================
|
||||
|
||||
/** 由 WebSocket 推送的单根 K 线数据 */
|
||||
export interface KlineWsData {
|
||||
/** 交易所标识 */
|
||||
exchange: string;
|
||||
/** 交易对,如 BTCUSDT */
|
||||
symbol: string;
|
||||
/** K 线周期,如 1m / 1h / 1d */
|
||||
interval: string;
|
||||
/** K 线开盘时间(Unix 毫秒时间戳) */
|
||||
time: number;
|
||||
/** 开盘价 */
|
||||
open: number;
|
||||
/** 最高价 */
|
||||
high: number;
|
||||
/** 最低价 */
|
||||
low: number;
|
||||
/** 收盘价 */
|
||||
close: number;
|
||||
/** 成交量(基准币种) */
|
||||
volume: number;
|
||||
}
|
||||
|
||||
/** ExchangeWs 构造参数 */
|
||||
export interface ExchangeWsConfig {
|
||||
/** 交易所 ID,ccxt 支持的所有交易所标识 */
|
||||
exchangeId: string;
|
||||
/** 要订阅的交易对列表,如 ['BTCUSDT', 'ETHUSDT'] */
|
||||
symbols: string[];
|
||||
/** K 线周期,默认 '1m' */
|
||||
interval?: string;
|
||||
/** 传递给 ccxt.pro 交易所实例的额外选项(如 agent、apiKey 等) */
|
||||
ccxtOptions?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
/** ExchangeWs 连接状态 */
|
||||
export type WsConnectionState =
|
||||
| "idle" // 尚未启动
|
||||
| "connecting" // 正在连接 WebSocket
|
||||
| "connected" // 已连接,正在接收数据
|
||||
| "disconnected" // 已断开
|
||||
| "error"; // 错误状态
|
||||
Reference in New Issue
Block a user