# 영업파트너승인

## 개요

영업파트너승인은 신규 영업파트너 등록 신청을 검토하고 승인/반려를 처리하는 기능입니다.
본사 관리자 전용 페이지로, 신청자의 정보와 서류를 확인하고 일괄 처리할 수 있습니다.

- **라우트**: `GET /sales/managers/approvals`
- **미들웨어**: `auth`, `hq.member` + 관리자 권한 체크
- **UI 기술**: Blade + HTMX + Tailwind CSS

## 파일 구조

```
mng/
├── app/Http/Controllers/Sales/
│   └── SalesManagerController.php        # 파트너관리와 동일 컨트롤러 (승인 메서드 포함)
├── app/Services/Sales/
│   └── SalesManagerService.php           # approve(), reject() 로직
└── resources/views/sales/managers/
    └── approvals.blade.php               # 승인 관리 페이지
```

## 라우트

```php
// routes/web.php (sales prefix 그룹 내, resource 전에 정의)
GET  /managers/approvals                   → approvals()       승인 목록 페이지
POST /managers/approvals/{id}/approve      → approveFromList() 목록에서 승인
POST /managers/approvals/{id}/reject       → rejectFromList()  목록에서 반려
```

## 컨트롤러

### SalesManagerController (승인 관련 메서드)

| 메서드 | HTTP | 설명 | 권한 |
|--------|------|------|------|
| `approvals()` | GET | 승인 대기 목록 페이지 | 관리자 전용 |
| `approveFromList()` | POST | 목록에서 승인 처리 | 관리자 전용 |
| `rejectFromList()` | POST | 목록에서 반려 처리 | 관리자 전용 |
| `approve()` | POST | 상세에서 승인 | - |
| `reject()` | POST | 상세에서 반려 | - |

### 승인 처리 흐름

```
영업파트너 등록 신청 (store)
    ↓
approval_status = 'pending' (Users 테이블)
    ↓
관리자 승인 목록에서 확인
    ├── approveFromList() → status = 'approved'
    │   ├── approved_at 기록
    │   └── approved_by 기록
    │
    └── rejectFromList() → status = 'rejected'
        └── rejection_reason 저장 (필수)
```

### 응답 방식

```
HTMX 요청 → JsonResponse (success, message)
일반 요청 → Redirect (redirect back)
```

## 뷰 구성

### approvals.blade.php

```
┌─ 페이지 헤더 ──────────────────────
│  제목: "영업파트너 승인관리"
│
├─ 통계 카드 ────────────────────────
│  승인 대기 | 오늘 승인 | 오늘 반려
│
├─ 검색/필터 영역 ──────────────────
│  검색 (이름, 아이디, 이메일, 전화번호)
│
├─ 2분할 레이아웃 ──────────────────
│  ┌─ 좌: 승인 대기 ────────────┐  ┌─ 우: 승인 완료 ─────────────┐
│  │  신청자명 | 역할 | 유치자  │  │  파트너명 | 승인일 | 승인자  │
│  │  └─ [승인] [반려] 버튼     │  │                             │
│  └────────────────────────────┘  └─────────────────────────────┘
│
└─ 상세 모달 ───────────────────────
   파트너 정보 (이름, 아이디, 이메일, 전화)
   계층 정보 (레벨, 추천인)
   등록 서류 목록 (다운로드/삭제)
   [승인] [반려] 버튼
```

## 반려 처리

```
반려 시:
  - rejection_reason (반려 사유) 필수 입력
  - 상태: pending → rejected
  - 반려 후 재신청 가능
```
