Files
botino/src/app.js
Lucas Tettamanti 5e79f17d00 20260204
2026-02-04 16:06:51 -03:00

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;
}