alphax/app/web/routes_market.py
2026-06-07 20:58:35 +08:00

61 lines
1.9 KiB
Python

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",
},
)