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:
Lizandro GD
2026-08-03 00:45:58 +00:00
co-authored by Claude Sonnet 5
parent 772a4a5656
commit 516220a8a1
32 changed files with 2272 additions and 132 deletions
+34
View File
@@ -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"})
})
}