feat: automatización de cotizaciones, contratos, actas y cuentas de cobro con IA
Implementa las 4 fases de la especificación de automatización: módulo de plantillas/tarifas editable por el equipo, generación de PDF (HTML+JS vía Chrome headless) para cotizaciones/contratos/arquitecturas/cuentas de cobro, chat propio en el dashboard reutilizando el mismo motor y tools del bot de Telegram, y nuevas tools del agente para crear estos documentos end-to-end. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
772a4a5656
commit
516220a8a1
@@ -104,6 +104,7 @@ func AdminApiRoutes(api fiber.Router) {
|
||||
h.Get("/contratos/:id/historial", controllers.GetHistorialContrato)
|
||||
h.Post("/contratos/:id/verificar-pago", controllers.VerificarPagoBold)
|
||||
h.Post("/contratos/:id/marcar-pagado", controllers.MarcarPagoManual)
|
||||
h.Post("/contratos/:id/generar-documento", controllers.GenerarDocumentoContrato)
|
||||
|
||||
// ─── Plantillas de correo ────────────────────────────────────────────────
|
||||
h.Get("/plantillas-correo", controllers.GetPlantillas)
|
||||
@@ -218,6 +219,7 @@ func AdminApiRoutes(api fiber.Router) {
|
||||
h.Post("/contabilidad/cuentas-cobro", controllers.CreateCuentaCobro)
|
||||
h.Put("/contabilidad/cuentas-cobro/:id", controllers.UpdateCuentaCobro)
|
||||
h.Delete("/contabilidad/cuentas-cobro/:id", controllers.DeleteCuentaCobro)
|
||||
h.Post("/contabilidad/cuentas-cobro/:id/generar-documento", controllers.GenerarDocumentoCuentaCobro)
|
||||
// Cuentas por pagar
|
||||
h.Get("/contabilidad/cuentas-pagar", controllers.GetCuentasPagar)
|
||||
h.Post("/contabilidad/cuentas-pagar", controllers.CreateCuentaPagar)
|
||||
@@ -401,6 +403,30 @@ func AdminApiRoutes(api fiber.Router) {
|
||||
h.Delete("/agent/auth/:id", controllers.AgentAuthDelete)
|
||||
h.Delete("/agent/history/:chat_id", controllers.AgentHistoryClear)
|
||||
|
||||
// ─── Automatización IA: Cotizaciones ─────────────────────────────────────
|
||||
h.Post("/cotizaciones", controllers.CreateCotizacion)
|
||||
|
||||
// ─── Automatización IA: Arquitecturas ────────────────────────────────────
|
||||
h.Get("/arquitecturas", controllers.GetArquitecturas)
|
||||
h.Post("/arquitecturas", controllers.CreateArquitectura)
|
||||
|
||||
// ─── Automatización IA: Historial de documentos generados ───────────────
|
||||
h.Get("/documentos-generados", controllers.GetDocumentosGenerados)
|
||||
h.Get("/documentos-generados/:id/download", controllers.DownloadDocumentoGenerado)
|
||||
|
||||
// ─── Automatización IA: Plantillas de documento ─────────────────────────
|
||||
h.Get("/plantillas-documento", controllers.GetPlantillasDocumento)
|
||||
h.Get("/plantillas-documento/:id", controllers.GetPlantillaDocumento)
|
||||
h.Post("/plantillas-documento", controllers.CreatePlantillaDocumento)
|
||||
h.Put("/plantillas-documento/:id", controllers.UpdatePlantillaDocumento)
|
||||
h.Delete("/plantillas-documento/:id", controllers.DeletePlantillaDocumento)
|
||||
|
||||
// ─── Automatización IA: Tarifas ──────────────────────────────────────────
|
||||
h.Get("/tarifas", controllers.GetTarifas)
|
||||
h.Post("/tarifas", controllers.CreateTarifa)
|
||||
h.Put("/tarifas/:id", controllers.UpdateTarifa)
|
||||
h.Delete("/tarifas/:id", controllers.DeleteTarifa)
|
||||
|
||||
// ─── VCard API ───────────────────────────────────────────────────────────
|
||||
h.Get("/vcard-api/config", controllers.VcardApiGetConfig)
|
||||
h.Get("/vcard-api/usuarios", controllers.VcardApiUsuarios)
|
||||
|
||||
@@ -71,6 +71,36 @@ func RenovacionesRoutes(protected fiber.Router) {
|
||||
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: Plantillas de documento ────────────────────
|
||||
protected.Get("/automatizacion/plantillas", middlewares.MenuMiddleware, controllers.PlantillasDocumentoView)
|
||||
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)
|
||||
|
||||
@@ -79,4 +109,8 @@ func RenovacionesRoutes(protected fiber.Router) {
|
||||
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"})
|
||||
})
|
||||
}
|
||||
|
||||
+11
-10
@@ -47,13 +47,13 @@ func UserRoutes(app fiber.Router) {
|
||||
protected.Delete("/submodules/:id", controllers.DeleteSubmodule) // Eliminar un módulo
|
||||
|
||||
// Rutas de usuarios
|
||||
protected.Get("/users", middlewares.MenuMiddleware, controllers.Users) // Renderizar la vista
|
||||
protected.Get("/loadusers", controllers.GetUsers) // Obtener
|
||||
protected.Post("/users", controllers.CreateUser) // Crear
|
||||
protected.Put("/users/:id", controllers.UpdateUser) // Actualizar
|
||||
protected.Put("/password/:id", controllers.UpdatePassword) // Actualizar
|
||||
protected.Delete("/users/:id", controllers.DeleteUser) // Eliminar
|
||||
protected.Get("/user/:id", controllers.GetUser) // Buscar un usuario
|
||||
protected.Get("/users", middlewares.MenuMiddleware, controllers.Users) // Renderizar la vista
|
||||
protected.Get("/loadusers", controllers.GetUsers) // Obtener
|
||||
protected.Post("/users", controllers.CreateUser) // Crear
|
||||
protected.Put("/users/:id", controllers.UpdateUser) // Actualizar
|
||||
protected.Put("/password/:id", controllers.UpdatePassword) // Actualizar
|
||||
protected.Delete("/users/:id", controllers.DeleteUser) // Eliminar
|
||||
protected.Get("/user/:id", controllers.GetUser) // Buscar un usuario
|
||||
protected.Post("/users/:id/credenciales", controllers.EnviarCredencialesUsuario) // Enviar credenciales
|
||||
|
||||
// Rutas de conexiones ssh
|
||||
@@ -486,9 +486,9 @@ func UserRoutes(app fiber.Router) {
|
||||
|
||||
// ─── Contabilidad ─────────────────────────────────────────────────────────
|
||||
protected.Get("/contabilidad", middlewares.MenuMiddleware, controllers.ContabilidadIndex)
|
||||
protected.Get("/contabilidad/dashboard", controllers.ContabilidadDashboard)
|
||||
protected.Get("/contabilidad/consolidado", controllers.ContabilidadConsolidado)
|
||||
protected.Get("/contabilidad/consolidados", controllers.ContabilidadListConsolidados)
|
||||
protected.Get("/contabilidad/dashboard", controllers.ContabilidadDashboard)
|
||||
protected.Get("/contabilidad/consolidado", controllers.ContabilidadConsolidado)
|
||||
protected.Get("/contabilidad/consolidados", controllers.ContabilidadListConsolidados)
|
||||
|
||||
// Transacciones
|
||||
protected.Get("/contabilidad/transacciones", middlewares.MenuMiddleware, controllers.ContabilidadTransaccionesView)
|
||||
@@ -519,6 +519,7 @@ protected.Get("/contabilidad/consolidados", controllers.ContabilidadListConsolid
|
||||
protected.Post("/contabilidad/cuentas-cobro", controllers.CreateCuentaCobro)
|
||||
protected.Put("/contabilidad/cuentas-cobro/:id", controllers.UpdateCuentaCobro)
|
||||
protected.Delete("/contabilidad/cuentas-cobro/:id", controllers.DeleteCuentaCobro)
|
||||
protected.Post("/contabilidad/cuentas-cobro/:id/generar-documento", controllers.GenerarDocumentoCuentaCobro)
|
||||
|
||||
// Cuentas por pagar
|
||||
protected.Get("/contabilidad/cuentas-pagar", middlewares.MenuMiddleware, controllers.ContabilidadPagarView)
|
||||
|
||||
Reference in New Issue
Block a user