58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
import express from "express";
|
|
import cors from "cors";
|
|
import path from "path";
|
|
import { fileURLToPath } from "url";
|
|
|
|
import { createSimulatorRouter } from "./modules/1-intake/routes/simulator.js";
|
|
import { createEvolutionRouter } from "./modules/1-intake/routes/evolution.js";
|
|
import { createWooWebhooksRouter } from "./modules/2-identity/routes/wooWebhooks.js";
|
|
|
|
export function createApp({ tenantId }) {
|
|
const app = express();
|
|
|
|
app.use(cors());
|
|
app.use(express.json({ limit: "1mb" }));
|
|
|
|
// Serve /public as static (UI + webcomponents)
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
const publicDir = path.join(__dirname, "..", "public");
|
|
app.use(express.static(publicDir));
|
|
|
|
// --- Integraciones / UI ---
|
|
app.use(createSimulatorRouter({ tenantId }));
|
|
app.use(createEvolutionRouter());
|
|
app.use(createWooWebhooksRouter());
|
|
|
|
// Home (UI)
|
|
app.get("/", (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
|
|
// SPA catch-all - sirve index.html para todas las rutas del frontend
|
|
const spaRoutes = [
|
|
'/chat', '/conversaciones', '/usuarios', '/productos',
|
|
'/equivalencias', '/crosssell', '/cantidades', '/pedidos', '/test',
|
|
'/config-prompts', '/atencion-humana', '/configuracion'
|
|
];
|
|
app.get(spaRoutes, (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
// Rutas con parámetros
|
|
app.get('/usuarios/:id', (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
app.get('/productos/:id', (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
app.get('/crosssell/:id', (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
app.get('/pedidos/:id', (req, res) => {
|
|
res.sendFile(path.join(publicDir, "index.html"));
|
|
});
|
|
|
|
return app;
|
|
}
|
|
|