ReviewQueue
범용 검수 큐 — verdict enum + priority + age bonus 정렬 (콘� �츠/신고/환불/검수 모두)
상태
| 항목 | 값 |
|---|---|
| Layer | core |
| Tier | L1 |
| Status | released |
| Version | 1.0.0 |
| 가격 | Free (free) |
| **카� | |
| �고리** | Infrastructure |
개요
개요
ReviewQueue 는 multi-saas-kit 의 Layer 1 Core Plugin � 니다. 검수 워크플로 일반 패턴 — verdict enum + queue prioritizer — 을 도메인 무관 Pure 로 제공합니다.
분리선 (ADR-039)
ADR-039 사례 3 — 기존 ContentReview plugin (exam.how LessonReviewService 출처) 을 일반화. 'content' 한정 �
�
→ 모든 검수 시나리오 (콘�
�츠/신고/환불/회원가�
승인) 활용 가능.
변경: namespace App\Plugins\ContentReview → App\Plugins\ReviewQueue, slug content-review → review-queue, layer domain → core. 코드 자체는 그대로.
핵심 컴포넌트
ReviewVerdict (enum)
APPROVED— 통과NEEDS_FIX— 자동/수동 수정 필요REJECTED— 폐기PENDING— 미검수
메서드: isFinal() (approved/rejected), isApproved(), requiresAction().
ReviewQueuePrioritizer (Pure)
score($priority, $ageDays)— 가중치 + age bonus 합산- urgent=100, high=50, normal=10, low=1
- age_days × 0.5 보너스 (오래된 항목 우선 처리)
sort($items)— 점수 높은 순 정렬 + score 필드 첨부
활용 시나리오
- academy.how / exam.how: 콘� �츠 검수 (lesson/question 검수 큐)
- commerce: 환불 요청 검수 큐
- 게시판: 신고 처리 큐
- 회원가� : 사� 자 인증 승인 큐
- 보안: IP 차단 요청 큐
사용 예시
use App\Plugins\ReviewQueue\Services\ReviewQueuePrioritizer;
use App\Plugins\ReviewQueue\Enums\ReviewVerdict;
$priortizer = new ReviewQueuePrioritizer;
$sortedQueue = $priortizer->sort([
['id' => 1, 'priority' => 'urgent', 'age_days' => 2],
['id' => 2, 'priority' => 'normal', 'age_days' => 10],
['id' => 3, 'priority' => 'high', 'age_days' => 5],
]);
// → urgent(101) > high(52.5) > normal(15)
$verdict = ReviewVerdict::APPROVED;
if ($verdict->isFinal()) { /* lock the record */ }
출처
exam.how LessonReviewService 의 review verdict 분류 + queue 정렬 로직 추출 → ReviewQueue plugin 으로 일반화.
의존성
core: >=1.1.0
라이선스
MIT
데모
- Platform 관리자 패널에서 메타 확인 🔒 로그인 필요
- 사용 예시 (PHP)
🛒 Plugin Store에서 보기: store.codebase.how/plugins/review-queue