diff --git a/plans/usage-subscription-unification.md b/plans/usage-subscription-unification.md index 1f32225..7b90cb0 100644 --- a/plans/usage-subscription-unification.md +++ b/plans/usage-subscription-unification.md @@ -94,7 +94,21 @@ ai_pricing_configs ## 3. 목표 설계 -### 3.1 통합 페이지 구성 +### 3.1 과금 정책 기준 (customer-pricing.md 6장) + +> **출처**: `rules/customer-pricing.md` — 사용량 기반 추가 과금 + +| 항목 | 기본 제공 | 초과 과금 | 비고 | +|------|----------|----------|------| +| 파일 저장 공간 | **100GB** | 100GB당 **5만원/월** | `tenant.storage_limit` 기본값 반영 | +| AI 토큰 | **월 100만 토큰** | 1,000토큰 단위 **실비 과금** | 매월 1일 리셋, 이월 없음 | + +**알림 정책**: +- 기본 제공량의 **80%** 소진 시 → 경고 알림 +- 기본 제공량의 **100%** 소진 시 → 한도 초과 알림 +- 미사용 잔여 토큰은 이월되지 않음 (매월 1일 갱신) + +### 3.2 통합 페이지 구성 ``` 이용현황 (/usage) @@ -109,15 +123,16 @@ ai_pricing_configs │ [2] 리소스 사용량 │ │ ┌──────────────────────────────────────┐ │ │ │ 사용자 ████████░░ 5 / 10명 │ │ -│ │ 저장공간 ███░░░░░░░ 1.2GB / 10GB │ │ +│ │ 저장공간 ███░░░░░░░ 1.2GB / 100GB │ │ │ └──────────────────────────────────────┘ │ │ │ -│ [3] AI 토큰 사용량 (이번 달) │ +│ [3] AI 토큰 사용량 (2026년 3월) │ │ ┌──────────────────────────────────────┐ │ -│ │ 총 토큰 12,345 tokens │ │ -│ │ 총 비용 ₩1,234 (입력/출력 구분) │ │ +│ │ ██████░░░░ 620,000 / 1,000,000 │ │ +│ │ 총 비용 ₩1,234 │ │ │ │ 모델별: Gemini 80% | Claude 20% │ │ -│ │ [상세 보기 →] │ │ +│ │ ⚠️ 80% 소진 시 경고, 100% 초과 시 실비│ │ +│ │ [상세 내역 보기 →] │ │ │ └──────────────────────────────────────┘ │ │ │ │ [4] 서비스 관리 버튼 │ @@ -126,7 +141,7 @@ ai_pricing_configs └─────────────────────────────────────────────────┘ ``` -### 3.2 통합 API 설계 +### 3.3 통합 API 설계 기존 `/subscriptions/usage` API를 확장하여 AI 토큰 정보를 포함한다. @@ -142,29 +157,33 @@ ai_pricing_configs "storage": { "used": 1288490189, "used_formatted": "1.2 GB", - "limit": 10737418240, - "limit_formatted": "10 GB", - "percentage": 12.0 + "limit": 107374182400, + "limit_formatted": "100 GB", + "percentage": 1.2 }, "ai_tokens": { "period": "2026-03", "total_requests": 156, - "total_tokens": 12345, - "prompt_tokens": 8200, - "completion_tokens": 4145, + "total_tokens": 620000, + "prompt_tokens": 412000, + "completion_tokens": 208000, + "limit": 1000000, + "percentage": 62.0, "cost_usd": 0.95, "cost_krw": 1234, + "warning_threshold": 80, + "is_over_limit": false, "by_model": [ { "model": "gemini-2.0-flash", "requests": 120, - "total_tokens": 9800, + "total_tokens": 496000, "cost_krw": 987 }, { "model": "claude-3-haiku", "requests": 36, - "total_tokens": 2545, + "total_tokens": 124000, "cost_krw": 247 } ] @@ -182,8 +201,13 @@ ai_pricing_configs **변경점**: - `api_calls` 섹션 → `ai_tokens` 섹션으로 교체 -- `ai_tokens`에 월별 토큰 합계, 비용, 모델별 내역 포함 -- `subscription`에 `monthly_fee` 추가 +- `ai_tokens.limit`: 월 100만 토큰 (정책 기반) +- `ai_tokens.percentage`: 한도 대비 사용율 +- `ai_tokens.warning_threshold`: 경고 기준 80% +- `ai_tokens.is_over_limit`: 한도 초과 여부 +- `ai_tokens.cost_krw`: 초과 시 실비 과금 금액 계산에 활용 +- `storage.limit`: 100GB (정책 기본값) +- `subscription.monthly_fee` 추가 - 하드코딩 제거 (10,000 상한 등) --- @@ -279,16 +303,26 @@ Phase 3: 메뉴 정리 --- -## 7. 확인 필요 사항 +## 7. 정책 기반 확정 사항 -작업 시작 전 확인이 필요한 항목: +`rules/customer-pricing.md` 6장에 따라 확정: + +| # | 항목 | 확정 내용 | +|---|------|----------| +| D1 | AI 토큰 월별 한도 | **100만 토큰/월** (매월 1일 리셋, 이월 없음) | +| D2 | 초과 과금 | 1,000토큰 단위 **실비** (ai_pricing_configs 단가 기반) | +| D3 | 알림 기준 | 80% 경고, 100% 한도 초과 알림 | +| D4 | 저장공간 기본 한도 | **100GB** (초과 시 100GB당 5만원/월) | +| D5 | 비용 노출 | 토큰 비용(KRW) 고객에게 표시 (customer-pricing에 명시) | + +### 7.1 추가 확인 필요 사항 | # | 질문 | 영향 | |---|------|------| -| Q1 | AI 토큰 사용량에 월별 한도가 필요한가? (무제한 vs 플랜별 상한) | `ai_tokens.limit` 필드 추가 여부 | -| Q2 | AI 토큰 비용을 고객에게 보여줘도 되는가? (원화 금액 노출) | UI 표시 항목 결정 | -| Q3 | 이용현황 페이지 접근 권한은? (관리자만 vs 모든 사용자) | 권한 설정 | -| Q4 | 저장공간의 실제 사용량이 정확히 갱신되고 있는가? | 파일 업로드/삭제 시 `incrementStorage`/`decrementStorage` 호출 여부 | +| Q1 | 100만 토큰 한도를 `tenant.ai_token_limit` 필드로 관리할 것인가? (플랜별 차등 가능성) | 테넌트 테이블 컬럼 추가 여부 | +| Q2 | 이용현황 페이지 접근 권한은? (관리자만 vs 모든 사용자) | 권한 설정 | +| Q3 | 저장공간의 실제 사용량이 정확히 갱신되고 있는가? | 파일 업로드/삭제 시 `incrementStorage`/`decrementStorage` 호출 여부 | +| Q4 | `tenant.storage_limit` 기본값이 현재 10GB인데 100GB로 변경 필요 | 마이그레이션 또는 데이터 수정 | ---