diff --git a/app/services/upstream_signals.py b/app/services/upstream_signals.py index 870a34f..46489eb 100644 --- a/app/services/upstream_signals.py +++ b/app/services/upstream_signals.py @@ -397,7 +397,7 @@ def _row(src, src_label, ms, **kw) -> dict: "ymd": _ymd_of(ms), "cat": None, "cat_label": None, "direction": None, "level": None, "value": None, "price": None, "target": None, "confidence": None, "entry_score": None, "z_dd": None, "window_net": None, "window_ret": None, - "action": None, "dominant_signal": None, "reason": None, "stale": False, + "action": None, "dominant_signal": None, "reason": None, "stale": False, "flow": None, "age_min": None, "dup": 1, "ts_from": "trigger"} base.update(kw) return base @@ -518,8 +518,10 @@ def _bycode_metrics(c, code, cap): if not _same_code(cd or payload.get("ts_code"), code): continue g = lambda k, dv=None: payload.get(k, f.get(k, dv)) + _d = str(g("direction") or "").lower() rows.append(_row("metrics", "盘中资金异动", _id_ms(sid), cat="fund_flow", cat_label="资金异动", - direction=g("direction"), level=g("level"), + direction={"inflow": "看涨", "outflow": "看跌"}.get(_d, g("direction")), + flow=_d or None, level=g("level"), value=_num(g("value") if g("value") is not None else g("net")), z_dd=_num(g("z_dd")), window_net=_num(g("window_net")), window_ret=_num(g("window_ret")), ts_from="stream_id")) diff --git a/app/web/static/index.html b/app/web/static/index.html index ccf8281..cc94bd0 100644 --- a/app/web/static/index.html +++ b/app/web/static/index.html @@ -1949,7 +1949,7 @@ body.dock-r:not(.r-fold) .side-r .strip{display:none;}
当前快照 · 这两路上游只给当前值,不带时间
资金异动 - {{ flowText(r.direction) }} + {{ r.direction }} {{ moneyCn(r.window_net) }} 偏离 {{ r.z_dd }}
diff --git a/scripts/test_batch24_units.py b/scripts/test_batch24_units.py index a6c722c..8fde7f0 100644 --- a/scripts/test_batch24_units.py +++ b/scripts/test_batch24_units.py @@ -157,6 +157,12 @@ def test_parse_sources(): mrows, _n, _t = us._bycode_metrics(_FakeRedis({"mtf:intraday:stream:metrics": met}), "601126.SH", 5000) assert len(mrows) == 1 and mrows[0]["time"] == "13:41" and mrows[0]["z_dd"] == 2.4 assert mrows[0]["ts_from"] == "stream_id", "时间取自流 id 是写入时刻, 必须标出来" + assert mrows[0]["direction"] == "看涨" and mrows[0]["flow"] == "up", mrows[0] + # 时间线是五路混着排的, 方向必须同一套说法, 且不许把英文枚举直接印给人看 + m2 = us._bycode_metrics(_FakeRedis({"mtf:intraday:stream:metrics": [ + ("%d-0" % _today_ms(9, 50), {"data": '{"ts_code": "601126.SH", "direction": "outflow"}'})]}), + "601126.SH", 5000)[0] + assert m2[0]["direction"] == "看跌" and m2[0]["flow"] == "outflow", m2[0] @case("去重: 同源同分钟同值合并并计数; 跨源永不合并")