Gracias por tu interés, @pfaffman!
Hay registros de usuarios sin last_seen_at, creados hace meses, approved=False, active=False, y no se están purgando.
Hay registros de usuarios con last_seen_at > 7 días (meses de antigüedad) y 0 vistas, y no se están purgando.
Cualquiera que sea el criterio utilizado con esa bandera de período de gracia, no está seleccionando estos registros.
¿Puede alguien publicar la consulta exacta que se está utilizando para que pueda entender qué otros factores están involucrados?
No, mirando la base de datos directamente hay registros de usuarios que cumplen cada criterio pero no todos. Parece que la tabla de usuarios en la base de datos es inconsistente. Hay registros con topics_entered o posts_read_count distintos de cero, pero con views=0. Hay registros con topics_entered=0 y posts_read_count=0, pero views es distinto de cero.
El punto clave a recordar es que a medida que este sitio se desarrollaba, la configuración no era óptima y se registraban humanos y bots. La cláusula OR parece capturar a todos estos. Ahora que el sitio está estabilizado con (espero) configuraciones sensatas, no espero que los nuevos registros generen las mismas anomalías.
Tengo la intención de ejecutar el script muchas veces con diferentes criterios. Consultaré los registros primero, fuera del entorno, y luego ejecutaré el script de silencio para apuntar solo a los registros que realmente quiero. En un par de semanas haré una ejecución final, solo seleccionaré registros silenciados (a cualquiera que realmente haya regresado se le quitará la bandera) y purgaré a todos:
UserDestroyer.new(admin_user).destroy(user, reassign_to: archive_user)
Mi pregunta general es si el script v0.0.2, con su enfoque de selección, registro y silencio, es correcto para un sistema Discourse. No sé si hay algo más que hacer en un bucle como este. Nunca he creado y ejecutado mi propio script, así que esta es una solicitud para que me revisen si cometí errores de novato.
¡Gracias!