读数脚本改用完整传导视图,与候选卡一致

候选卡判「所在环节被指向」时认的是两张视图取或,读数脚本原先只读了含已启动成员
的那张窄视图,算出来的乙路覆盖比卡上真实看到的低。一只票挂多个环节时取第一个
评析过的那个。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
zlt 2026-09-04 11:42:03 +08:00
parent 25724003d1
commit f53bcc9973
1 changed files with 9 additions and 3 deletions

View File

@ -151,11 +151,15 @@ def main(ds: str | None = None, plan_day: str | None = None) -> None:
if name:
by_seg[name] = r
seg_of = {}
# 用完整的传导视图,不是只含已启动成员的那张。候选卡判"所在环节被指向"时认的就是
# 完整这张plan.py 的 evd["pointed"] 是两张视图取或),读数脚本必须跟它一致,
# 否则算出来的乙路覆盖比卡上真实看到的低。
# 一只票可能挂在多个环节上,这里保留全部,只要有一个环节评析过就算对上。
try:
d = db.read_pg("SELECT ts_code, target FROM v_factor_transmission_moved "
d = db.read_pg("SELECT ts_code, target FROM v_factor_transmission "
"WHERE scan_date = %s", (ds,))
for r in d.itertuples():
seg_of[common.to_prefix(str(r.ts_code).strip())] = str(r.target)
seg_of.setdefault(common.to_prefix(str(r.ts_code).strip()), []).append(str(r.target))
except Exception as e: # noqa: BLE001
print(f" (传导视图读取失败,乙路整体缺席: {e!r}")
@ -165,7 +169,9 @@ def main(ds: str | None = None, plan_day: str | None = None) -> None:
samples: dict = {}
for k in codes:
a = ls.from_claims(claims.get(k), ds, stale_days=config.LOGIC_STALE_DAYS)
b = ls.from_judgement(by_seg.get(seg_of.get(k, "")))
# 一只票挂在多个环节上时,取第一个评析过的那个环节的研判。
row = next((by_seg[t] for t in seg_of.get(k, []) if t in by_seg), None)
b = ls.from_judgement(row)
c = brokers.get(k) or ls.signal(ls.PATH_BROKER, ls.SIG_NONE,
why="两个窗口里算不出可比的预测")
per_path[ls.PATH_CLAIM][a["signal"]] += 1