alphax/app/web/routes_market.py
2026-05-17 19:39:11 +08:00

55 lines
1.8 KiB
Python

from fastapi import APIRouter, Cookie
from app.db.onchain_db import get_onchain_overview
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]
onchain = get_onchain_overview(hours=hours)
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 = {}
return {
"hours": int(hours or 24),
"updated_at": crypto_market.get("updated_at"),
"market": {
"crypto_market": crypto_market,
"market_error": market_error,
"newsfeed": newsfeed,
"onchain": onchain,
"ai_analysis": ai_analysis,
},
}