- TriggerAuditLog 모델 (casts, accessors, scopes) - TriggerAuditController (목록/상세/이력/롤백 미리보기/롤백 실행) - index: 대시보드 통계 + 필터 + 목록 + 파티션 현황 - show: old/new diff 뷰 (변경 컬럼 하이라이트) - history: 레코드별 변경 타임라인 - rollback-preview: SQL 미리보기 + 확인 후 실행 - 라우트 5개 등록, 메뉴 시더 (시스템 관리 > DB 변경 추적) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
66 lines
1.9 KiB
PHP
66 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Commons\Menu;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class TriggerAuditMenuSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$tenantId = 1;
|
|
|
|
// 시스템 관리 부모 메뉴 찾기
|
|
$parentMenu = Menu::where('tenant_id', $tenantId)
|
|
->where('name', '시스템 관리')
|
|
->first();
|
|
|
|
if (! $parentMenu) {
|
|
$this->command->error('시스템 관리 메뉴를 찾을 수 없습니다.');
|
|
|
|
return;
|
|
}
|
|
|
|
// 이미 존재하는지 확인
|
|
$existingMenu = Menu::where('tenant_id', $tenantId)
|
|
->where('name', 'DB 변경 추적')
|
|
->where('parent_id', $parentMenu->id)
|
|
->first();
|
|
|
|
if ($existingMenu) {
|
|
$this->command->info('DB 변경 추적 메뉴가 이미 존재합니다.');
|
|
|
|
return;
|
|
}
|
|
|
|
// 현재 자식 메뉴 최대 sort_order 확인
|
|
$maxSort = Menu::where('parent_id', $parentMenu->id)
|
|
->max('sort_order') ?? 0;
|
|
|
|
// 메뉴 생성
|
|
$menu = Menu::create([
|
|
'tenant_id' => $tenantId,
|
|
'parent_id' => $parentMenu->id,
|
|
'name' => 'DB 변경 추적',
|
|
'url' => '/trigger-audit',
|
|
'icon' => 'database',
|
|
'sort_order' => $maxSort + 1,
|
|
'is_active' => true,
|
|
]);
|
|
|
|
$this->command->info("메뉴 생성 완료: {$menu->name} (sort_order: {$menu->sort_order})");
|
|
|
|
// 하위 메뉴 목록 출력
|
|
$this->command->info('');
|
|
$this->command->info('=== 시스템 관리 하위 메뉴 ===');
|
|
$children = Menu::where('parent_id', $parentMenu->id)
|
|
->orderBy('sort_order')
|
|
->get(['name', 'url', 'sort_order']);
|
|
|
|
foreach ($children as $child) {
|
|
$this->command->info("{$child->sort_order}. {$child->name} ({$child->url})");
|
|
}
|
|
}
|
|
}
|