Files
sam-docs/features/sales/sales-dashboard.md
김보곤 5738f7442c docs: [sales] '가입비' 용어를 '개발비'로 전면 변경
- 가입비 → 개발비로 용어 통일
- 원가/적용가 구분 명확화 (development_fee=원가, registration_fee=적용가)
- 상품관리정보, 수당지급, 영업파트너가이드북 등 10개 문서 수정
2026-03-13 21:25:43 +09:00

123 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 영업관리 대시보드
## 개요
영업관리 대시보드는 영업파트너/상담매니저의 수당 현황, 테넌트 진행률, 유치 파트너 활동을 종합적으로 보여주는 페이지입니다.
로그인한 사용자 기준의 실적 및 수당 정보를 실시간으로 제공합니다.
- **라우트**: `GET /sales/salesmanagement/dashboard`
- **미들웨어**: `auth`, `hq.member`
- **UI 기술**: Blade + HTMX + Alpine.js + Tailwind CSS
## 파일 구조
```
mng/
├── app/Http/Controllers/Sales/
│ └── SalesDashboardController.php # 메인 컨트롤러 (18개 메서드, 1,073줄)
└── resources/views/sales/dashboard/
├── index.blade.php # 메인 페이지
└── partials/
├── data-container.blade.php # HTMX 새로고침 컨테이너
├── stats.blade.php # 통계 카드
├── commission-by-role.blade.php # 역할별 수당
├── tenant-list.blade.php # 테넌트 목록
├── tenant-stats.blade.php # 테넌트 통계
├── partner-activity.blade.php # 유치 파트너 활동
├── my-commission.blade.php # 내 수당 정보
├── help-modal.blade.php # 도움말
└── prospect-row.blade.php # 가망고객 행
```
## 라우트
```php
// routes/web.php (sales prefix 그룹 내)
GET /salesmanagement/dashboard index() 메인 페이지
GET /salesmanagement/dashboard/refresh refresh() HTMX 부분 새로고침
GET /salesmanagement/dashboard/tenants refreshTenantList() 테넌트 목록 갱신
GET /salesmanagement/dashboard/partner-activity partnerActivity() 유치 파트너 활동
GET /salesmanagement/dashboard/help helpGuide() 도움말 모달
GET /salesmanagement/dashboard/prospect/{id}/row getProspectRow() 가망고객
GET /managers/list getManagers() 매니저 목록
GET /managers/search searchManagers() 매니저 검색
POST /tenants/{tenant}/assign-manager assignManager() 매니저 지정
POST /prospects/{prospect}/assign-manager assignProspectManager() 가망고객 매니저 지정
```
## 컨트롤러
### SalesDashboardController
| 메서드 | HTTP | 설명 |
|--------|------|------|
| `index()` | GET | 대시보드 메인 화면 |
| `refresh()` | GET | HTMX 부분 새로고침 |
| `getDashboardData()` | - | 대시보드 핵심 데이터 조회 (private) |
| `refreshTenantList()` | GET | 테넌트 목록 새로고침 |
| `getManagers()` | GET | 매니저 드롭다운 목록 |
| `searchManagers()` | GET | 매니저 검색 API |
| `partnerActivity()` | GET | 유치 파트너 활동 현황 |
| `getPartnerActivityData()` | - | 파트너 활동 데이터 (private) |
| `calculatePartnerSummaryStats()` | - | 파트너 요약 통계 (private) |
| `getPartnerActivitiesDetail()` | - | 파트너별 상세 활동 (private) |
| `getManagerOnlyProspects()` | - | 매니저 전용 가망고객 (private) |
| `getCommissionData()` | - | 수당 정보 조회 (private) |
| `getAllManagerUsers()` | - | 상담매니저 사용자 목록 (private) |
| `helpGuide()` | GET | 도움말 모달 |
| `getProspectRow()` | GET | 가망고객 개별 행 |
| `assignManager()` | POST | 테넌트 매니저 변경 |
| `assignProspectManager()` | POST | 가망고객 매니저 변경 |
| `calculateExpectedCommissionSummary()` | - | 예상 수당 계산 (private) |
### 수당 계산 로직
```
영업파트너 수당:
- 판매자 수당: 개발비 × 20%
- 협업지원금: 개발비 × 10% (인계 완료 시)
- 1차/2차 분할: 각 50%
매니저 수당:
- 1개월 구독료 (매니저 기본 수당)
- 1차/2차 분할: 각 50%
```
## 뷰 구성
```
┌─ 페이지 헤더 ──────────────────────
│ 제목: "영업관리"
│ [새로고침] 버튼
├─ 탭 전환 (Alpine.js) ─────────────
│ [내 활동] | [유치 파트너 현황]
├─ 탭1: 내 활동 ─────────────────────
│ ├─ 통계 카드 (수당 요약)
│ │ 총 수당 | 지급완료 | 미지급 | 예상 수당
│ │
│ ├─ 역할별 수당 상세
│ │ 영업파트너 수당 | 매니저 수당
│ │
│ └─ 테넌트/가망고객 목록
│ 회사명 | 상태 | 진행률 | 수당 | 매니저 | 작업
│ └─ 매니저 지정 변경 (드롭다운)
├─ 탭2: 유치 파트너 현황 ────────────
│ ├─ 파트너 요약 통계
│ │ 총 파트너 | 활성 | 계약건수 | 총 수당
│ │
│ └─ 파트너별 활동 상세
│ 파트너명 | 등록 고객 | 계약 | 진행중 | 수당
└─ 도움말 모달 ──────────────────────
수당 계산 방식, 진행 단계 설명
```
## HTMX 호환성
- Blade + HTMX 기반으로 **HX-Redirect 불필요**
- `hx-get`으로 부분 새로고침 처리
- Alpine.js 탭 전환