feat(data): 实现 Binance WebSocket 适配器与架构重构
- 新增 exchanges/ 模块:MarketDataFeed 统一接口、BaseExchangeAdapter 抽象基类、 BinanceAdapter 完整实现(WebSocket + REST) - WebSocket 层基于 binance 官方 SDK 的 WebsocketClient,自动多路复用与断线重连 - REST 层使用 MainClient(Spot),实现 fetchKlines 自动分页补拉 + fetchMarkets 元数据解析 - 数据标准化:Ticker/Trade/OrderBook/Kline 类型定义与 Binance 原生格式互转 - 引入 RxJS Subject 作为统一事件流管道,按 eventType 运行时路由分发 - 重构 config/:YAML 驱动配置加载 + 零依赖运行时校验(fail-fast) - 重构 db/:TypeORM DataSource 配置 + TimescaleDB K 线 Hypertable 实体 - 新增 utils/logger.ts:Pino 结构化日志(开发环境 pino-pretty 彩色输出) - 新增 env.yaml 作为 TS/Python 共享的统一环境配置源 - 删除旧版手写 SQL schema 与散落配置文件,收敛到 TypeORM 实体管理 - 安装 rxjs@7.8.2 依赖
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
// data/src/logger.ts
|
||||
import pino from "pino";
|
||||
import { logging } from "../config";
|
||||
|
||||
export const logger = pino({
|
||||
level: logging.level,
|
||||
// 开发环境:使用 pino-pretty 彩色输出
|
||||
// 生产环境:JSON 格式,便于 ELK / Loki 采集
|
||||
...(logging.pretty
|
||||
? { transport: { target: "pino-pretty", options: { colorize: true } } }
|
||||
: {}),
|
||||
// 自动注入模块名
|
||||
base: { module: "trade-data" },
|
||||
// 序列化 Error 对象
|
||||
serializers: {
|
||||
err: pino.stdSerializers.err,
|
||||
},
|
||||
});
|
||||
|
||||
export default logger;
|
||||
Reference in New Issue
Block a user