Corrección de Alcance en Servicios para evitar contenido viral no deseado
En el proyecto devlog-ist/landing, que se encarga de la página de aterrizaje, nos encontramos con un problema sutil pero importante relacionado con el alcance de las consultas en dos de nuestros servicios principales: MarkdownResponseService y HomeService.
El Problema
Detectamos que algunos posts virales, destinados a un contexto específico, estaban apareciendo en lugares donde no debían, concretamente en la página de inicio generada mediante Markdown y en la caché utilizada para la detección de idiomas. Esto comprometía la coherencia y la relevancia del contenido presentado a los usuarios.
La Causa
La raíz del problema residía en la falta de un alcance (scope) adecuado en las consultas realizadas por los servicios mencionados. Al no especificar un alcance concreto, las consultas recuperaban todos los posts, incluyendo aquellos que no deberían mostrarse en esos contextos particulares.
La Solución
La solución implementada consistió en añadir el alcance forPortfolio a las consultas realizadas por MarkdownResponseService y HomeService. Este alcance asegura que solo se recuperen los posts relevantes para el portafolio, excluyendo aquellos que no cumplen con los criterios necesarios.
Para ilustrarlo, supongamos que tenemos una función que recupera los posts:
public function getPosts()
{
return Post::forPortfolio()->get();
}
Aquí, forPortfolio() es un scope que define la lógica para filtrar los posts que pertenecen al portafolio. Al aplicar este scope, garantizamos que solo se recuperen los posts adecuados.
El Resultado
Tras aplicar esta corrección, los posts virales dejaron de aparecer en la página de inicio y en la caché de detección de idiomas, restaurando la coherencia y la relevancia del contenido presentado a los usuarios. Esta mejora contribuye a una experiencia de usuario más consistente y satisfactoria.
Lecciones Aprendidas
Esta experiencia subraya la importancia de definir cuidadosamente el alcance de las consultas, especialmente en aplicaciones complejas donde el contenido se presenta en múltiples contextos. Un alcance adecuado asegura que los datos recuperados sean siempre relevantes y coherentes, evitando problemas de visualización y mejorando la calidad general de la aplicación.