관심 가져주셔서 감사합니다, @pfaffman !
last_seen_at 값이 없고 몇 달 전에 생성되었지만 approved=False, active=False인 사용자 기록들이 삭제되지 않고 있습니다.
last_seen_at이 7일 전(몇 달 전)이고 views가 0인 사용자 기록들도 삭제되지 않고 있습니다.
해당 grace period 플래그에 사용되는 기준이 무엇이든, 이 기록들을 선택하지 못하고 있습니다.
거기에 어떤 다른 요소들이 관여하는지 이해할 수 있도록, 해당 부분에서 정확히 사용되고 있는 쿼리를 게시해 주실 수 있을까요?
아니요, 데이터베이스를 직접 살펴보면 각 기준에 해당하는 기록은 있지만 모두에 해당하는 기록은 없습니다. 데이터베이스의 users 테이블이 일관성이 없어 보입니다. views=0인데 topics_entered나 posts_read_count가 0이 아닌 기록들이 있고, topics_entered=0이고 posts_read_count=0인데 views가 0이 아닌 기록들도 있습니다.
기억해야 할 핵심은 이 사이트가 개발되던 당시 설정이 최적화되어 있지 않았으며, 인간과 봇이 모두 등록되고 있었다는 점입니다. OR 절은 이러한 모든 경우를 포착하는 것 같습니다. 이제 사이트가 (바라건대) 합리적인 설정으로 안정화되었으므로, 새로운 등록에서 같은 이상 현상이 발생하지 않을 것으로 예상합니다.
저는 다양한 기준으로 스크립트를 여러 번 실행할 예정입니다. 먼저 환경 밖에서 기록을 쿼리하고, 그런 다음 실제로 원하는 기록만 대상으로 하기 위해 silence 스크립트를 실행할 것입니다. 몇 주 후 최종 실행을 하여, 침묵(silenced)된 기록만 선택(실제로 돌아온 사용자는 플래그가 제거됨)하고 모두 삭제할 것입니다:
UserDestroyer.new(admin_user).destroy(user, reassign_to: archive_user)
제 전체적인 질문은 v0.0.2 스크립트의 선택, 로깅, 침묵 처리 방식이 Discourse 시스템에 적합한지 여부입니다. 이러한 루프에서 해야 할 다른 작업이 있는지 모르겠습니다. 저는 아직 직접 스크립트를 작성하고 실행해 본 적이 없으므로, 초보자가 흔히 하는 실수를 점검해 주시길 부탁드립니다.
감사합니다!!