feat: complete heaven readings and screener publication

This commit is contained in:
leefer
2026-08-05 23:44:17 +08:00
parent 6a058c2929
commit b3a21d05b7
34 changed files with 3538 additions and 225 deletions
+17 -5
View File
@@ -5,6 +5,7 @@ from typing import Any
from backend.bootstrap.config import normalize_date
from backend.data.providers.tushare_client import _sector_coverage_issue
from backend.features.heaven.agent import HEAVEN_PROMPT_VERSIONS
from backend.features.heaven.engine import build_five_phase_field, build_market_hexagram
@@ -157,11 +158,7 @@ class HeavenTrendMixin:
field,
public=True,
)
daily_fortune_reading = self.database.latest_heaven_reading(
self.current_user_id, "fortune", normalized_date
)
if self._legacy_truncated_heaven_reading(daily_fortune_reading):
daily_fortune_reading = None
daily_fortune_reading = self._reusable_daily_fortune_reading(normalized_date)
return {
"trade_date": data_date,
"calendar_date": normalized_date,
@@ -182,6 +179,21 @@ class HeavenTrendMixin:
},
}
def _reusable_daily_fortune_reading(
self, context_date: str
) -> dict[str, Any] | None:
reading = self.database.latest_heaven_reading(
self.current_user_id, "fortune", context_date
)
if not reading or self._legacy_truncated_heaven_reading(reading):
return None
version = self.database.heaven_reading_interpretation_version(
self.current_user_id, int(reading["id"])
)
if version != HEAVEN_PROMPT_VERSIONS["fortune"]:
return None
return reading
@staticmethod
def _heaven_market_mode(
trade_date: str,