From f53bcc99734dc574c3a3f38f392d432a889c7ffd Mon Sep 17 00:00:00 2001 From: zlt Date: Fri, 4 Sep 2026 11:42:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BB=E6=95=B0=E8=84=9A=E6=9C=AC=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E5=AE=8C=E6=95=B4=E4=BC=A0=E5=AF=BC=E8=A7=86=E5=9B=BE?= =?UTF-8?q?=EF=BC=8C=E4=B8=8E=E5=80=99=E9=80=89=E5=8D=A1=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 候选卡判「所在环节被指向」时认的是两张视图取或,读数脚本原先只读了含已启动成员 的那张窄视图,算出来的乙路覆盖比卡上真实看到的低。一只票挂多个环节时取第一个 评析过的那个。 Co-Authored-By: Claude Opus 5 --- logic_state_coverage.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/logic_state_coverage.py b/logic_state_coverage.py index edae7bb..8eda83d 100644 --- a/logic_state_coverage.py +++ b/logic_state_coverage.py @@ -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