From f8b352eb03595d01a3d4cc8145cabf770e20ab4d Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 28 May 2026 22:44:42 -0500 Subject: [PATCH] add logo_url to landing questions; add color/foto_perfil extraction to vcard --- pkg/models/landing_session.go | 1 + rest/controllers/api/landing_controller.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/models/landing_session.go b/pkg/models/landing_session.go index 9f873aa..a60c834 100644 --- a/pkg/models/landing_session.go +++ b/pkg/models/landing_session.go @@ -20,6 +20,7 @@ type LandingSession struct { UserWebsite string `json:"user_website" gorm:"column:user_website"` UserAddress string `json:"user_address" gorm:"column:user_address"` SocialMedia string `json:"social_media" gorm:"column:social_media"` + LogoUrl string `json:"logo_url" gorm:"column:logo_url"` // Historial de mensajes almacenado como JSON AnswersJSON string `json:"-" gorm:"column:answers_json;type:text"` HTMLContent string `json:"html_content,omitempty" gorm:"column:html_content;type:text"` diff --git a/rest/controllers/api/landing_controller.go b/rest/controllers/api/landing_controller.go index 391fe21..1cab70b 100644 --- a/rest/controllers/api/landing_controller.go +++ b/rest/controllers/api/landing_controller.go @@ -56,6 +56,7 @@ var landingQuestions = []struct { {"user_phone", "¿Cuál es tu número de teléfono o WhatsApp de contacto?"}, {"user_email", "¿Cuál es tu correo electrónico de contacto?"}, {"user_website", "¿Cuál es tu sitio web o portafolio?"}, + {"logo_url", "¿Tienes un logo? Comparte la URL de tu logo (o escribe \"no\" si no tienes)"}, {"social_media", "¿Qué redes sociales tienes? Comparte tus perfiles de Instagram, LinkedIn, YouTube, TikTok, etc. (Ej: Instagram: @tunombre, LinkedIn: /in/tunombre)"}, {"user_address", "¿Tienes una dirección física o ciudad donde operas?"}, {"extras", "¿Hay algo más que quieras incluir? Testimonios, precios, galería, FAQ... (O escribe \"listo\" para generar ya tu landing)"}, @@ -95,7 +96,7 @@ func LandingChat(c *fiber.Ctx) error { msgs = append(msgs, models.LandingMessage{Role: "user", Content: req.Message}) // Guardar campo estructurado si corresponde - contactFields := map[string]bool{"user_name": true, "user_phone": true, "user_email": true, "user_website": true, "social_media": true, "user_address": true} + contactFields := map[string]bool{"user_name": true, "user_phone": true, "user_email": true, "user_website": true, "logo_url": true, "social_media": true, "user_address": true} if userAnswersCount < len(landingQuestions) { key := landingQuestions[userAnswersCount].Key if contactFields[key] { @@ -108,6 +109,8 @@ func LandingChat(c *fiber.Ctx) error { session.UserEmail = req.Message case "user_website": session.UserWebsite = req.Message + case "logo_url": + session.LogoUrl = req.Message case "social_media": session.SocialMedia = req.Message case "user_address": @@ -166,6 +169,7 @@ func LandingGetSession(c *fiber.Ctx) error { "user_website": session.UserWebsite, "user_address": session.UserAddress, "social_media": session.SocialMedia, + "logo_url": session.LogoUrl, "vcard_included": session.VcardIncluded, } // Solo exponer el HTML si la sesión está generada (preview con marca de agua siempre)