Files
New-planet-api/new-planet-backend/app/api/v1/ai.py
2025-12-13 14:39:50 +03:00

61 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.ext.asyncio import AsyncSession
from app.db.session import get_db
from app.api.deps import get_current_active_user
from app.models.user import User
from app.schemas.ai import ChatRequest, ChatResponse, ScheduleGenerateRequest, ScheduleGenerateResponse
from app.services.chat_service import chat_service
from app.services.schedule_generator import schedule_generator
router = APIRouter()
@router.post("/chat", response_model=ChatResponse)
async def chat_with_ai(
request: ChatRequest,
current_user: User = Depends(get_current_active_user),
db: AsyncSession = Depends(get_db)
):
"""Чат с ИИ-агентом 'Планета Земля'"""
try:
response = await chat_service.chat(
db=db,
user_id=current_user.id,
request=request
)
return response
except Exception as e:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Chat error: {str(e)}"
)
@router.post("/schedule/generate", response_model=ScheduleGenerateResponse)
async def generate_schedule_ai(
request: ScheduleGenerateRequest,
current_user: User = Depends(get_current_active_user),
db: AsyncSession = Depends(get_db)
):
"""Сгенерировать расписание через ИИ"""
try:
result = await schedule_generator.generate(
db=db,
user_id=current_user.id,
child_age=request.child_age,
preferences=request.preferences,
schedule_date=request.date,
description=request.description
)
return ScheduleGenerateResponse(
schedule_id=result["schedule_id"],
title=result["title"],
tasks=result["tasks"]
)
except Exception as e:
raise HTTPException(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
detail=f"Failed to generate schedule: {str(e)}"
)