From b6edc6db27a5537c0938d0a0f8f885b8d53df68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Sat, 14 Mar 2026 15:25:51 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[=EC=98=81=EC=97=85]=20=EC=B5=9C?= =?UTF-8?q?=EC=A0=80=EA=B0=80=20=EC=A0=95=EC=B1=85=20=EB=B0=8F=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C=EB=B9=84-=EA=B5=AC=EB=8F=85=EB=A3=8C=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=20=EB=AC=B8=EC=84=9C=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - customer-pricing.md: 최저가 정책, 개발비-구독료 연동 비율 섹션 추가 - partner-commission.md: 최저가와 수당 관계, 시뮬레이터 안내 섹션 추가 - products.md: min_development_fee/min_subscription_fee 필드, 시뮬레이터 연동 섹션 추가 --- features/sales/products.md | 79 ++++++++++++++++++++++++++++++++++++- rules/customer-pricing.md | 38 ++++++++++++++++-- rules/partner-commission.md | 29 ++++++++++++-- 3 files changed, 138 insertions(+), 8 deletions(-) diff --git a/features/sales/products.md b/features/sales/products.md index b16a3ad..d816c3c 100644 --- a/features/sales/products.md +++ b/features/sales/products.md @@ -27,7 +27,9 @@ api/ └── database/migrations/ ├── 2026_01_29_150000_create_sales_products_tables.php ├── 2026_01_29_161626_add_partner_manager_commission_to_sales_products_table.php - └── 2026_01_29_162847_add_registration_fee_to_sales_products_table.php + ├── 2026_01_29_162847_add_registration_fee_to_sales_products_table.php + ├── 2026_03_14_100000_add_min_fees_to_sales_product_categories_table.php + └── 2026_03_14_100001_add_min_fees_to_sales_products_table.php ``` ## 라우트 @@ -85,6 +87,8 @@ GET /products/api/list → getProductsApi() 활성 상품 목록 | `name` | string(100) | 카테고리명 | | `description` | text | 설명 | | `base_storage` | string(20) | 기본 제공 용량 (기본: 100GB) | +| `min_development_fee` | decimal(15,2) | 최저 개발비 (카테고리 레벨, 기본 0) | +| `min_subscription_fee` | decimal(15,2) | 최저 구독료 (카테고리 레벨, 기본 0) | | `display_order` | int | 표시 순서 | | `is_active` | boolean | 활성화 | @@ -105,6 +109,8 @@ GET /products/api/list → getProductsApi() 활성 상품 목록 | `development_fee` | decimal(15,2) | 개발비 (원가) | | `registration_fee` | decimal(15,2) | 개발비 (적용가) | | `subscription_fee` | decimal(15,2) | 월 구독료 | +| `min_development_fee` | decimal(15,2) | 최저 개발비 (이 금액 이하 설정 불가, 기본 0) | +| `min_subscription_fee` | decimal(15,2) | 최저 구독료 (이 금액 이하 설정 불가, 기본 0) | | `partner_commission_rate` | decimal(5,2) | 영업파트너 수당율 (기본 20%) | | `manager_commission_rate` | decimal(5,2) | 매니저 수당율 (기본 5%) | | `allow_flexible_pricing` | boolean | 재량권 허용 여부 | @@ -162,6 +168,10 @@ GET /products/api/list → getProductsApi() 활성 상품 목록 ├─ 상품 등록/수정 모달 (Alpine.js) ── │ 코드, 상품명, 설명 │ 개발비(원가), 개발비(적용가), 구독료 +│ ┌─ 최저가 설정 (빨간 박스) ────────┐ +│ │ 최저 개발비, 최저 구독료 │ +│ │ "절대 이 금액 이하로 내릴 수 없음"│ +│ └──────────────────────────────────┘ │ 파트너 수당율, 매니저 수당율 │ 재량권 허용, 필수 선택 │ @@ -169,6 +179,73 @@ GET /products/api/list → getProductsApi() 활성 상품 목록 코드, 카테고리명, 설명, 기본 용량 ``` +## 최저가 정책 + +상품별로 **최저 개발비**와 **최저 구독료**를 설정할 수 있다. 설정된 최저가 이하로는 절대 가격을 내릴 수 없다. + +### 적용 범위 + +| 영역 | 최저 개발비 | 최저 구독료 | +|------|:----------:|:----------:| +| 상품 등록/수정 (MNG) | ✅ 서버 검증 | ✅ 서버 검증 | +| 가격 시뮬레이터 슬라이더 | ✅ 슬라이더 min 제한 | ✅ 연동 시 min 제한 | +| 프로모션 개발비 할인 | ✅ 할인 max 제한 | — | +| 프로모션 구독료 할인 | — | ✅ 할인 max 제한 | +| 개발비 전액 면제 | ✅ 최저가 설정 시 비활성화 | — | + +### 검증 로직 + +- **컨트롤러**: `store()`, `update()` 시 `registration_fee >= min_development_fee`, `subscription_fee >= min_subscription_fee` 검증 +- **시뮬레이터**: `setAdjustedFee()`에서 `Math.max(minDevFee, value)` 적용 +- **프로모션**: `promoDevDiscountMax()`, `promoSubDiscountMaxPercent()`로 슬라이더 max 제한 + +--- + +## 가격 시뮬레이터 연동 + +**라우트**: `GET /sales/price-simulator` + +가격 시뮬레이터는 상품관리의 데이터를 기반으로 실시간 비용/수당 시뮬레이션을 제공한다. + +### 개발비-구독료 연동 조절 + +토글 스위치로 활성화하는 기능이다. 개발비 슬라이더를 조정하면 구독료가 원래 비율을 유지하며 자동 연동된다. + +**비율 계산**: + +``` +ratio = 원래 구독료 / 원래 개발비(할인가) +연동 구독료 = 조정된 개발비 × ratio (만원 단위 반올림) +``` + +**예시** (개발비 2,000만원, 구독료 50만원인 상품): + +| 조정된 개발비 | 비율 | 연동 구독료 | +|-------------:|:----:|----------:| +| 2,000만원 | 2.5% | 50만원 | +| 1,500만원 | 2.5% | 38만원 | +| 1,000만원 | 2.5% | 25만원 | +| 500만원 | 2.5% | 13만원 | + +**제한사항**: + +- 최저 구독료 이하로는 내려가지 않음 +- 연동 OFF 시 구독료가 원래값으로 즉시 복원 +- 프로모션 할인과 독립적으로 동작 (연동 → 프로모션 순서로 적용) + +### 프로모션 할인과 최저가 + +프로모션 영역의 모든 할인 슬라이더는 최저가를 초과하지 않도록 max가 자동 제한된다. + +| 프로모션 항목 | max 산정 기준 | +|-------------|-------------| +| 개발비 할인 (%) | `(적용가 합계 - 최저 개발비 합계) / 적용가 합계 × 100` | +| 개발비 할인 (원) | `적용가 합계 - 최저 개발비 합계` | +| 개발비 전액 면제 | 최저 개발비 > 0이면 체크박스 비활성화 | +| 구독료 할인 (%) | `(1 - 최저 구독료 합계 / 구독료 합계) × 100` | + +--- + ## HTMX 호환성 - Alpine.js 스크립트가 `@push('scripts')`에 있어 **HX-Redirect 필요** diff --git a/rules/customer-pricing.md b/rules/customer-pricing.md index cf8d448..8654b19 100644 --- a/rules/customer-pricing.md +++ b/rules/customer-pricing.md @@ -62,7 +62,37 @@ SAM 서비스 도입 시 고객에게 안내하는 요금 체계를 정리한다 --- -## 4. 사용량 기반 추가 과금 +## 4. 최저가 정책 + +### 4.1 최저 개발비 · 최저 구독료 + +각 상품에는 **최저 개발비**와 **최저 구독료**가 설정될 수 있다. 영업 협상, 프로모션, 재량권 할인 등 어떠한 경우에도 이 금액 이하로 내릴 수 없다. + +- 최저가는 상품관리(MNG)에서 상품별로 설정한다 +- 0 설정 시 제한 없음 + +### 4.2 개발비-구독료 연동 원칙 + +개발비와 구독료는 비율 관계를 가진다. 개발비를 조정할 때 구독료도 동일 비율로 연동 조정할 수 있다. + +``` +연동 비율 = 기본 구독료 / 기본 개발비(적용가) +조정 구독료 = 조정 개발비 × 연동 비율 +``` + +**예시**: 개발비 2,000만원, 구독료 50만원 (비율 2.5%) + +| 조정 개발비 | 연동 구독료 | +|-----------:|----------:| +| 2,000만원 | 50만원/월 | +| 1,500만원 | 38만원/월 | +| 1,000만원 | 25만원/월 | + +> **참고**: 연동은 가격 시뮬레이터의 선택적 기능이며, 실제 계약 시에는 개발비와 구독료를 개별적으로 협의할 수 있다. + +--- + +## 5. 사용량 기반 추가 과금 기본 제공 한도 초과 시 실비 과금한다. @@ -84,7 +114,7 @@ SAM 서비스 도입 시 고객에게 안내하는 요금 체계를 정리한다 --- -## 5. 바로빌 부가 서비스 요금 +## 6. 바로빌 부가 서비스 요금 고객이 선택적으로 이용하는 바로빌 연동 서비스이다. @@ -101,7 +131,7 @@ SAM 서비스 도입 시 고객에게 안내하는 요금 체계를 정리한다 --- -## 6. 관련 문서 +## 7. 관련 문서 - [내부 과금정책](billing-policy.md) - 본사 지출 원가 및 코드 참조 (내부용) - [영업파트너 수당 체계](partner-commission.md) - 수당률 및 정산 프로세스 (파트너용) @@ -113,4 +143,4 @@ SAM 서비스 도입 시 고객에게 안내하는 요금 체계를 정리한다 --- -**최종 업데이트**: 2026-02-21 +**최종 업데이트**: 2026-03-14 diff --git a/rules/partner-commission.md b/rules/partner-commission.md index 7917fe1..3948eaf 100644 --- a/rules/partner-commission.md +++ b/rules/partner-commission.md @@ -91,14 +91,37 @@ --- -## 6. 기타 정책 +## 6. 최저가 정책과 수당 + +### 6.1 최저 개발비 + +각 상품에 설정된 최저 개발비 이하로는 할인이 불가하다. 수당은 최종 적용된 개발비를 기준으로 계산한다. + +``` +수당 기준액 = max(최저 개발비, 협상 개발비) +파트너 수당 = 수당 기준액 × 수당률 +``` + +### 6.2 개발비-구독료 연동 + +개발비를 낮추면 구독료도 비율에 맞춰 연동 조정할 수 있다. 이 경우에도 최저 구독료 이하로는 내려가지 않는다. + +> **참고**: 구독료는 수당 계산에 영향을 주지 않으므로, 연동 조정이 수당에 직접적 영향은 없다. 다만 개발비를 낮추면 수당도 줄어든다. + +### 6.3 가격 시뮬레이터 + +영업파트너는 가격 시뮬레이터를 통해 할인 조합별 수당을 미리 확인할 수 있다. 시뮬레이터에서 최저가 이하로는 슬라이더가 움직이지 않으며, 프로모션 할인도 최저가까지만 적용된다. + +--- + +## 7. 기타 정책 - **계약 유지**: 장기 구독을 전제로 한 초기 비용 할인 정책이므로, 중도 해지 시 별도의 위약금 규정이 적용될 수 있다 - **구독료**: 플랫폼 유지보수 및 클라우드 인프라 비용으로 활용되며, 수당 지급 대상이 아니다 --- -## 7. 관련 문서 +## 8. 관련 문서 - [고객 요금 안내](customer-pricing.md) - 서비스 요금 상세 (고객용) - [내부 과금정책](billing-policy.md) - 본사 지출 원가 및 코드 참조 (내부용) @@ -111,4 +134,4 @@ --- -**최종 업데이트**: 2026-02-21 +**최종 업데이트**: 2026-03-14