init
This commit is contained in:
60
new-planet-backend/app/api/v1/ai.py
Normal file
60
new-planet-backend/app/api/v1/ai.py
Normal file
@@ -0,0 +1,60 @@
|
||||
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)}"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user