from datetime import datetime
from typing import Any, Dict, Optional

from fastapi import APIRouter, Depends

from app.db.database import get_mongo_db

router = APIRouter()


def _serialize(v: Any) -> Any:
    if isinstance(v, datetime):
        return v.isoformat()
    if isinstance(v, dict):
        return {k: _serialize(x) for k, x in v.items()}
    if isinstance(v, list):
        return [_serialize(x) for x in v]
    return v


@router.get("/market-intelligence/summary")
def get_market_intelligence_summary(db=Depends(get_mongo_db)) -> Dict[str, Any]:
    doc = db["market_intelligence_summary"].find_one({"type": "latest"}, {"_id": 0}) or {}
    payload = doc.get("payload") if isinstance(doc, dict) else None
    if not isinstance(payload, dict):
        payload = {}
    return {"ok": True, "data": _serialize(payload)}
