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:
2026-02-23 16:23:53 +08:00
parent 9f95be56a0
commit 593ec99466
32 changed files with 4181 additions and 1395 deletions

75
src/data/utils.py Normal file
View 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")