计划读快照改为"数据日当天或之前最近一版",修掉一个把手工时序写进代码的错

快照在交易日 D 晚上写、plan_date 记 D;计划在 D+1 凌晨构建、数据日是 D。原先读的是
D+1,永远对不上。09-04 能对上只因为那天上午手工跑过一次快照。周一起产业研判这一路
可用数变成零,台账 033 把它记成"快照断了、要查调度中心"——调度中心其实一直按时在跑,
错在这里。

改成 load_previous(D+1),即 plan_date 不晚于 D 的每簇最新一行。顺带扛得住某个晚上没跑:
退回上一版,陈旧天数照常累加。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
zlt 2026-09-07 09:30:16 +08:00
parent 5d727ae61a
commit fcd1f547f6
1 changed files with 7 additions and 2 deletions

View File

@ -216,8 +216,13 @@ def _assemble_cards(ds: str, codes: list, ev: dict, upside: pd.Series,
# 这三路都是"研究证据还在不在"的跟踪,与候选卡的三门槛判决是正交的两维:
# 判决回答今天要不要买,四态回答支撑它的研究证据还在不在。收敛规则在
# logic_state.apply_to_card是单调的——强化只能提前卡内序、永远不升判决。
plan_day = _next_day(ds)
seg_view = judgement.by_segment_name(judgement.snapshot_of(plan_day))
# 行业观点快照在交易日 D 的晚上 20:40 写plan_date 记的是 D计划在 D+1 凌晨构建,
# 数据日 ds 就是 D。所以要读的是 plan_date 不晚于 ds 的最近一版,不是 ds+1。
# 09-04 之前这里读的是 ds+1能对上只因为那天上午手工跑过一次快照——把一次手工操作
# 的时序写进了代码,到周一就全部落空(台账 033 记的"快照断了"其实是这个错,
# 调度中心一直在按时跑。load_previous(D+1) 取的正是 plan_date <= D 的每簇最新一行,
# 顺带也扛得住某个晚上没跑:会退回上一版,陈旧天数照常累加。
seg_view = judgement.by_segment_name(judgement.load_previous(_next_day(ds)))
broker = sources.broker_actions(codes, ds)
seg_of = _segments_of(ds)
if risk is None: # collect 会传入读过一次的名单;单独调用时自己读