11"""Chat endpoint — submits a query to the LangGraph RAG agent."""
22
33from fastapi import APIRouter , Depends
4+ from sqlalchemy .ext .asyncio import AsyncSession
45
56from app .api .dependencies import require_company_user
67from app .db .models import User
7- from app .schemas .chat import ChatRequest , ChatResponse
8+ from app .db .session import get_db
9+ from app .schemas .chat import ChatConversationResponse , ChatMessageResponse , ChatRequest , ChatResponse
810from app .services import chat_service
911
1012router = APIRouter ()
2022)
2123async def invoke_agent (
2224 request : ChatRequest ,
25+ db : AsyncSession = Depends (get_db ),
2326 current_user : User = Depends (require_company_user ),
2427):
2528 """
@@ -31,5 +34,33 @@ async def invoke_agent(
3134
3235 **Access:** `admin` and `employee` only. `super_admin` receives **403**.
3336 """
34- response_text = await chat_service .invoke_agent (query = request .query , current_user = current_user )
35- return ChatResponse (response = response_text )
37+ response_text , conversation_id = await chat_service .invoke_agent (
38+ query = request .query ,
39+ conversation_id = request .conversation_id ,
40+ db = db ,
41+ current_user = current_user ,
42+ )
43+ return ChatResponse (response = response_text , conversation_id = conversation_id )
44+
45+
46+ @router .get ("/conversations" , response_model = list [ChatConversationResponse ])
47+ async def list_conversations (
48+ db : AsyncSession = Depends (get_db ),
49+ current_user : User = Depends (require_company_user ),
50+ ):
51+ """List persisted chat conversations for the current authenticated user."""
52+ return await chat_service .list_conversations (db = db , current_user = current_user )
53+
54+
55+ @router .get ("/conversations/{conversation_id}/messages" , response_model = list [ChatMessageResponse ])
56+ async def get_conversation_messages (
57+ conversation_id : str ,
58+ db : AsyncSession = Depends (get_db ),
59+ current_user : User = Depends (require_company_user ),
60+ ):
61+ """Get persisted messages for one conversation owned by the current user."""
62+ return await chat_service .get_conversation_messages (
63+ conversation_id = conversation_id ,
64+ db = db ,
65+ current_user = current_user ,
66+ )
0 commit comments