Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions backend/routes/chat.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
"""Chat routes — /api/chat — supports normal + streaming"""

import json
import logging

logger = logging.getLogger(__name__)
from types import SimpleNamespace

from fastapi import APIRouter, HTTPException
Expand All @@ -23,6 +26,12 @@ def _retrieve_context(*args, **kwargs):

@router.post("/", response_model=ChatResponse)
async def chat(req: ChatRequest):
logger.info("Chat request", extra={
"session_id": req.session_id,
"model": req.model,
"message_len": len(req.message),
"use_documents": req.use_documents,
})
"""Standard (non-streaming) chat endpoint."""
if not await ollama_service.is_ollama_running():
raise HTTPException(503, "Ollama not running. Run: `ollama serve`")
Expand Down Expand Up @@ -54,6 +63,12 @@ async def chat(req: ChatRequest):

@router.post("/stream")
async def chat_stream(req: ChatRequest):
logger.info("Chat stream request", extra={
"session_id": req.session_id,
"model": req.model,
"message_len": len(req.message),
"use_documents": req.use_documents,
})
"""Streaming chat — returns Server-Sent Events."""
if not await ollama_service.is_ollama_running():
raise HTTPException(503, "Ollama not running. Run: `ollama serve`")
Expand Down
14 changes: 14 additions & 0 deletions backend/routes/upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
from pathlib import Path
from fastapi import APIRouter, UploadFile, File, Form, HTTPException
from models.schemas import UploadResponse
import logging
from services import db_service

logger = logging.getLogger(__name__)

router = APIRouter()

ALLOWED = {
Expand All @@ -21,6 +24,11 @@

@router.post("/", response_model=UploadResponse)
async def upload(file: UploadFile = File(...), session_id: str = Form(...)):
logger.info("Upload request", extra={
"filename": file.filename,
"content_type": file.content_type,
"session_id": session_id,
})
content_type = file.content_type or ""
# Be lenient — also allow by extension
ext = Path(file.filename).suffix.lower()
Expand All @@ -39,6 +47,12 @@ async def upload(file: UploadFile = File(...), session_id: str = Form(...)):
f.write(content)

size_kb = round(len(content) / 1024, 1)
logger.info("Upload complete", extra={
"filename": file.filename,
"size_kb": size_kb,
"chunks": chunks,
"session_id": session_id,
})

from services import rag_service

Expand Down