from fastapi import APIRouter, Cookie from fastapi.responses import JSONResponse from app.services.market_overview import get_crypto_market_overview from app.web.shared import require_api_user_with_subscription router = APIRouter() @router.get("/api/market/overview") async def api_market_overview(hours: int = 24, altcoin_session: str = Cookie(default="")): require_api_user_with_subscription(altcoin_session) crypto_market = {} market_error = "" try: crypto_market = get_crypto_market_overview() except Exception as exc: market_error = str(exc)[:500] newsfeed = {} ai_analysis = {} try: from app.web.routes_content import _newsfeed_payload newsfeed = _newsfeed_payload() except Exception: newsfeed = {} try: from app.services.llm_insights import get_latest_sentiment_batch_analysis latest_sentiment = get_latest_sentiment_batch_analysis() if latest_sentiment: ai_analysis = { "status": latest_sentiment.get("status"), "updated_at": latest_sentiment.get("updated_at"), "model": latest_sentiment.get("model"), "prompt_version": latest_sentiment.get("prompt_version"), "content": latest_sentiment.get("content") or {}, "input": latest_sentiment.get("input") or {}, } except Exception: ai_analysis = {} payload = { "hours": int(hours or 24), "updated_at": crypto_market.get("updated_at"), "market": { "crypto_market": crypto_market, "market_error": market_error, "newsfeed": newsfeed, "ai_analysis": ai_analysis, }, } return JSONResponse( payload, headers={ "Cache-Control": "no-cache, no-store, must-revalidate", "Pragma": "no-cache", "Expires": "0", }, )