From 8255e31b75341d86508cdec0837a5e1a81538c2c Mon Sep 17 00:00:00 2001 From: Pigbibi <20649888+Pigbibi@users.noreply.github.com> Date: Wed, 3 Jun 2026 20:57:33 +0800 Subject: [PATCH] fix longbridge signal snapshot date fallback --- application/signal_snapshot.py | 7 ++++--- tests/test_signal_snapshot.py | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/application/signal_snapshot.py b/application/signal_snapshot.py index 771d709..a9f5179 100644 --- a/application/signal_snapshot.py +++ b/application/signal_snapshot.py @@ -131,6 +131,7 @@ def build_signal_snapshot( source.get("signal_description"), source.get("signal_message"), ) + price_as_of = _first_value(source.get("price_as_of"), source.get("snapshot_manifest_price_as_of")) indicators = { field: _json_safe(source[field]) for field in _INDICATOR_FIELDS @@ -149,6 +150,7 @@ def build_signal_snapshot( source.get("snapshot_as_of"), source.get("trade_date"), parsed_snapshot_date, + price_as_of, ) ), "market_date": _json_safe( @@ -158,6 +160,7 @@ def build_signal_snapshot( source.get("snapshot_as_of"), source.get("trade_date"), parsed_snapshot_date, + price_as_of, ) ), "effective_date": _json_safe(source.get("effective_date")), @@ -168,9 +171,7 @@ def build_signal_snapshot( source.get("signal_source"), ), "quote_overlay_used": source.get("quote_overlay_used"), - "price_as_of": _json_safe( - _first_value(source.get("price_as_of"), source.get("snapshot_manifest_price_as_of")) - ), + "price_as_of": _json_safe(price_as_of), "universe_as_of": _json_safe( _first_value(source.get("universe_as_of"), source.get("snapshot_manifest_universe_as_of")) ), diff --git a/tests/test_signal_snapshot.py b/tests/test_signal_snapshot.py index ca2962a..691620a 100644 --- a/tests/test_signal_snapshot.py +++ b/tests/test_signal_snapshot.py @@ -70,6 +70,26 @@ def test_includes_snapshot_manifest_input_diagnostics(self): self.assertEqual(snapshot["source_input_fallback_streak"], 1) self.assertEqual(snapshot["source_refresh_run_id"], "12345") + def test_uses_price_as_of_as_snapshot_date_fallback(self): + snapshot = build_signal_snapshot( + platform="longbridge", + execution={ + "snapshot_manifest_price_as_of": "2026-06-01", + "snapshot_manifest_universe_as_of": "2026-05-14", + "snapshot_manifest_source_input_status": "partial_history_refresh", + "latest_price_source": "longbridge_candlesticks", + "signal_display": ( + "regime=risk_on breadth=68.0% benchmark_trend=up " + "target_stock=100.0% realized_stock=100.0% selected=4" + ), + }, + ) + + self.assertEqual(snapshot["market_date"], "2026-06-01") + self.assertEqual(snapshot["signal_as_of"], "2026-06-01") + self.assertEqual(snapshot["price_as_of"], "2026-06-01") + self.assertEqual(snapshot["universe_as_of"], "2026-05-14") + if __name__ == "__main__": unittest.main()