diff --git a/app/Http/Controllers/Sales/SalesDashboardController.php b/app/Http/Controllers/Sales/SalesDashboardController.php
index cf111b16..b65d35d7 100644
--- a/app/Http/Controllers/Sales/SalesDashboardController.php
+++ b/app/Http/Controllers/Sales/SalesDashboardController.php
@@ -255,6 +255,9 @@ private function getDashboardData(Request $request): array
->where('is_active', true)
->get(['id', 'name', 'email']);
+ // 내가 매니저로만 참여하는 건 (다른 사람이 등록, 내가 매니저)
+ $managerOnlyProspects = $this->getManagerOnlyProspects($currentUserId);
+
return compact(
'stats',
'commissionByRole',
@@ -265,6 +268,7 @@ private function getDashboardData(Request $request): array
'handoverProspects',
'managements',
'allManagers',
+ 'managerOnlyProspects',
'period',
'year',
'month',
diff --git a/app/Http/Controllers/Sales/SalesScenarioController.php b/app/Http/Controllers/Sales/SalesScenarioController.php
index 8a1ad2f4..fee9fe69 100644
--- a/app/Http/Controllers/Sales/SalesScenarioController.php
+++ b/app/Http/Controllers/Sales/SalesScenarioController.php
@@ -179,6 +179,7 @@ public function prospectSalesScenario(int $prospectId, Request $request): View|R
$steps = config('sales_scenario.sales_steps');
$currentStep = (int) $request->input('step', 1);
$icons = config('sales_scenario.icons');
+ $readonly = $request->boolean('readonly', false);
// 가망고객 영업 관리 정보 조회 또는 생성
$management = SalesTenantManagement::findOrCreateByProspect($prospectId);
@@ -201,6 +202,7 @@ public function prospectSalesScenario(int $prospectId, Request $request): View|R
'icons' => $icons,
'management' => $management,
'isProspect' => true,
+ 'readonly' => $readonly,
]);
}
@@ -213,6 +215,7 @@ public function prospectSalesScenario(int $prospectId, Request $request): View|R
'icons' => $icons,
'management' => $management,
'isProspect' => true,
+ 'readonly' => $readonly,
]);
}
diff --git a/resources/views/sales/dashboard/partials/data-container.blade.php b/resources/views/sales/dashboard/partials/data-container.blade.php
index 19e96714..ed18ffc6 100644
--- a/resources/views/sales/dashboard/partials/data-container.blade.php
+++ b/resources/views/sales/dashboard/partials/data-container.blade.php
@@ -78,6 +78,11 @@ class="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-
+{{-- 매니저로 참여 중인 건 --}}
+@if(isset($managerOnlyProspects) && count($managerOnlyProspects) > 0)
+ @include('sales.dashboard.partials.manager-prospects')
+@endif
+
{{-- 내 계약 현황 --}}
@include('sales.dashboard.partials.tenant-list')
diff --git a/resources/views/sales/dashboard/partials/manager-prospects.blade.php b/resources/views/sales/dashboard/partials/manager-prospects.blade.php
new file mode 100644
index 00000000..2bad97b5
--- /dev/null
+++ b/resources/views/sales/dashboard/partials/manager-prospects.blade.php
@@ -0,0 +1,144 @@
+{{-- 매니저로 참여 중인 건 --}}
+
+
+
+
+
매니저로 참여 중인 건
+
다른 영업파트너가 등록하고 내가 매니저로 지정된 고객
+
+
+ {{ count($managerOnlyProspects) }}건
+
+
+
+
+ @foreach($managerOnlyProspects as $item)
+ @php
+ $prospect = $item['prospect'];
+ $management = $item['management'];
+ $registeredBy = $item['registeredBy'];
+ $progress = $item['progress'];
+ $hqStatuses = \App\Models\Sales\SalesTenantManagement::$hqStatusLabels;
+ $hqStatusOrder = \App\Models\Sales\SalesTenantManagement::$hqStatusOrder;
+ $currentHqStep = $hqStatusOrder[$management->hq_status ?? 'pending'] ?? 0;
+ $isHqEnabled = $progress['sales']['percentage'] >= 100 && $progress['manager']['percentage'] >= 100;
+ @endphp
+
+
+
+
+
{{ $prospect->company_name }}
+
{{ $prospect->business_number ?? '-' }}
+
+
+ 매니저 담당
+
+
+
+
등록자
+
{{ $registeredBy?->name ?? '-' }}
+
+
+
+ {{-- 시나리오 버튼들 --}}
+
+ {{-- 영업 시나리오 (읽기 전용) --}}
+
+
+ {{-- 매니저 시나리오 (체크 가능) --}}
+
+
+
+ {{-- 진행률 바 --}}
+
+
+
+ 영업
+ ({{ $progress['sales']['percentage'] }}%)
+
+
+
+
+
+ 매니저
+ {{ $progress['manager']['percentage'] }}%
+
+
+
+
+
+ {{-- 개발 진행 상태 (100% 완료 시) --}}
+ @if($isHqEnabled)
+
+
+
개발
+
+ @foreach($hqStatuses as $statusKey => $statusLabel)
+ @php
+ $stepNum = $hqStatusOrder[$statusKey];
+ $isCompleted = $stepNum < $currentHqStep;
+ $isCurrent = $stepNum === $currentHqStep;
+ @endphp
+
+ @endforeach
+
+
{{ $management->hq_status_label }}
+
+
+ @endif
+
+ {{-- 계약 금액 정보 --}}
+ @if($item['total_subscription_fee'] > 0)
+
+
예상 매니저 수당 (1개월 구독료)
+
{{ number_format($item['total_subscription_fee']) }}원
+
+ @endif
+
+ @endforeach
+
+
diff --git a/resources/views/sales/modals/scenario-modal.blade.php b/resources/views/sales/modals/scenario-modal.blade.php
index 9f19f9a5..3cb77147 100644
--- a/resources/views/sales/modals/scenario-modal.blade.php
+++ b/resources/views/sales/modals/scenario-modal.blade.php
@@ -4,6 +4,7 @@
$isProspectMode = isset($isProspect) && $isProspect;
$entity = $isProspectMode ? $prospect : $tenant;
$entityId = $entity->id;
+ $isReadonly = isset($readonly) && $readonly;
@endphp
-
- {{ $scenarioType === 'sales' ? '영업 전략 시나리오' : '매니저 상담 프로세스' }}
-
+
+
+ {{ $scenarioType === 'sales' ? '영업 전략 시나리오' : '매니저 상담 프로세스' }}
+
+ @if($isReadonly)
+ 참조용
+ @endif
+
{{ $entity->company_name }}
diff --git a/resources/views/sales/modals/scenario-step.blade.php b/resources/views/sales/modals/scenario-step.blade.php
index b6cd3794..db860d10 100644
--- a/resources/views/sales/modals/scenario-step.blade.php
+++ b/resources/views/sales/modals/scenario-step.blade.php
@@ -13,6 +13,9 @@
$entity = $isProspectMode ? $prospect : $tenant;
$entityId = $entity->id;
+ // 읽기 전용 모드 확인
+ $isReadonly = isset($readonly) && $readonly;
+
// DB에서 체크된 항목 조회
$checklist = $isProspectMode
? SalesScenarioChecklist::getChecklistByProspect($entityId, $scenarioType)
@@ -64,7 +67,9 @@
checked: {{ $isChecked ? 'true' : 'false' }},
isProspect: {{ $isProspectMode ? 'true' : 'false' }},
entityId: {{ $entityId }},
+ readonly: {{ $isReadonly ? 'true' : 'false' }},
async toggle() {
+ if (this.readonly) return;
this.checked = !this.checked;
try {
const url = this.isProspect
@@ -114,7 +119,11 @@ class="bg-white border rounded-xl overflow-hidden transition-all duration-200"