---
task_id: task-2119
type: plan
scope: task
created: 2026-04-23
updated: 2026-04-23
status: completed
---

# 계획서: task-2119

**task**: task-2119
**목표**: FeatureGate 이중 구조 통합 — 관리자 토글 OFF가 프론트/서버 모두에서 접근 차단
**승인**: 아누 (task-2118 미해결 2건 승계)
**근거**: task-2118 보고서의 critical 미해결 이슈

---

## 목표

1. `FeatureGate` 컴포넌트가 DB `subscription_plans.features[featureKey]` 값(관리자 토글)을 확인하도록 수정
2. 서버 `require_feature`가 `plan_info["features"][feature_key]`의 boolean/값을 확인하여 false면 403 반환
3. 관리자가 인포키워드 토글 OFF → 맥스 플랜 사용자도 접근 차단 (프론트 + API)

## 범위

### 포함
- `src/components/FeatureGate.tsx` — `useFeatureGate` 훅 통합
- `src/hooks/use-feature-access.ts` — DB features 확인 로직 추가
- `server/main.py` — `require_feature`에 DB features 값 확인 추가
- 관련 테스트 업데이트

### 제외 (다음 페이즈 이후)
- `useFeatureGate` 훅 자체 리팩토링
- 플랜 캐시 TTL 튜닝
- 관리자 대시보드 UI 변경
- `get_user_plan`의 조직 구독 조회 user_id→organization_id 수정 (기존 이슈)

## 위임 계획

- MT-1 (프론트 FeatureGate 통합): **사라스바티(프론트엔드)** — sonnet
- MT-2 (서버 require_feature 개선): **카르티케야(백엔드)** — sonnet
- MT-3 (테스트 추가): **하누만(테스터)** — sonnet

## 검증 기준

- 관리자 토글 OFF 시: `FeatureGate` 컴포넌트 → 차단 UI 표시 ✅ (코드 검증)
- 관리자 토글 OFF 시: 서버 API → 403 반환 ✅ (테스트 검증)
- `npm run build` 성공 ✅
- 기존 테스트 회귀 없음 ✅ (43 passed)
