Fix-Feat: Invalida la caché al modificar fuentes de contexto. Añade selector de contenido de contexto.

Se soluciona un bug donde el chatbot no reconocía las nuevas fuentes de conocimiento o los items de contexto añadidos desde el panel de administración hasta que la API se reiniciaba.

Ahora, el AdminController borra la caché correspondiente después de cada operación de Crear, Actualizar o Eliminar. Esto fuerza al chatbot a recargar la información desde la base de datos en la siguiente petición, haciendo que los cambios se reflejen de forma inmediata.

Se añade un nuevo campo para determinar el selector de contenido dentro de la web al momento de realizar el scrap.
This commit is contained in:
2025-11-25 11:46:52 -03:00
parent 9245aae0ec
commit 119fea13a5
9 changed files with 489 additions and 26 deletions

View File

@@ -2,6 +2,8 @@
using ChatbotApi.Data.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Caching.Memory;
using ChatbotApi.Services;
namespace ChatbotApi.Controllers
{
@@ -11,10 +13,12 @@ namespace ChatbotApi.Controllers
public class AdminController : ControllerBase
{
private readonly AppContexto _context;
private readonly IMemoryCache _cache;
public AdminController(AppContexto context)
public AdminController(AppContexto context, IMemoryCache cache)
{
_context = context;
_cache = cache;
}
// GET: api/admin/contexto
@@ -36,6 +40,10 @@ namespace ChatbotApi.Controllers
item.FechaActualizacion = DateTime.UtcNow;
_context.ContextoItems.Add(item);
await _context.SaveChangesAsync();
// Invalida la caché de KnowledgeItems
_cache.Remove(CacheKeys.KnowledgeItems);
return CreatedAtAction(nameof(GetAllContextoItems), new { id = item.Id }, item);
}
@@ -58,6 +66,9 @@ namespace ChatbotApi.Controllers
existingItem.FechaActualizacion = DateTime.UtcNow;
await _context.SaveChangesAsync();
// Invalida la caché de KnowledgeItems
_cache.Remove(CacheKeys.KnowledgeItems);
return NoContent();
}
@@ -72,6 +83,9 @@ namespace ChatbotApi.Controllers
}
_context.ContextoItems.Remove(item);
await _context.SaveChangesAsync();
// Invalida la caché de KnowledgeItems
_cache.Remove(CacheKeys.KnowledgeItems);
return NoContent();
}
@@ -100,6 +114,10 @@ namespace ChatbotApi.Controllers
{
_context.FuentesDeContexto.Add(fuente);
await _context.SaveChangesAsync();
// Invalida la caché de FuentesDeContexto
_cache.Remove(CacheKeys.FuentesDeContexto);
return CreatedAtAction(nameof(GetAllFuentes), new { id = fuente.Id }, fuente);
}
@@ -129,6 +147,9 @@ namespace ChatbotApi.Controllers
}
}
// Invalida la caché de FuentesDeContexto
_cache.Remove(CacheKeys.FuentesDeContexto);
return NoContent();
}
@@ -144,6 +165,9 @@ namespace ChatbotApi.Controllers
_context.FuentesDeContexto.Remove(fuente);
await _context.SaveChangesAsync();
// Invalida la caché de FuentesDeContexto
_cache.Remove(CacheKeys.FuentesDeContexto);
return NoContent();
}
}