Files
sam-api/database/seeders/PositionSeeder.php
kent d6e18fb54e feat(API): 직책/직원/근태 관리 API 개선
- Position 모델: key 필드 추가 및 마이그레이션
- PositionSeeder: 기본 직책 시더 추가
- TenantUserProfile: 프로필 이미지 관련 필드 추가
- Employee Request: 직원 등록/수정 요청 검증 강화
- EmployeeService: 직원 관리 서비스 로직 개선
- AttendanceService: 근태 관리 서비스 개선

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 17:25:13 +09:00

76 lines
2.7 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Tenants\Position;
use Illuminate\Database\Seeder;
class PositionSeeder extends Seeder
{
/**
* Run the database seeds.
* 직급(rank)과 직책(title) 기본 데이터 생성
*/
public function run(): void
{
$tenantId = 287; // 프론트_테스트회사
// 직급 (rank) - 기존 tenant_user_profiles.position_key와 매핑
$ranks = [
['key' => 'STAFF', 'name' => '사원', 'sort_order' => 1],
['key' => 'SENIOR', 'name' => '주임', 'sort_order' => 2],
['key' => 'ASSISTANT_MANAGER', 'name' => '대리', 'sort_order' => 3],
['key' => 'MANAGER', 'name' => '과장', 'sort_order' => 4],
['key' => 'DEPUTY_MANAGER', 'name' => '차장', 'sort_order' => 5],
['key' => 'DIRECTOR', 'name' => '부장', 'sort_order' => 6],
['key' => 'EXECUTIVE', 'name' => '이사', 'sort_order' => 7],
['key' => 'SENIOR_EXECUTIVE', 'name' => '상무', 'sort_order' => 8],
['key' => 'VICE_PRESIDENT', 'name' => '전무', 'sort_order' => 9],
['key' => 'CEO', 'name' => '대표', 'sort_order' => 10],
];
// 직책 (title)
$titles = [
['key' => 'MEMBER', 'name' => '팀원', 'sort_order' => 1],
['key' => 'PART_LEADER', 'name' => '파트장', 'sort_order' => 2],
['key' => 'TEAM_LEADER', 'name' => '팀장', 'sort_order' => 3],
['key' => 'DEPARTMENT_HEAD', 'name' => '실장', 'sort_order' => 4],
['key' => 'DIVISION_HEAD', 'name' => '본부장', 'sort_order' => 5],
['key' => 'CEO', 'name' => '대표이사', 'sort_order' => 6],
];
// 직급 생성
foreach ($ranks as $rank) {
Position::updateOrCreate(
[
'tenant_id' => $tenantId,
'type' => 'rank',
'key' => $rank['key'],
],
[
'name' => $rank['name'],
'sort_order' => $rank['sort_order'],
'is_active' => true,
]
);
}
// 직책 생성
foreach ($titles as $title) {
Position::updateOrCreate(
[
'tenant_id' => $tenantId,
'type' => 'title',
'key' => $title['key'],
],
[
'name' => $title['name'],
'sort_order' => $title['sort_order'],
'is_active' => true,
]
);
}
$this->command->info('Positions seeded: ' . count($ranks) . ' ranks, ' . count($titles) . ' titles');
}
}