FeatureFlag
Plan / Subscription 기반 feature gating + 3계층 오버라이드 (축소만 허용)
상태
| 항목 | 값 |
|---|---|
| Layer | foundation |
| Tier | L0 |
| Status | wip |
| Version | 0.9.0 |
| 가격 | Free (free) |
| **카� | |
| �고리** | Infrastructure |
개요
개요
FeatureFlag 는 multi-saas-kit 의 Layer 0 Foundation Plugin � 니다. 요금제 기반 feature gating 과 3계층 오버라이드 (Plan → SaaS → Tenant) 를 제공합니다.
축소만 허용 규칙: 하위 계층은 상위보다 더 넓은 권한을 설정할 수 없습니다.
두 �
류의 feature 값
1. 상태 값 (string)
active(priority 0) — 사용 가능disabled(priority 1) — 비활성 (사용 차단, 메뉴는 표시)hidden(priority 2) — 완전히 숨김
자식 계층은 부모와 같거나 더 제한적인 값만 설정 가능.
2. 숫자 한도 (int)
-1= 무제한- 그 외 자연수 = 한도
부모 무제한이면 자식은 모든 값 가능. 자식이 무제한 요청해도 부모 한도 유지.
핵심 컴포넌트
FeatureValueResolver (Pure)
축소 규칙 + 검증 로직만 추출 — 모델/DB 의존 없음.
use App\Plugins\FeatureFlag\Services\FeatureValueResolver;
$r = new FeatureValueResolver;
// 축소 적용
$r->applyRestriction('active', 'disabled'); // 'disabled'
$r->applyRestriction('hidden', 'active'); // 'hidden' (확장 거부)
$r->applyRestriction(100, 50); // 50
$r->applyRestriction(-1, 50); // 50 (부모 무제한)
// 검증
$r->isValidOverride('active', 'disabled'); // true (축소)
$r->isValidOverride('disabled', 'active'); // false (확장)
// Helpers
$r->isActive('active'); // true
$r->isUnlimited(-1); // true
$r->normalizeLimitKey('users'); // 'limit.users'
// 다단계 누적 (Plan → SaaS → Tenant)
$r->applyChain(['active', 'disabled', 'hidden']); // 'hidden'
$r->applyChain([1000, null, 100]); // 100 (null 은 skip)
Models / Migrations (Phase 3 — 향후)
Plan— 요금제 정의 (features JSON)Subscription— Tenant ↔ Plan 매핑SaasFeatureOverride— SaaS 단위 overrideTenantFeatureOverride— Tenant 단위 override
Tables: plg_plans, plg_subscriptions, plg_saas_feature_overrides, plg_tenant_feature_overrides.
진행 상황
- � Phase 1+2 — Skeleton + Pure FeatureValueResolver + 24 unit tests
- ⬜ Phase 3 — Models + Migrations
- ⬜ Phase 4 — FeatureAccess Service (Tenant 의존)
- ⬜ Phase 5 — scout.how 어댑터
출처
scout.how App\Services\FeatureAccess(243줄) 의 applyRestriction, isValidOverride, STATE_PRIORITY 핵심 로직을 Pure Resolver 로 추출.
다른 Plugin 과의 관계
Commerce Plugin 과 별개:
- Commerce: 상품 / 주문 / 결제
- FeatureFlag: 기능 가시성 / 한도 (gating)
향후 통합: Commerce 의 Subscription 결제 → FeatureFlag 의 Plan 활성화 라이프사이클 연동.
라이선스
MIT
데모
- Platform 관리자 패널에서 메타 확인 🔒 로그인 필요
- 사용 예시 (PHP)
🛒 Plugin Store에서 보기: store.codebase.how/plugins/feature-flag