Home Projects Portfolio Dashboard Export PDF Log in
PHP

Implementación de un sistema robusto de reporte de publicaciones

En el proyecto devlog-ist/landing, hemos trabajado recientemente en la implementación de una funcionalidad completa de reporte de publicaciones. Este sistema permite a los usuarios notificar contenido sensible o inapropiado, mejorando la seguridad y la moderación de la plataforma.

Arquitectura del sistema de reportes

El flujo de trabajo comienza cuando un usuario envía una solicitud de reporte a través de un endpoint dedicado. La lógica implementada asegura que cada reporte sea validado, persistido en la base de datos y que dispare notificaciones automáticas para los propietarios del contenido.

Para evitar abusos, hemos incorporado límites de tasa (rate-limiting) basados tanto en la dirección IP como en el correo electrónico del usuario.

Aspectos técnicos destacados

  1. Gestión de estados y enums: Introdujimos un modelo PostReport junto con un enum para categorizar los motivos del reporte, lo que facilita la escalabilidad de las razones de moderación.
  2. Internacionalización (i18n): Basándonos en las revisiones de código, hemos migrado todas las cadenas de texto expuestas al usuario a archivos de traducción. Esto incluye etiquetas de estado, mensajes de error y contenido de correos electrónicos.
  3. Robustez en notificaciones: Las notificaciones de reporte se gestionan mediante trabajos en cola (queued jobs), garantizando que el rendimiento de la aplicación no se vea afectado durante el envío de correos. Se implementaron guardas contra valores nulos en las relaciones de las publicaciones, evitando errores si una publicación es eliminada antes de que el correo sea procesado.
  4. Configuración de usuario: Se agregaron opciones de privacidad en la configuración de la cuenta, permitiendo a los usuarios gestionar el comportamiento frente a contenido reportado mediante nuevos indicadores booleanos.

Buenas prácticas aplicadas

El proceso de desarrollo enfatizó la calidad del código, asegurando que el sistema sea resistente a fallos. La estandarización de las etiquetas de estado mediante el uso de claves de traducción, en lugar de cadenas de texto fijas, garantiza una experiencia coherente para nuestros usuarios en diversos idiomas.

Gerardo Ruiz

Gerardo Ruiz

Author

Share: