32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
/**
|
|
* AI 어시스턴트 API 프록시
|
|
* - /api/ai/v1/* 요청을 AI 서비스(기본 3100 포트)로 전달
|
|
* - VEXPLOR와 같은 서비스로 쓰려면: 프론트(9771) → 백엔드(8080) → 여기서 3100으로 프록시
|
|
*/
|
|
import { createProxyMiddleware } from "http-proxy-middleware";
|
|
import type { RequestHandler } from "express";
|
|
|
|
const AI_SERVICE_URL =
|
|
process.env.AI_ASSISTANT_SERVICE_URL || "http://127.0.0.1:3100";
|
|
|
|
const aiAssistantProxy: RequestHandler = createProxyMiddleware({
|
|
target: AI_SERVICE_URL,
|
|
changeOrigin: true,
|
|
pathRewrite: { "^/api/ai/v1": "/api/v1" },
|
|
// 대상 서비스 미기동 시 502 등 에러 처리 (v3 타입에 없을 수 있음)
|
|
onError: (_err, _req, res) => {
|
|
if (!res.headersSent) {
|
|
res.status(502).json({
|
|
success: false,
|
|
error: {
|
|
code: "AI_SERVICE_UNAVAILABLE",
|
|
message:
|
|
"AI 어시스턴트 서비스를 사용할 수 없습니다. AI 서비스(기본 3100 포트)를 기동한 뒤 다시 시도하세요.",
|
|
},
|
|
});
|
|
}
|
|
},
|
|
} as Parameters<typeof createProxyMiddleware>[0]);
|
|
|
|
export default aiAssistantProxy;
|