4a93bd1c44
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
936 B
Python
31 lines
936 B
Python
from fastapi import APIRouter, Depends
|
|
from fastapi.responses import StreamingResponse
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.api.reviews import require_current_user
|
|
from app.db import get_db_session
|
|
from app.schemas.chat import ChatStreamRequest
|
|
from app.services.chat_service import ChatService
|
|
|
|
router = APIRouter(prefix="/chat", tags=["chat"])
|
|
ROUTE_PERMISSION_SCOPE = "chat"
|
|
ROUTE_PERMISSION_ACTIONS = {
|
|
"stream": "chat:stream",
|
|
}
|
|
|
|
|
|
def get_chat_service(db: Session = Depends(get_db_session)) -> ChatService:
|
|
return ChatService(db)
|
|
|
|
|
|
@router.post("/stream")
|
|
def stream_chat(
|
|
payload: ChatStreamRequest,
|
|
chat_service: ChatService = Depends(get_chat_service),
|
|
current_user: dict = Depends(require_current_user),
|
|
):
|
|
return StreamingResponse(
|
|
chat_service.stream_answer(current_user, payload.conversation_id, payload.message, payload.review_context),
|
|
media_type="text/event-stream",
|
|
)
|