-добавлены нетворки в докер композ -исправлен рутинг (баг пайчарма) -запросы к ии агентам не проходят из-за ссл сертификата (пробовали отключить, но пока не выходит, нужно доделать)
79 lines
2.5 KiB
Python
79 lines
2.5 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.models.ai_conversation import AIConversation
|
||
from app.schemas.ai import (
|
||
ChatRequest,
|
||
ChatResponse,
|
||
ScheduleGenerateRequest,
|
||
ScheduleGenerateResponse,
|
||
ConversationHistory,
|
||
ConversationListItem,
|
||
ScheduleUpdateRequest,
|
||
ScheduleUpdateResponse,
|
||
RecommendationRequest,
|
||
RecommendationResponse,
|
||
)
|
||
from app.services.chat_service import chat_service
|
||
from app.services.schedule_generator import schedule_generator
|
||
from app.services.cache_service import cache_service
|
||
from app.services.gigachat_service import gigachat_service
|
||
from app.crud import schedule as crud_schedule, task as crud_task
|
||
from app.schemas.task import TaskCreate
|
||
from app.schemas.schedule import ScheduleUpdate
|
||
from app.core.config import settings
|
||
|
||
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)}"
|
||
)
|
||
|
||
|