60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
const AI_SERVICE = process.env.AI_SERVICE_URL || "http://localhost:3001"
|
|
|
|
export async function chatWithAI(message: string, userId: string, userRole: string) {
|
|
const res = await fetch(`${AI_SERVICE}/ai/chat`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ message, user_id: userId, user_role: userRole }),
|
|
})
|
|
|
|
if (!res.ok) {
|
|
const text = await res.text()
|
|
throw new Error(`AI service error (${res.status}): ${text}`)
|
|
}
|
|
|
|
const data = await res.json()
|
|
return data.response || ""
|
|
}
|
|
|
|
export async function fetchJobs() {
|
|
try {
|
|
const res = await fetch(`${AI_SERVICE}/ai/jobs`)
|
|
if (!res.ok) return []
|
|
const data = await res.json()
|
|
return data.jobs || []
|
|
} catch {
|
|
return []
|
|
}
|
|
}
|
|
|
|
export async function getInstructions() {
|
|
try {
|
|
const res = await fetch(`${AI_SERVICE}/ai/instructions`)
|
|
if (!res.ok) return null
|
|
const data = await res.json()
|
|
return data.success ? data.instructions : null
|
|
} catch {
|
|
return null
|
|
}
|
|
}
|
|
|
|
export async function updateInstructions(entry: string, content?: string) {
|
|
const res = await fetch(`${AI_SERVICE}/ai/instructions`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({ entry, content }),
|
|
})
|
|
return res.ok
|
|
}
|
|
|
|
export async function checkAiServiceStatus() {
|
|
try {
|
|
const res = await fetch(`${AI_SERVICE}/health`)
|
|
if (!res.ok) return false
|
|
const data = await res.json()
|
|
return data.status === "ok"
|
|
} catch {
|
|
return false
|
|
}
|
|
}
|