package routes import ( "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/rest/controllers" ) // RegistrarRutasUmind monta los mismos handlers de uMind bajo dos prefijos: // /app/umind para el staff y /portal/umind para el cliente. Una sola // implementación, dos historias de autenticación — duplicar los handlers sería // duplicar también las chances de que uno se olvide un chequeo de alcance. // // scope decide QUÉ tenants ve el que llama (UmindScopeStaff/UmindScopePortal). // escritura middleware extra para POST/PUT/DELETE (SoloAdmin del lado staff; // nil del lado del cliente, que ya está acotado por su scope). // // El CRUD de tenants NO se registra acá a propósito: crear/borrar tenants y // asignarles cliente y plan es del staff, el cliente solo administra lo que // hay adentro. func RegistrarRutasUmind(g fiber.Router, scope fiber.Handler, escritura fiber.Handler) { // Concatena el scope con el middleware de escritura, si lo hay. El scope // va SIEMPRE, también en las lecturas. w := func(h ...fiber.Handler) []fiber.Handler { out := []fiber.Handler{scope} if escritura != nil { out = append(out, escritura) } return append(out, h...) } r := func(h ...fiber.Handler) []fiber.Handler { return append([]fiber.Handler{scope}, h...) } g.Get("/umind/tenants", r(controllers.GetUmindTenants)...) g.Get("/umind/agentes", r(controllers.GetUmindAgentesHandler)...) g.Post("/umind/agentes", w(controllers.CreateUmindAgenteHandler)...) g.Put("/umind/agentes/:id", w(controllers.UpdateUmindAgenteHandler)...) g.Post("/umind/agentes/:id/duplicar", w(controllers.DuplicarUmindAgenteHandler)...) g.Delete("/umind/agentes/:id", w(controllers.DeleteUmindAgenteHandler)...) g.Get("/umind/plantillas-rubro", r(controllers.GetPlantillasRubroHandler)...) g.Get("/umind/documentos", r(controllers.GetUmindDocumentosHandler)...) g.Post("/umind/documentos", w(controllers.CreateUmindDocumentoHandler)...) g.Post("/umind/documentos/texto", w(controllers.CreateUmindTextoHandler)...) g.Post("/umind/documentos/archivo", w(controllers.CreateUmindArchivoHandler)...) g.Put("/umind/documentos/:id", w(controllers.ActualizarUmindDocumentoHandler)...) g.Post("/umind/documentos/:id/reprocesar", w(controllers.ReprocesarUmindDocumentoHandler)...) g.Delete("/umind/documentos/:id", w(controllers.DeleteUmindDocumentoHandler)...) g.Get("/umind/sesiones", r(controllers.GetUmindSesionesHandler)...) g.Get("/umind/historial", r(controllers.GetUmindHistorialHandler)...) g.Get("/umind/tools", r(controllers.GetUmindHerramientasHandler)...) g.Post("/umind/tools", w(controllers.CreateUmindHerramientaHandler)...) g.Put("/umind/tools/:id", w(controllers.UpdateUmindHerramientaHandler)...) g.Delete("/umind/tools/:id", w(controllers.DeleteUmindHerramientaHandler)...) g.Get("/umind/canales", r(controllers.GetUmindCanalesHandler)...) g.Post("/umind/canales", w(controllers.CreateUmindCanalHandler)...) g.Put("/umind/canales/:id", w(controllers.UpdateUmindCanalHandler)...) g.Delete("/umind/canales/:id", w(controllers.DeleteUmindCanalHandler)...) g.Post("/umind/chat", r(controllers.UmindChatPruebaHandler)...) g.Get("/umind/conexiones", r(controllers.GetUmindConexionesHandler)...) g.Get("/umind/conexiones/conectar", w(controllers.UmindConectarHandler)...) g.Delete("/umind/conexiones/:id", w(controllers.DeleteUmindConexionHandler)...) g.Get("/umind/eventos", r(controllers.GetUmindEventosHandler)...) g.Get("/umind/uso", r(controllers.GetUmindUsoHandler)...) g.Get("/umind/ai-configs", r(controllers.GetUmindAiConfigsHandler)...) g.Get("/umind/reporte.xlsx", r(controllers.GetUmindReporteHandler)...) }