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