영업관리 통합 로그인 명칭수정

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
aweso
2026-01-06 14:06:32 +09:00
parent 933b00b6e6
commit 8f121484d5
10 changed files with 164 additions and 23 deletions

View File

@@ -187,7 +187,7 @@ $roleData = [
],
'current_user' => [
"id" => "user_sales_admin",
"name" => "영업관리자",
"name" => "영업파트너",
"role" => "영업관리",
"sub_managers" => [
[

View File

@@ -53,16 +53,16 @@ try {
$stmt->execute();
}
// 기본 영업관리자 계정 생성
// 기본 영업파트너 계정 생성
$check = $pdo->prepare("SELECT id FROM sales_member WHERE member_id = 'sales'");
$check->execute();
if (!$check->fetch()) {
$stmt = $pdo->prepare("INSERT INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업관리자', 'sales_admin')");
$stmt = $pdo->prepare("INSERT INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업파트너', 'sales_admin')");
$stmt->execute();
}
$sales_id = $pdo->lastInsertId() ?: 2;
// 기본 매니저 계정 생성 (영업관리자 하위)
// 기본 매니저 계정 생성 (영업파트너 하위)
$check = $pdo->prepare("SELECT id FROM sales_member WHERE member_id = 'manager'");
$check->execute();
if (!$check->fetch()) {
@@ -77,7 +77,7 @@ try {
if (!$check->fetch()) {
$stmt = $pdo->prepare("INSERT INTO sales_record (member_id, customer_name, contract_date, amount) VALUES (?, ?, ?, ?)");
// 영업관리자(sales) 직접 실적
// 영업파트너(sales) 직접 실적
$stmt->execute([$sales_id, '스타트업 A', '2024-12-01', 25000000]);
$stmt->execute([$sales_id, '벤처기업 B', '2024-12-10', 30000000]);

View File

@@ -85,7 +85,7 @@ try {
return;
}
if ($member_id === 'sales' && $password === 'sales') {
$pdo->prepare("INSERT IGNORE INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업관리자', 'sales_admin')")->execute();
$pdo->prepare("INSERT IGNORE INTO sales_member (member_id, password, name, role) VALUES ('sales', 'sales', '영업파트너', 'sales_admin')")->execute();
$stmt = $pdo->prepare("SELECT * FROM sales_member WHERE member_id = 'sales'");
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);

View File

@@ -33,7 +33,7 @@ function checkTenantPermission($pdo, $tenant_id, $currentUser) {
return $tenant['sales_manager_id'] == $currentUser['id'];
}
// 영업관리자는 본인이 등록했거나, 본인이 담당 매니저인 경우 가능
// 영업파트너는 본인이 등록했거나, 본인이 담당 매니저인 경우 가능
return ($tenant['manager_id'] == $currentUser['id'] || $tenant['sales_manager_id'] == $currentUser['id']);
}
@@ -41,8 +41,8 @@ function checkTenantPermission($pdo, $tenant_id, $currentUser) {
$pdo->exec("
CREATE TABLE IF NOT EXISTS `sales_tenants` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`manager_id` int(11) NOT NULL COMMENT '영업한 영업관리자 ID',
`sales_manager_id` int(11) DEFAULT NULL COMMENT '매칭된 매니저 ID (영업관리자 본인 또는 별도 매니저)',
`manager_id` int(11) NOT NULL COMMENT '영업한 영업파트너 ID',
`sales_manager_id` int(11) DEFAULT NULL COMMENT '매칭된 매니저 ID (영업파트너 본인 또는 별도 매니저)',
`tenant_name` varchar(200) NOT NULL,
`representative` varchar(100) DEFAULT NULL,
`business_no` varchar(20) DEFAULT NULL,
@@ -180,7 +180,7 @@ try {
switch ($method) {
case 'GET':
if ($action === 'list_tenants') {
// 운영자는 모든 테넌트, 영업관리/매니저는 본인 소속 테넌트만
// 운영자는 모든 테넌트, 영업파트너/매니저는 본인 소속 테넌트만
if ($currentUser['role'] === 'operator') {
$stmt = $pdo->prepare("
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
@@ -203,7 +203,7 @@ try {
");
$stmt->execute([$currentUser['id']]);
} else {
// 영업관리자는 본인이 영업했거나, 본인이 매니저로 배정된 테넌트 조회
// 영업파트너는 본인이 영업했거나, 본인이 매니저로 배정된 테넌트 조회
$stmt = $pdo->prepare("
SELECT t.*, m.name as register_name, m.role as register_role, m2.name as manager_name, m2.role as manager_role
FROM sales_tenants t
@@ -365,7 +365,7 @@ try {
$manager_id = $row['manager_id'];
$amount = $row['contract_amount'];
// 영업관리자 계층 확인
// 영업파트너 계층 확인
// 1. 등록자 본인이 sales_admin인지 확인
// 2. 상위(parent)가 sales_admin인지 확인
$sales_admin_count = 0;
@@ -600,7 +600,7 @@ try {
if (!$tenant_id) throw new Exception("테넌트 ID가 누락되었습니다.");
// 권한 확인: 배지 지정은 운영자 또는 해당 테넌트를 등록한 영업관리자만 가능
// 권한 확인: 배지 지정은 운영자 또는 해당 테넌트를 등록한 영업파트너만 가능
$stmt = $pdo->prepare("SELECT manager_id FROM sales_tenants WHERE id = ?");
$stmt->execute([$tenant_id]);
$t = $stmt->fetch(PDO::FETCH_ASSOC);

View File

@@ -805,7 +805,7 @@
</div>
{detailModalUser.name} ({detailModalUser.member_id}) 하위 멤버
</h3>
<p className="text-slate-500 mt-1"> 영업관리자에게 소속된 모든 매니저 목록입니다.</p>
<p className="text-slate-500 mt-1"> 영업파트너에게 소속된 모든 매니저 목록입니다.</p>
</div>
<button onClick={() => setDetailModalUser(null)} className="p-2 hover:bg-slate-200 rounded-full transition-colors text-slate-400">
<LucideIcon name="x" className="w-6 h-6" />
@@ -1654,7 +1654,7 @@
<div className="w-16 h-16 bg-blue-600 rounded-full flex items-center justify-center mx-auto mb-4 text-white shadow-lg shadow-blue-100">
<LucideIcon name="lock" className="w-8 h-8" />
</div>
<h2 className="text-3xl font-black text-slate-900 tracking-tight">영업관리 통합 로그인</h2>
<h2 className="text-3xl font-black text-slate-900 tracking-tight">SAM 로그인</h2>
<p className="text-slate-500 mt-2 font-medium">서비스 이용을 위해 로그인해주세요.</p>
</div>