Eliminar definitivamente sin todos los obstáculos

Me encantaría tener una opción para eliminar realmente un mensaje o tema, sin que me obliguen a confirmarlo en cada paso; eso solo lo hace más difícil.

Debería bastar con una casilla de verificación que diga: “Soy consciente de lo que va a pasar y quiero hacerlo de todos modos”. No debería tener que eliminar manualmente cada mensaje en temas muy largos.

O, al igual que en Reddit, debería poder eliminar de verdad solo el primer mensaje y dejarlo vacío.

Entiendo que muchos dirán algo como “pero las respuestas pueden ser importantes para otros o para la posteridad”. No puedo enfatizar lo poco que eso importa; simplemente no nos importa si se eliminan todas las respuestas.

Y no debería tener que hacer esto con cada mensaje individual.

3 Me gusta

Creo que esto podría funcionar bien como una configuración de sitio basada en una enumeración (enum), manteniendo el comportamiento actual como predeterminado. Por ejemplo, permanent_topic_deletion_mode podría ofrecer el comportamiento actual de «requerir que cada publicación se elimine permanentemente primero» y un comportamiento opcional de «eliminar permanentemente el tema y todas sus publicaciones», que seguiría sujeto a la confirmación tipada existente. Esto preservaría la política de seguridad actual para los sitios existentes, al tiempo que permitiría a los administradores que desean explícitamente la eliminación masiva activar esta opción.

Una actualización rápida del progreso tras analizar el código existente de eliminación permanente:

Descubrí que Discourse ya cuenta con el comportamiento de eliminación en lote necesario para esto. Cuando la primera publicación se elimina de forma permanente, PostDestroyer ya puede eliminar recursivamente de forma permanente las publicaciones restantes del tema. La restricción principal radica en las comprobaciones de permisos/políticas, que actualmente requieren que las otras publicaciones se eliminen de forma permanente primero.

Por lo tanto, me he alejado del enum a nivel de sitio que sugerí anteriormente y ahora tengo una implementación funcional que utiliza un modelo de opt-in más conservador:

  • la configuración existente can_permanently_delete sigue siendo el interruptor principal
  • hay una puerta de acceso adicional a nivel de operador, oculta y desactivada por defecto
  • cuando ambas están habilitadas, cada administrador puede optar individualmente por ella en Preferencias → Interfaz
  • que un administrador opte por ello no cambia el comportamiento para ningún otro administrador
  • deshabilitar la puerta de acceso oculta restaura inmediatamente el comportamiento existente a nivel global
  • la confirmación de eliminación permanente existente y otras salvaguardas permanecen en su lugar

La preferencia está etiquetada actualmente como:

Permitir que la eliminación permanente del tema elimine todas las publicaciones

con la explicación:

Al eliminar un tema de forma permanente, también elimina de forma permanente todas las publicaciones restantes en lugar de requerir que se eliminen de forma permanente individualmente.

He añadido pruebas de política/seguridad del backend, cobertura del controlador que confirma que el tema y todas las publicaciones restantes se eliminan realmente de forma permanente, cobertura del serializador/API, y pruebas de aceptación del frontend para la visibilidad y el guardado de la preferencia. Estas están pasando.

También estoy revisando cómo registrar los cambios en esta opción de opt-in por administrador en los Registros de Acciones del Personal, ya que habilitar un modo de eliminación más destructivo parece merecer ser un evento de auditoría con marca de tiempo.

Publicaré la PR de GitHub una vez que haya terminado con eso y la revisión final.

Una actualización final: la implementación ya está disponible como una PR lista para revisión:

El diseño final es el enfoque de activación individual por administrador descrito anteriormente, en lugar de la enumeración a nivel de sitio que sugerí inicialmente.

Se añadieron algunos detalles de UX durante la revisión final:

  • la preferencia individual del administrador se muestra en Preferencias → Interfaz cuando las configuraciones a nivel de sitio lo permiten
  • cuando un administrador con la opción activada elimina permanentemente la primera publicación o tema, la confirmación irreversible ahora indica explícitamente que se eliminará permanentemente el tema y todas las respuestas
  • cuando el administrador no tiene la opción activada, el comportamiento y la redacción existentes permanecen sin cambios
  • el tiempo de espera para la eliminación permanente por el mismo administrador sigue aplicándose
  • los cambios en las preferencias se registran en los Registros de Acciones del Personal

También probé manualmente la ruta completa con la opción activada en un tema desechable con dos respuestas y verifiqué después que el tema y todas sus publicaciones habían sido eliminados de la base de datos.

Las principales pruebas y revisiones de GitHub han superado las verificaciones; la PR está ahora a la espera de revisión, con el análisis de seguridad aún en cola al momento de escribir esto.

1 me gusta