Spaces:
Running
Running
| """ | |
| Chat Router - Thin layer only | |
| """ | |
| from fastapi import APIRouter, Request | |
| from services.chat_service import ChatService | |
| from services.polar_service import PolarService | |
| router = APIRouter() | |
| async def chat(payload: dict, request: Request): | |
| user_id = payload.get("user_id") | |
| user_msg = payload.get("message", "").strip() | |
| model_id = payload.get("model_id") or "neurones-pro-1.0" | |
| ip = request.client.host if request.client else "127.0.0.1" | |
| user_email = "" | |
| try: | |
| from firebase_admin import auth as fb_auth | |
| fb_user = fb_auth.get_user(user_id) | |
| user_email = fb_user.email or "" | |
| except: | |
| pass | |
| polar_premium = await PolarService.verify_subscription(email=user_email, firebase_uid=user_id) | |
| if is_rate_limited(user_id, is_premium=polar_premium): | |
| return {"response": "⏳ Rate limit reached."} | |
| result = await ChatService.process_message(user_id, user_msg, model_id) | |
| return result |