"""Admin endpoints — live data refresh, agent replay triggers.""" from __future__ import annotations import logging from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.core.config import get_settings from app.core.db import get_db log = logging.getLogger(__name__) router = APIRouter() @router.post("/refresh-live") def refresh_live(db: Session = Depends(get_db)) -> dict: """Re-pull curve / filings / news from live sources on demand. Only does work when USE_LIVE_DATA=true and the relevant keys/UA are set. Returns a summary describing what was refreshed. """ from app.services.ingestion.live_refresh import refresh_live_data settings = get_settings() if not settings.use_live_data: return { "enabled": False, "message": "USE_LIVE_DATA is false — set it to true and restart, or set it as a HF Space Variable.", "curve_source": "seeded", "news_source": "seeded", "filings_source": "seeded", } summary = refresh_live_data(db) summary["enabled"] = True summary["curve_source"] = "FRED" if settings.live_curve_enabled else "seeded" summary["news_source"] = ( settings.news_provider.upper() if settings.live_news_enabled else "seeded" ) summary["filings_source"] = "SEC EDGAR" if settings.live_filings_enabled else "seeded" summary["llm_provider"] = settings.llm_provider if settings.llm_enabled else "none" return summary @router.get("/status") def live_status() -> dict: """Inspect the live-data configuration without revealing secrets.""" from app.services.scheduler import scheduler_status s = get_settings() return { "use_live_data": s.use_live_data, "llm_provider": s.llm_provider if s.llm_enabled else "none", "llm_model": s.llm_model if s.llm_enabled else None, "fred_configured": bool(s.fred_api_key), "sec_configured": bool(s.sec_user_agent), "news_provider": s.news_provider, "news_configured": s.live_news_enabled, "live_curve": s.live_curve_enabled, "live_filings": s.live_filings_enabled, "live_news": s.live_news_enabled, "scheduler": scheduler_status(), } @router.get("/scheduler") def scheduler_info() -> dict: """Detailed scheduler state — running, cron, last run, next run.""" from app.services.scheduler import scheduler_status return scheduler_status()