refactor: 存储层迁移DuckDB + 模块重构
- 存储层重构: HDF5 → DuckDB(UPSERT模式、线程安全存储) - Sync类迁移: DataSync从sync.py迁移到api_daily.py(职责分离) - 模型模块重构: src/models → src/pipeline(更清晰的命名) - 新增因子模块: factors/momentum (MA、收益率排名)、factors/financial - 新增API接口: api_namechange、api_bak_basic - 新增训练入口: training模块(main.py、pipeline配置) - 工具函数统一: get_today_date等移至utils.py - 文档更新: AGENTS.md添加架构变更历史
This commit is contained in:
75
src/data/utils.py
Normal file
75
src/data/utils.py
Normal file
@@ -0,0 +1,75 @@
|
||||
"""Data module utility functions.
|
||||
|
||||
集中管理数据模块中常用的工具函数,避免重复定义。
|
||||
"""
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Optional
|
||||
|
||||
|
||||
# 默认全量同步开始日期
|
||||
DEFAULT_START_DATE = "20180101"
|
||||
|
||||
# 今日日期 (YYYYMMDD 格式)
|
||||
TODAY: str = datetime.now().strftime("%Y%m%d")
|
||||
|
||||
|
||||
def get_today_date() -> str:
|
||||
"""获取今日日期(YYYYMMDD 格式)。
|
||||
|
||||
Returns:
|
||||
今日日期字符串,格式为 YYYYMMDD
|
||||
"""
|
||||
return TODAY
|
||||
|
||||
|
||||
def get_next_date(date_str: str) -> str:
|
||||
"""获取给定日期的下一天。
|
||||
|
||||
Args:
|
||||
date_str: YYYYMMDD 格式的日期
|
||||
|
||||
Returns:
|
||||
YYYYMMDD 格式的下一天日期
|
||||
"""
|
||||
dt = datetime.strptime(date_str, "%Y%m%d")
|
||||
next_dt = dt + timedelta(days=1)
|
||||
return next_dt.strftime("%Y%m%d")
|
||||
|
||||
|
||||
def get_prev_date(date_str: str) -> str:
|
||||
"""获取给定日期的前一天。
|
||||
|
||||
Args:
|
||||
date_str: YYYYMMDD 格式的日期
|
||||
|
||||
Returns:
|
||||
YYYYMMDD 格式的前一天日期
|
||||
"""
|
||||
dt = datetime.strptime(date_str, "%Y%m%d")
|
||||
prev_dt = dt - timedelta(days=1)
|
||||
return prev_dt.strftime("%Y%m%d")
|
||||
|
||||
|
||||
def parse_date(date_str: str) -> datetime:
|
||||
"""解析 YYYYMMDD 格式的日期字符串。
|
||||
|
||||
Args:
|
||||
date_str: YYYYMMDD 格式的日期
|
||||
|
||||
Returns:
|
||||
datetime 对象
|
||||
"""
|
||||
return datetime.strptime(date_str, "%Y%m%d")
|
||||
|
||||
|
||||
def format_date(dt: datetime) -> str:
|
||||
"""将 datetime 对象格式化为 YYYYMMDD 字符串。
|
||||
|
||||
Args:
|
||||
dt: datetime 对象
|
||||
|
||||
Returns:
|
||||
YYYYMMDD 格式的日期字符串
|
||||
"""
|
||||
return dt.strftime("%Y%m%d")
|
||||
Reference in New Issue
Block a user