안녕하세요, @pfaffman . 명절 축하드리고 답변 감사합니다!
명확하게 설명하기 위해 플로우 차트를 만들어 보았습니다:
flowchart TB
A0(사용자가 카테고리 A 또는 B에서 새 주제 생성 시도) --> A1{사용자가 면제 그룹<br>(관리자, 모더레이터, TL3, TL4, 구독자)에 속해 있는가?}
A1 -- 아니요 --> B1(사용자의 카테고리 A, B 또는 C에서<br>마지막 주제 확인, 숨겨지거나 삭제된 기록 포함)
A1 -- 예 --> Z1(게시 허용)
B1 --> B2{해당 마지막 주제가<br>14일 이내에 생성되었는가?}
B2 -- 예 --> C1(게시 차단 + 오류 표시,<br>쿨다운 시간 표시,<br>규칙 링크 제공)
C1 --> E1(초안 저장 +<br>제출 버튼 비활성화) ---> End(종료)
B2 -- 아니요 --> D1(게시 허용)
D1 --> End(종료)
Z1 --> End(종료)
그리고 명확히 하기 위해 간단한 스펙도 만들어 보았습니다
```mermaid
flowchart TB
A0(사용자가 카테고리 A 또는 B에서 새 주제 생성 시도) --> A1{사용자가 면제 그룹<br>(관리자, 모더레이터, TL3, TL4, 구독자)에 속해 있는가?}
A1 -- 아니요 --> B1(사용자의 카테고리 A, B 또는 C에서<br>마지막 주제 확인, 숨겨지거나 삭제된 기록 포함)
A1 -- 예 --> Z1(게시 허용)
B1 --> B2{해당 마지막 주제가<br>14일 이내에 생성되었는가?}
B2 -- 예 --> C1(게시 차단 + 오류 표시,<br>쿨다운 시간 표시,<br>규칙 링크 제공)
C1 --> E1(초안 저장 +<br>제출 버튼 비활성화) ---> End(종료)
B2 -- 아니요 --> D1(게시 허용)
D1 --> End(종료)
Z1 --> End(종료)
플로우 설명
-
A0: 사용자가 카테고리 A 또는 B에서 새 주제 생성을 시작합니다.
-
A1: 시스템이 사용자가 다음 면제 그룹 중 하나에 속하는지 확인합니다:
• 관리자 (Administrators)
• 모더레이터 (Moderators)
• 신뢰 수준 3 (TL3)
• 신뢰 수준 4 (TL4)
• 사용자 정의 “구독자 (Subscribers)” 그룹
• 예인 경우, 쿨다운 확인을 건너뛰고 즉시 게시를 허용합니다 (Z1).
• 아니요인 경우, B1로 진행합니다.
-
B1: 시스템은 사용자의 카테고리 A, B 또는 C에서 마지막으로 생성한 주제를 검색합니다. 이 검색에는 다음이 포함되어야 합니다:
• 소프트 삭제된 주제 (데이터베이스에서 영구적으로 제거되지 않은 경우).
• 숨겨지거나 컴플라이언스 카테고리로 이동된 주제 (예: 카테고리 C).
-
B2: 시스템은 해당 마지막 주제의 생성일이 최근 14일 이내인지 확인합니다.
• 예 → C1로 진행 (게시 차단).
• 아니요 → D1로 진행 (게시 허용).
-
C1: 시스템은 사용자가 여전히 쿨다운 상태임을 알리는 오류 메시지를 표시합니다. 메시지에는 다음이 포함되어야 합니다:
• 아직 게시할 수 없다는 간단한 문구.
• 일(day)과 시간(hour) 단위로 남은 시간 (분 표시 불필요).
• 커뮤니티 규칙 페이지에 대한 링크 (아래에 제공됨).
-
E1: 오류 표시 후, 사용자의 내용은 자동으로 초안으로 저장되며 “제출” 또는 “주제 생성” 버튼이 비활성화됩니다.
-
D1: 사용자의 마지막 주제 생성 이후 14일 이상이 지난 경우, 시스템은 새 주제 게시를 허용합니다.
-
Z1: 사용자가 면제 그룹에 속해 있으므로 제한 없이 게시할 수 있습니다.
2. 상세 사양 (Detailed Specification)
2.1 제한 그룹 vs. 면제 그룹
• 제한 그룹 (Restricted Groups):
• 다음 면제 그룹에 속하지 않는 모든 사용자 (일반적으로 TL0, TL1, TL2).
• 면제 그룹 (Exempt Groups):
- 관리자 (Administrators)
- 모더레이터 (Moderators)
- 신뢰 수준 3 (TL3)
- 신뢰 수준 4 (TL4)
- 구독자 (Subscribers) (사용자 정의 그룹)
이러한 면제 그룹은 14일 확인을 완전히 건너뜁니다.
2.2 대상 카테고리
• 새 주제 생성 시도:
• 제한 그룹에 속한 사용자가 카테고리 A 또는 B에서 새 주제를 생성하려고 할 때 트리거됩니다.
• 마지막 주제 확인:
• 시스템은 사용자의 카테고리 A, B 또는 C에서 마지막으로 생성한 주제를 확인합니다 (C는 “숨겨진” 또는 “컴플라이언스” 카테고리임).
참고: 카테고리 C는 사용자의 주제가 삭제/숨김/컴플라이언스 목적으로 이동된 상황을 포착하기 위해 포함됩니다. 사용자가 최근 14일 이내에 카테고리 C에서 주제를 생성했다면, 이 경우에도 쿨다운에 포함됩니다.
2.3 14일 쿨다운 로직
• 사용자의 가장 최근 주제 (A/B/C 중)가 14일 이내에 생성된 경우, A 또는 B에서의 새 주제 생성을 차단합니다.
• 14일 이상이 지난 경우, 허용합니다.
시간 계산
• 남은 시간을 일(day)과 시간(hour) 단위로 표시합니다 (예: “남은 시간 3일 12시간”).
• 분이나 초를 표시할 필요는 없습니다.
2.4 차단 및 초안 저장
• 차단 동작 (Blocking Behavior):
• 사용자가 차단되면 오류 메시지(C1)를 표시합니다.
• 시스템은 사용자의 내용을 자동으로 초안으로 저장합니다.
• 사용자가 진행할 수 없도록 “제출” 버튼이 비활성화됩니다.
• 오류 메시지 예시 (단순화됨):
죄송합니다, 아직 이 카테고리에서 새 주제를 생성할 수 없습니다.
마지막 주제가 14일 이내에 게시되었으며,
다시 게시할 수 있기까지 {X일 Y시간}이(가) 남았습니다.
자세한 내용은 커뮤니티 규칙을 참고하세요:
https://community.lezismore.org/t/topic/26/2
2.5 향후 확장성
- 추가 카테고리:
• 현재는 A, B, C만 구성되어 있습니다.
• 향후 이 쿨다운에 카테고리를 추가하거나 제거해야 하는 경우, 주요 코드 변경 없이 시스템이나 플러그인이 확장될 수 있도록 하십시오.
- 다른 시간 기간:
• 14일 기간은 플러그인 설정에서 구성 가능하게 할 수 있습니다 (7일, 30일 등으로 변경하려는 경우를 대비하여).
- 동적 그룹 지정:
• 면제 그룹을 추가하거나 줄이는 경우 (예: “구독자” 추가 또는 제거) 이를 지원해야 합니다.
3. 요약
-
제한 그룹 (TL0, TL1, TL2 또는 면제 그룹에 속하지 않는 모든 사용자)은 카테고리 A 또는 B에서 다른 주제를 생성하기 전에 14일 쿨다운을 적용받습니다.
-
면제 그룹 (관리자, 모더레이터, TL3, TL4, “구독자”)은 제한 없이 게시할 수 있습니다.
-
시스템은 카테고리 A, B 또는 C에서의 가장 최근 주제 생성을 확인합니다 (소프트 삭제되거나 숨겨진 경우 포함). 14일 이내에 생성된 경우, 새 주제는 차단됩니다.
-
오류 메시지: 남은 시간을 일/시간 단위로 표시하고 다음 커뮤니티 규칙에 대한 링크를 제공합니다:
• https://community.lezismore.org/t/topic/26/2
-
초안: 차단된 경우, 사용자의 게시물은 초안으로 저장되고 제출 버튼이 비활성화됩니다.
-
이 사양은 향후 추가 카테고리나 다른 시간 프레임으로 확장할 수 있습니다.
제안해 주시면 감사하겠습니다!