diff --git a/ChatbotApi/Constrollers/ChatController.cs b/ChatbotApi/Constrollers/ChatController.cs index 56a2fad..dd0b3cc 100644 --- a/ChatbotApi/Constrollers/ChatController.cs +++ b/ChatbotApi/Constrollers/ChatController.cs @@ -9,7 +9,7 @@ using Microsoft.AspNetCore.RateLimiting; using Microsoft.Extensions.Caching.Memory; using System.Runtime.CompilerServices; using System.Text.Json; -using Microsoft.EntityFrameworkCore; +using System.Globalization; // Clases de Request/Response public class GenerationConfig @@ -220,7 +220,7 @@ namespace ChatbotApi.Controllers _logger.LogInformation("Ejecutando intención: Noticias de Portada."); // 1. Obtenemos la lista de artículos de la portada. - var articles = await GetWebsiteNewsAsync(_siteUrl, 25); + var articles = await GetWebsiteNewsAsync(_siteUrl, 50); // 2. Usamos la IA para encontrar el mejor artículo. var bestMatch = await FindBestMatchingArticleAsync(userMessage, articles); @@ -271,6 +271,24 @@ namespace ChatbotApi.Controllers var promptBuilder = new StringBuilder(); promptBuilder.AppendLine("INSTRUCCIONES:"); promptBuilder.AppendLine("Eres DiaBot, el asistente virtual del periódico El Día. Tu personalidad es profesional, servicial y concisa. Responde siempre en español Rioplatense."); + // CONTEXTO FIJO + try + { + // Forzamos la zona horaria de Argentina para ser independientes de la configuración del servidor. + var argentinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("America/Argentina/Buenos_Aires"); + var localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, argentinaTimeZone); + var formattedTime = localTime.ToString("dddd, dd/MM/yyyy HH:mm 'Hs.'", new CultureInfo("es-AR")); + + promptBuilder.AppendLine("\n--- CONTEXTO FIJO ESPACIO-TEMPORAL (Tu Identidad) ---"); + promptBuilder.AppendLine($"Tu base de operaciones y el foco principal de tus noticias es La Plata, Provincia de Buenos Aires, Argentina."); + promptBuilder.AppendLine($"La fecha y hora actual en La Plata es: {formattedTime}."); + promptBuilder.AppendLine("Usa esta información para dar contexto a las noticias y responder preguntas sobre el día o la ubicación."); + promptBuilder.AppendLine("--------------------------------------------------"); + } + catch(Exception ex) + { + _logger.LogWarning(ex, "No se pudo determinar la zona horaria de Argentina. El contexto de tiempo será omitido."); + } promptBuilder.AppendLine(promptInstructions); promptBuilder.AppendLine("NUNCA INVENTES información. Si la respuesta no está en el contexto, indica amablemente que no encontraste la información."); promptBuilder.AppendLine("\nCONTEXTO:\n---");