- 영업관리 대시보드: 수당 현황, 테넌트 진행률, 파트너 활동 - 파트너관리: 영업파트너 CRUD, 역할 관리, 서류 관리 - 영업파트너승인: 신규 파트너 신청 승인/반려 워크플로우 - 상품관리: 카테고리별 상품, 가격/수당률 설정 - 고객관리(관리자): 전사 고객 현황, 본사 진행상태 8단계 - 영업파트너 고객관리: 명함등록 기반 영업권, 테넌트 전환 - 인터뷰 시나리오: 질문 템플릿, 세션 기반 인터뷰 기록 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
123 lines
5.2 KiB
Markdown
123 lines
5.2 KiB
Markdown
# 영업관리 대시보드
|
||
|
||
## 개요
|
||
|
||
영업관리 대시보드는 영업파트너/상담매니저의 수당 현황, 테넌트 진행률, 유치 파트너 활동을 종합적으로 보여주는 페이지입니다.
|
||
로그인한 사용자 기준의 실적 및 수당 정보를 실시간으로 제공합니다.
|
||
|
||
- **라우트**: `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 탭 전환
|