Files
MAIA/backend/modules/nlp/api.py
2025-04-17 11:25:21 +02:00

53 lines
2.2 KiB
Python

# modules/nlp/api.py
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from core.database import get_db
from core.exceptions import bad_request_exception
from modules.auth.dependencies import get_current_user
from modules.auth.models import User
from modules.nlp.service import process_request, ask_ai
from modules.calendar.service import create_calendar_event, get_calendar_events, update_calendar_event, delete_calendar_event
from modules.calendar.schemas import CalendarEventCreate
router = APIRouter(prefix="/nlp", tags=["nlp"])
@router.post("/process-command")
def process_command(user_input: str, current_user: User = Depends(get_current_user), db: Session = Depends(get_db)):
"""
Process the user command and return the appropriate action.
"""
command = process_request(user_input)
if "error" in command:
raise bad_request_exception(command["error"])
match command["intent"]:
case "ask_ai":
result = ask_ai(**command["params"])
return {"action": "ai_response", "details": result}
case "get_calendar_events":
result = get_calendar_events(db, current_user.id, **command["params"])
return {"action": "calendar_events_retrieved", "details": result}
case "add_calendar_event":
event = CalendarEventCreate(**command["params"])
result = create_calendar_event(db, current_user.id, event)
return {"action": "calendar_event_created", "details": result}
case "update_calendar_event":
event = CalendarEventCreate(**command["params"])
result = update_calendar_event(db, current_user.id, 0, event_data=event) ## PLACEHOLDER
return {"action": "calendar_event_updated", "details": result}
case "delete_calendar_event":
result = update_calendar_event(db, current_user.id, 0) ## PLACEHOLDER
return {"action": "calendar_event_deleted", "details": result}
case "unknown":
return {"action": "unknown_command", "details": command["params"]}
case _:
raise bad_request_exception(400, detail="Unrecognized command")