增加大模型

This commit is contained in:
dekun
2026-05-26 09:38:23 +08:00
parent e0ec3f87a9
commit 27031ab676
14 changed files with 797 additions and 69 deletions
+31 -5
View File
@@ -13,6 +13,8 @@ from .periods import get_daybefore_period, get_today_period, get_yesterday_perio
from .state import get_today_cache, set_today_cache
from .funding_store import prefetch_funding
from .kline_store import prefetch_symbols
from .llm_service import run_interpretation_batch, schedule_interpret_background
from .stats import compute_three_day_stats
from .wecom import build_markdown, send_wecom_markdown
logger = logging.getLogger(__name__)
@@ -147,6 +149,18 @@ async def job_refresh_today() -> None:
_restore_today_from_db()
async def job_llm_interpret() -> None:
"""08:05 对三日交集币种逐个大模型解读(每币间隔 3 分钟)。"""
logger.info("Job: LLM interpret three-day intersection")
if not settings.llm_api_key.strip():
logger.info("LLM_API_KEY not set, skip")
return
try:
await run_interpretation_batch()
except Exception as e:
logger.error("LLM job failed: %s", e)
async def startup_tasks() -> None:
init_db()
now = now_shanghai()
@@ -194,6 +208,12 @@ async def startup_tasks() -> None:
except Exception as e:
logger.error("Startup catch-up push failed: %s", e)
if settings.llm_api_key.strip() and settings.llm_auto_on_startup:
stats = compute_three_day_stats()
if stats.get("ok") and stats.get("symbols"):
logger.info("Startup: schedule one LLM interpret batch")
schedule_interpret_background()
def start_scheduler() -> None:
scheduler.add_job(
@@ -208,19 +228,25 @@ def start_scheduler() -> None:
id="push_wecom",
replace_existing=True,
)
refresh_hours = max(1, settings.refresh_minutes // 60)
scheduler.add_job(
job_refresh_today,
CronTrigger(minute=f"*/{settings.refresh_minutes}", timezone="Asia/Shanghai"),
CronTrigger(hour=f"*/{refresh_hours}", minute=0, timezone="Asia/Shanghai"),
id="refresh_today",
replace_existing=True,
)
scheduler.add_job(
job_llm_interpret,
CronTrigger(hour=8, minute=5, timezone="Asia/Shanghai"),
id="llm_interpret",
replace_existing=True,
)
if not scheduler.running:
scheduler.start()
logger.info(
"Scheduler started (today=%s, yesterday=%s, every %d min)",
settings.today_data_mode,
settings.yesterday_data_mode,
settings.refresh_minutes,
"Scheduler started (today every %dh, LLM 08:05, interval %ds)",
refresh_hours,
settings.llm_symbol_interval_sec,
)