# “일정 기간 후 비활성 사용자 정리”의 의미와 통계

**URL:** https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999
**Category:** Data & reporting
**Created:** [11월 13, 2024, 5:24오후 UTC](https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999 "2024-11-13T17:24:38Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Jonathan5](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jonathan5/32/197134_2.png) [@Jonathan5](https://meta.discourse.org/u/Jonathan5)
#### Post date: [11월 13, 2024, 5:24오후 UTC](https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999/1 "2024-11-13T17:24:38Z")

</div>

이것은 다음과 같이 설명됩니다:

> 비활성 사용자(게시글이 없는 신뢰 수준 0)가 삭제되기 전까지의 일수. 정리 기능을 비활성화하려면 0으로 설정하세요.

이것이 기준(TL0 및 게시글 0개)인지 확인해 주실 수 있나요? 마지막으로 로그인하거나 게시글을 읽은 시점이 고려되나요, 아니면 일수가 가입 시점부터 시작되나요?

이 설정에서 특정 수치를 선택했을 때의 영향을 파악하기 위해, 게시글이 0개인 TL0 사용자와 관련 일수를 함께 보여주는 데이터 탐색기 쿼리가 있나요? 감사합니다.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [11월 13, 2024, 5:43오후 UTC](https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999/2 "2024-11-13T17:43:05Z")

</div>

추가 기준이 몇 가지 있습니다: 관리자(admin)와 중재자(moderator)는 삭제되지 않습니다.  
마지막 접속 시간과 가입 날짜도 확인됩니다.

> <https://github.com/discourse/discourse/blob/53f9c81790ca232b8dbfa9b04b7f0863cf0d16c2/app/jobs/scheduled/clean_up_inactive_users.rb#L19>

아래와 같은 쿼리가 삭제될 사용자의 수를 반환해야 한다고 생각합니다.

```sql
-- [params]
-- int :active_days_ago

SELECT COUNT(*)
FROM users
WHERE last_posted_at IS NULL
  AND trust_level = 0
  AND admin = false
  AND moderator = false
  AND created_at < CURRENT_DATE - :active_days_ago
  AND (last_seen_at < CURRENT_DATE - :active_days_ago OR last_seen_at IS NULL)
  AND NOT EXISTS (
    SELECT 1 FROM posts WHERE posts.user_id = users.id
  )
  AND NOT EXISTS (
    SELECT 1 FROM topics WHERE topics.user_id = users.id
  )

```

어떤 사용자가 삭제될지 확인하려면 이 쿼리가 작동해야 합니다.

```sql
-- [params]
-- int :active_days_ago

SELECT 
    id as user_id,
    DATE_PART('day', CURRENT_DATE - created_at) AS days_since_created,
    DATE_PART('day', CURRENT_DATE - last_seen_at) AS days_since_seen
FROM users
WHERE last_posted_at IS NULL
  AND trust_level = 0
  AND admin = false
  AND moderator = false
  AND created_at < CURRENT_DATE - :active_days_ago
  AND (last_seen_at < CURRENT_DATE - :active_days_ago OR last_seen_at IS NULL)
  AND NOT EXISTS (
    SELECT 1 FROM posts WHERE posts.user_id = users.id
  )
  AND NOT EXISTS (
    SELECT 1 FROM topics WHERE topics.user_id = users.id
  )
ORDER BY days_since_seen

```

---

<div class="post-metadata">

### Author: ![Jonathan5](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jonathan5/32/197134_2.png) [@Jonathan5](https://meta.discourse.org/u/Jonathan5)
#### Post date: [11월 13, 2024, 6:26오후 UTC](https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999/3 "2024-11-13T18:26:43Z")

</div>

감사합니다. 시도해 보겠습니다.

관리자 설정 텍스트가 잘못되었으니 업데이트가 필요합니다.

`last_seen_at`은 로그인에 기반한 건가요, 아니면 (로그인된 상태에서) 포럼의 어떤 페이지를 보든 상관없이 기반이 되는 건가요?

---

<div class="post-metadata">

### Author: ![HAWK](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/hawk/32/86627_2.png) [@HAWK](https://meta.discourse.org/u/HAWK)
#### Post date: [11월 14, 2024, 1:10오전 UTC](https://meta.discourse.org/t/clean-up-inactive-users-after-days-meaning-and-statistics/335999/4 "2024-11-14T01:10:31Z")

</div>

> [@Jonathan5](#):
>
> 또는 (로그인된 상태로) 포럼의 어떤 페이지를든 보고 있는 경우?

그렇습니다. 마지막으로 포럼을 능동적으로 열람했던 시점입니다.
