ReportRaahat / frontend /app /api /chat /route.ts
ReportRaahat CI
Deploy from GitHub: cbc36259c5ce4062cd4e64b876308f9378e3ebe2
542c765
// POST /api/chat
// Accepts: { message, history, guc }
// Forwards to FastAPI POST /chat
// Returns: { reply: string }
import { NextRequest, NextResponse } from "next/server"
const API_BASE = process.env.NEXT_PUBLIC_API_URL ?? "http://localhost:8000"
const TIMEOUT_MS = 12_000
export async function POST(req: NextRequest) {
try {
const body = await req.json()
const { message, history = [], guc = {} } = body
if (!message) {
return NextResponse.json({ error: "No message provided" }, { status: 400 })
}
const controller = new AbortController()
const timer = setTimeout(() => controller.abort(), TIMEOUT_MS)
const res = await fetch(`${API_BASE}/chat`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message, history, guc }),
signal: controller.signal,
})
clearTimeout(timer)
if (!res.ok) {
const errText = await res.text().catch(() => "Unknown error")
console.error("[chat] Backend error:", res.status, errText)
return NextResponse.json(
{ reply: "Sorry, I'm having trouble connecting right now. Please try again." },
{ status: 200 } // Return 200 so the UI shows the fallback message
)
}
const data = await res.json()
return NextResponse.json({ reply: data.reply ?? data.answer ?? "I'm here to help." })
} catch (err: unknown) {
const message = err instanceof Error ? err.message : "Unknown error"
console.error("[chat] Error:", message)
return NextResponse.json(
{ reply: "Sorry, the doctor is unavailable right now. Please try again in a moment." },
{ status: 200 }
)
}
}