Se editaba HTML a ciegas: había que guardar y generar un documento real para
saber si estaba bien. Ahora el modal tiene un panel de vista previa al lado del
editor, que se actualiza mientras se escribe y se abre solo al editar una
plantilla o al importar una con IA.
Se ejecuta la plantilla de verdad contra datos de ejemplo, no se reemplaza
texto: es la única forma de que {{range .Items}} y los campos anidados se vean
como van a salir, y de que un error de sintaxis aparezca mientras se edita en
vez de al generar el PDF. Los datos de ejemplo salen de DatosBaseDocumento,
igual que en producción, para que la vista previa no muestre una cosa y el
documento otra.
El iframe va en sandbox sin scripts ni same-origin: el HTML lo escribe un
admin, pero no tiene por qué correr con los permisos del panel.
De paso, la ayuda de variables ofrecía {{.Cliente.Nit}}, que no existe en el
modelo — el campo es Documento.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
126 lines
8.6 KiB
Go
126 lines
8.6 KiB
Go
package routes
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/sujit-baniya/fiber-boilerplate/migrations"
|
|
"github.com/sujit-baniya/fiber-boilerplate/rest/controllers"
|
|
"github.com/sujit-baniya/fiber-boilerplate/rest/middlewares"
|
|
)
|
|
|
|
// RenovacionesRoutes registra todas las rutas del módulo de renovaciones/contratos
|
|
func RenovacionesRoutes(protected fiber.Router) {
|
|
// ─── Servicios ───────────────────────────────────────────────────
|
|
protected.Get("/servicios", middlewares.MenuMiddleware, controllers.ServiciosView)
|
|
protected.Get("/api/servicios", controllers.GetServicios)
|
|
protected.Get("/api/servicios/select", controllers.GetServiciosSelect)
|
|
protected.Post("/api/servicios", controllers.CreateServicio)
|
|
protected.Put("/api/servicios/:id", controllers.UpdateServicio)
|
|
protected.Delete("/api/servicios/:id", controllers.DeleteServicio)
|
|
|
|
// ─── Clientes ────────────────────────────────────────────────────
|
|
protected.Get("/clientes", middlewares.MenuMiddleware, controllers.ClientesView)
|
|
protected.Get("/api/clientes", controllers.GetClientes)
|
|
protected.Get("/api/clientes/select", controllers.GetClientesSelect)
|
|
protected.Post("/api/clientes", controllers.CreateCliente)
|
|
protected.Put("/api/clientes/:id", controllers.UpdateCliente)
|
|
protected.Delete("/api/clientes/:id", controllers.DeleteCliente)
|
|
// Documentos de cliente
|
|
protected.Get("/api/clientes/:clienteID/documentos", controllers.GetClienteDocumentos)
|
|
protected.Post("/api/clientes/:clienteID/documentos", controllers.UploadClienteDocumentos)
|
|
protected.Delete("/api/clientes/:clienteID/documentos/:docID", controllers.DeleteClienteDocumento)
|
|
protected.Get("/api/clientes/:clienteID/documentos/:docID/download", controllers.DownloadClienteDocumento)
|
|
|
|
// ─── Contratos ───────────────────────────────────────────────────
|
|
protected.Get("/contratos", middlewares.MenuMiddleware, controllers.ContratosView)
|
|
protected.Get("/api/contratos", controllers.GetContratos)
|
|
protected.Post("/api/contratos", controllers.CreateContrato)
|
|
protected.Put("/api/contratos/:id", controllers.UpdateContrato)
|
|
protected.Delete("/api/contratos/:id", controllers.DeleteContrato)
|
|
protected.Post("/api/contratos/:id/renovar", controllers.RenovarContrato)
|
|
protected.Post("/api/contratos/:id/enviar-correo", controllers.EnviarCorreoContrato)
|
|
protected.Get("/api/contratos/:id/historial", controllers.GetHistorialContrato)
|
|
protected.Post("/api/contratos/:id/verificar-pago", controllers.VerificarPagoBold)
|
|
protected.Post("/api/contratos/:id/marcar-pagado", controllers.MarcarPagoManual)
|
|
|
|
// ─── Plantillas de correo ─────────────────────────────────────────
|
|
protected.Get("/plantillas-correo", middlewares.MenuMiddleware, controllers.PlantillasView)
|
|
protected.Get("/api/plantillas-correo", controllers.GetPlantillas)
|
|
protected.Post("/api/plantillas-correo", controllers.CreatePlantilla)
|
|
protected.Put("/api/plantillas-correo/:id", controllers.UpdatePlantilla)
|
|
protected.Delete("/api/plantillas-correo/:id", controllers.DeletePlantilla)
|
|
protected.Get("/api/plantillas-correo/:id/preview", controllers.PreviewPlantilla)
|
|
protected.Post("/api/plantillas-correo/:id/test", controllers.TestEnvioPlantilla)
|
|
protected.Post("/api/plantillas-correo/validate", controllers.ValidarPlantilla)
|
|
|
|
// ─── Reglas de notificación ───────────────────────────────────────
|
|
protected.Get("/reglas-notificacion", middlewares.MenuMiddleware, controllers.ReglasView)
|
|
protected.Get("/api/reglas-notificacion", controllers.GetReglas)
|
|
protected.Post("/api/reglas-notificacion", controllers.CreateRegla)
|
|
protected.Put("/api/reglas-notificacion/:id", controllers.UpdateRegla)
|
|
protected.Delete("/api/reglas-notificacion/:id", controllers.DeleteRegla)
|
|
|
|
// ─── Historial de notificaciones ─────────────────────────────────
|
|
protected.Get("/historial-notificaciones", middlewares.MenuMiddleware, controllers.HistorialView)
|
|
protected.Get("/api/historial-notificaciones", controllers.GetHistorial)
|
|
protected.Post("/api/historial-notificaciones/:id/reenviar", controllers.ReenviarNotificacion)
|
|
protected.Get("/api/historial-notificaciones/:id/preview", controllers.VerPreviewLog)
|
|
|
|
// ─── Configuración SMTP ───────────────────────────────────────────
|
|
protected.Get("/smtp-config", middlewares.MenuMiddleware, controllers.SmtpConfigView)
|
|
protected.Get("/api/smtp-config", controllers.GetSmtpConfig)
|
|
protected.Post("/api/smtp-config", controllers.SaveSmtpConfig)
|
|
protected.Post("/api/smtp-config/test", controllers.TestSmtpConfig)
|
|
|
|
// ─── Automatización IA: Asistente (chat propio) ───────────────────
|
|
protected.Get("/asistente", middlewares.MenuMiddleware, controllers.AsistenteView)
|
|
protected.Post("/api/asistente/chat", controllers.PostAsistenteChat)
|
|
protected.Delete("/api/asistente/historial", controllers.DeleteAsistenteHistorial)
|
|
|
|
// ─── Automatización IA: Chats autorizados del agente (Telegram) ────
|
|
protected.Get("/agente/chats-autorizados", middlewares.MenuMiddleware, controllers.AgentAuthView)
|
|
protected.Get("/api/agent/auth", controllers.AgentAuthList)
|
|
protected.Get("/api/agent/auth/recientes", controllers.AgentAuthRecientes)
|
|
protected.Post("/api/agent/auth", controllers.AgentAuthCreate)
|
|
protected.Delete("/api/agent/auth/:id", controllers.AgentAuthDelete)
|
|
|
|
// ─── Automatización IA: Plantillas de documento ────────────────────
|
|
protected.Get("/automatizacion/plantillas", middlewares.MenuMiddleware, controllers.PlantillasDocumentoView)
|
|
protected.Post("/api/plantillas-documento/importar", controllers.ImportarPlantillaDocumento)
|
|
protected.Post("/api/plantillas-documento/previsualizar", controllers.PrevisualizarPlantillaDocumento)
|
|
protected.Get("/api/plantillas-documento", controllers.GetPlantillasDocumento)
|
|
protected.Get("/api/plantillas-documento/:id", controllers.GetPlantillaDocumento)
|
|
protected.Post("/api/plantillas-documento", controllers.CreatePlantillaDocumento)
|
|
protected.Put("/api/plantillas-documento/:id", controllers.UpdatePlantillaDocumento)
|
|
protected.Delete("/api/plantillas-documento/:id", controllers.DeletePlantillaDocumento)
|
|
|
|
// ─── Automatización IA: Tarifas ─────────────────────────────────────
|
|
protected.Get("/automatizacion/tarifas", middlewares.MenuMiddleware, controllers.TarifasView)
|
|
protected.Get("/api/tarifas", controllers.GetTarifas)
|
|
protected.Post("/api/tarifas", controllers.CreateTarifa)
|
|
protected.Put("/api/tarifas/:id", controllers.UpdateTarifa)
|
|
protected.Delete("/api/tarifas/:id", controllers.DeleteTarifa)
|
|
|
|
// ─── Automatización IA: Arquitecturas ───────────────────────────────
|
|
protected.Get("/api/arquitecturas", controllers.GetArquitecturas)
|
|
protected.Post("/api/arquitecturas", controllers.CreateArquitectura)
|
|
|
|
// ─── Automatización IA: Cotizaciones y documentos generados ────────
|
|
protected.Post("/api/cotizaciones", controllers.CreateCotizacion)
|
|
protected.Post("/api/contratos/:id/generar-documento", controllers.GenerarDocumentoContrato)
|
|
protected.Get("/api/documentos-generados", controllers.GetDocumentosGenerados)
|
|
protected.Get("/api/documentos-generados/:id/download", controllers.DownloadDocumentoGenerado)
|
|
|
|
// ─── Diagnóstico ──────────────────────────────────────────────────
|
|
protected.Post("/api/diagnostico/ciclo-notificaciones", controllers.EjecutarTestCiclo)
|
|
|
|
// ─── Admin: seed de módulos (idempotente) ─────────────────────────
|
|
protected.Post("/api/admin/seed-renovaciones", func(c *fiber.Ctx) error {
|
|
migrations.SeedRenovaciones()
|
|
return c.JSON(fiber.Map{"ok": true, "message": "Seed de Renovaciones ejecutado correctamente"})
|
|
})
|
|
protected.Post("/api/admin/seed-automatizacion-ia", func(c *fiber.Ctx) error {
|
|
migrations.SeedAutomatizacionIA()
|
|
return c.JSON(fiber.Map{"ok": true, "message": "Seed de Automatización IA ejecutado correctamente"})
|
|
})
|
|
}
|