diff --git a/CLAUDE.md b/CLAUDE.md index 844e3bb..ce9967e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -122,6 +122,59 @@ docker exec sam-api-1 php artisan migrate --- +## 메뉴 관리 규칙 (필수) + +> **경고: 메뉴 시더(Seeder)를 절대 실행하지 마세요!** + +### 배경 + +메뉴 시더 실행 시 부서별 권한 설정(permission_overrides)이 초기화되는 문제가 반복 발생합니다. +메뉴 ID가 변경되면 기존 부서-메뉴 권한 매핑이 깨지기 때문입니다. + +### 금지 사항 + +``` +❌ php artisan db:seed --class=MngMenuSeeder 실행 금지 +❌ php artisan db:seed --class=*MenuSeeder 실행 금지 +❌ 메뉴 시더 파일 생성 금지 +❌ 메뉴 데이터를 일괄 삭제 후 재생성하는 방식 금지 +``` + +### 메뉴 변경 시 올바른 절차 + +메뉴 추가/수정/삭제/이동이 필요할 때는 **사용자에게 수동 실행 안내**를 제공합니다: + +1. **tinker 명령어를 안내** (사용자가 직접 실행) +2. **또는 SQL 쿼리를 안내** (사용자가 phpMyAdmin 등에서 직접 실행) +3. **절대 시더를 만들어 실행하지 않음** + +### 안내 예시 + +``` +메뉴를 추가하려면 아래 명령을 서버에서 실행해 주세요: + +ssh sam-server "cd /home/webservice/mng && php artisan tinker --execute=\" +App\\Models\\Commons\\Menu::create([ + 'tenant_id' => 1, + 'parent_id' => <부모ID>, + 'name' => '새 메뉴', + 'url' => '/new-menu', + 'icon' => 'icon-name', + 'sort_order' => 1, + 'is_active' => true, +]); +\"" +``` + +### 체크리스트 (메뉴 변경 요청 시) + +- [ ] 시더 파일 생성하지 않음 +- [ ] 시더 실행하지 않음 +- [ ] tinker 또는 SQL로 개별 레코드만 수정 +- [ ] 변경 후 부서 권한 설정이 유지되는지 확인 + +--- + ## Docker 환경 (필수 인지) > **중요: 로컬 개발 환경은 Docker 기반입니다!**