61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
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)}"
|
||
)
|
||
|