File size: 1,208 Bytes
80ef840
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from fastapi import APIRouter
from fastapi.responses import PlainTextResponse

from app.api.schemas import TicketRequest, TicketResponse
from app.rag.ingest import ingest_policies
from app.rag.vector_store import collection_count
from app.workflows.langgraph_workflow import CustomerSupportWorkflow

router = APIRouter(prefix="/api", tags=["support"])
workflow = CustomerSupportWorkflow()


@router.get("/health")
def health() -> dict:
    return {"status": "ok"}


@router.get("/rag/status")
def rag_status() -> dict:
    return {"collection_count": collection_count()}


@router.post("/rag/ingest")
def ingest_rag() -> dict:
    return ingest_policies(reset=True)


@router.post("/tickets", response_model=TicketResponse)
def submit_ticket(request: TicketRequest) -> dict:
    return workflow.run(
        customer_id=request.customer_id,
        message=request.message,
        order_id=request.order_id,
    )


@router.post("/tickets/text", response_class=PlainTextResponse)
def submit_ticket_text(request: TicketRequest) -> str:
    result = workflow.run(
        customer_id=request.customer_id,
        message=request.message,
        order_id=request.order_id,
    )
    return result["response"]