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)}" )