FinMK / backend /analytics /views.py
Kumar
Refactor: Exclude PDF and CSV files from Git to fix HF push error
24e6f5b
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status, permissions
from .services import forecast_income
from .anomaly import get_anomalies
from .forecast import get_forecast
from finance.utils_mongo import get_user_db_id
class IncomeForecastView(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
try:
days = int(request.query_params.get('days', 30))
data = forecast_income(get_user_db_id(request.user), days)
return Response(data)
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class AnomalyListView(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
try:
return Response(get_anomalies(get_user_db_id(request.user)))
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ForecastView(APIView):
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
try:
# Accurate AI-based forecasting (Chronos Bolt + Statistical Fallback)
data = get_forecast(get_user_db_id(request.user))
if data is None:
return Response({"error": "Insufficient data for AI forecast (need >5 days history)"}, status=status.HTTP_400_BAD_REQUEST)
return Response(data)
except Exception as e:
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)