容器化改造

This commit is contained in:
zlt 2026-07-24 15:07:31 +08:00
parent f0b4fb76dc
commit d70ecc3d6c
3 changed files with 27 additions and 8 deletions

View File

@ -29,8 +29,9 @@ FACTOR_MYSQL_DB=
# PRICE_MYSQL_USER=
# PRICE_MYSQL_PASSWORD=
# PRICE_MYSQL_DB=
# gp_day_data 的股票代码列名(待实机核实:可能是 ts_code 或 symbol
PRICE_CODE_COL=ts_code
# gp_day_data 的股票代码列名(平台实测=symbol。代码会自动兜底逐个试(symbol/ts_code)
# 这里填对可省一次试探查询。
PRICE_CODE_COL=symbol
# 可选:用平台 REST 注册因子时填(留空=直连 ③ 写 factor_metadata
# FACTOR_API_BASE=http://192.168.16.155:8000

View File

@ -53,6 +53,24 @@ def build_heat(start, end):
return df[["trade_date", "stock_code", "factor_value"]]
def _read_gp_price(start, end):
"""gp_day_data 现价:代码列名不定(平台实测=symbol非 ts_code——照 rsi_14d_etl
惯例按候选列逐个试用第一个能查通的"""
cands = [config.PRICE_CODE_COL] + [c for c in ("symbol", "ts_code")
if c != config.PRICE_CODE_COL]
last = None
for c in cands:
try:
df = db.read_mysql("price",
f"SELECT `timestamp` AS trade_date, `{c}` AS ts_code, close "
f"FROM gp_day_data WHERE `timestamp` BETWEEN %s AND %s", (start, end))
print(f" (upside 现价用 gp_day_data.{c})")
return df
except Exception as e: # noqa: BLE001 —— 列名不对就换下一个候选
last = e
raise RuntimeError(f"gp_day_data 代码列都不行(试了 {cands}: {last!r}")
# ---------------------------------------------------------------- 预期空间
def build_upside(start, end):
"""upside = 一致预期目标价中枢 / 当日现价 1as-of现价日取 asof<=当日最新一致预期)。
@ -64,10 +82,7 @@ def build_upside(start, end):
cons = cons[cons["ts_code"].isin(uni)].copy()
if cons.empty:
return _EMPTY
col = config.PRICE_CODE_COL
price = db.read_mysql("price",
f"SELECT `timestamp` AS trade_date, `{col}` AS ts_code, close "
f"FROM gp_day_data WHERE `timestamp` BETWEEN %s AND %s", (start, end))
price = _read_gp_price(start, end)
if price.empty:
return _EMPTY
price["close"] = pd.to_numeric(price["close"], errors="coerce")

3
run.py
View File

@ -80,8 +80,11 @@ def cmd_build(which, mode, start, end, date):
if code not in factors.BUILDERS:
raise SystemExit(f"未知因子: {code}(可选: {list(factors.FACTORS)} 或 all")
print(f"[{code}] {mode} {start} ~ {end}")
try:
df = factors.BUILDERS[code](start, end)
common.write_factor(factors.FACTORS[code], df, mode)
except Exception as e: # noqa: BLE001 —— 一路失败不拖累其余(批量容错)
print(f"{code} 失败: {e!r}")
def main():