Commit Graph

17 Commits

Author SHA1 Message Date
e241b96c72 fix(menu): 테넌트 Menu 생성 시 global_menu_id 연결 추가
- createMenuForBoard(): GlobalMenu 조회/생성 후 테넌트 Menu에 global_menu_id 설정
- restoreMenuForBoard(): 복원/생성 시에도 global_menu_id 연결
- is_customized: false 추가하여 글로벌 메뉴 연동 표시

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:18:24 +09:00
cfb6b3edc2 fix(menu): Tenant 모델의 active() 스코프 사용으로 수정
- Tenant::where('is_active', true) → Tenant::active()
- tenants 테이블에 is_active 컬럼이 없어 발생한 SQL 오류 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:14:21 +09:00
a84fc9ab77 feat(board-menu): 시스템 게시판 메뉴를 모든 테넌트에 자동 생성/삭제/복원
- createMenuForBoard(): 시스템 게시판 생성 시 GlobalMenu + 모든 활성 테넌트의 Menu에 추가
- deleteMenuForBoard(): 시스템 게시판 삭제 시 GlobalMenu + 모든 테넌트의 Menu 삭제
- restoreMenuForBoard(): 시스템 게시판 복원 시 GlobalMenu + 모든 테넌트의 Menu 복원/생성
- /menus 페이지(테넌트 메뉴)에서 시스템 게시판 메뉴가 모든 테넌트에 표시됨

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 23:12:04 +09:00
9deee61976 fix(menu): 시스템 게시판 생성 시 GlobalMenu + Menu 둘 다 추가
- createMenuForBoard(): 시스템 게시판 생성 시 global_menus와 menus 테이블 모두에 추가
- deleteMenuForBoard(): 시스템 게시판 삭제 시 GlobalMenu와 Menu 둘 다 삭제
- restoreMenuForBoard(): 시스템 게시판 복원 시 GlobalMenu와 Menu 둘 다 복원

이제 시스템 게시판이 /menus/global과 /menus 페이지 모두에 표시됨

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 22:55:36 +09:00
b1621a7147 fix(board-menu): 게시판 삭제/복원 시 메뉴 연동 로직 개선
- BoardController: *Board() → *AnyBoard() 메서드로 변경하여 메뉴 연동 활성화
- MenuService: restoreMenuForBoard() 메서드 추가
  - soft-deleted 메뉴 있으면 복원
  - 활성 메뉴가 이미 있으면 스킵 (중복 방지)
  - 둘 다 없으면 새로 생성
- BoardService: restoreAnyBoard()에서 board name 전달하도록 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 22:32:00 +09:00
cd6cf9746a feat(mng): 게시판-메뉴 자동 연동 및 URL 패턴 변경
## 주요 변경사항

### 게시판-메뉴 자동 연동
- 게시판 생성 시 메뉴 자동 생성 (BoardService.createBoardFromTemplate)
- 게시판 삭제 시 연결 메뉴 함께 삭제 (Soft Delete 연동)
- 게시판 복원 시 메뉴 재생성
- 게시판 영구삭제 시 메뉴 영구삭제

### 게시판 메뉴 보호
- MenuService: 게시판 연동 메뉴 수동 수정/삭제 방지
- isBoardMenuUrl(), isBoardMenu(), validateNotBoardUrl() 헬퍼 추가
- 8개 CRUD 메서드에 검증 로직 적용

### URL 패턴 변경
- 시스템 게시판: /system-boards/{code} → /customer-center/{code}
- 테넌트 게시판: /boards/{code} (변경 없음)

### UI 개선
- 메뉴 목록에서 게시판 메뉴 "📋 게시판" 뱃지 표시
- 게시판 메뉴는 수정/삭제 버튼 숨김 (활성/숨김 토글만 허용)
- 삭제된 게시판 행 클릭 시 404 오류 수정

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-27 21:54:48 +09:00
00a4920b7a feat: Global Menu 계층 이동 기능 추가 및 Role 삭제 오류 수정
Global Menu indent/outdent 기능:
- GlobalMenuController에 move() 메서드 추가
- MenuService에 moveGlobalMenu(), isGlobalDescendant(), reorderGlobalSiblings(), compactGlobalSiblings() 추가
- global-index.blade.php에 드래그 계층 이동 JavaScript 추가
- routes/api.php에 POST /move 라우트 추가

Role 삭제 500 에러 수정:
- config/auth.php에 api guard 추가 (Spatie Permission getModelForGuard 오류 해결)
- RoleService에서 불필요한 users()->detach() 제거 (FK CASCADE 처리)
- RoleController에서 HTMX 요청 시 View 직접 반환 (JSON 파싱 에러 해결)
- index.blade.php에서 불필요한 afterSwap 핸들러 제거

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 22:43:48 +09:00
0c1501f08b feat: 메뉴 관리 UI 개선
- 부모메뉴 선택 시 트리 구조 순서 + 인덴트 적용
- 아이콘 선택 UI를 이모지에서 Heroicons SVG로 변경
- 확장 옵션 기본 펼침 상태로 변경
2025-12-19 12:58:37 +09:00
36daf862b1 메뉴 영구삭제 기능 개선
- 메뉴 영구삭제 시 연관 권한도 함께 삭제
- 삭제 정보를 archived_records에 저장 (복구용)
  - 메뉴 데이터, 권한 목록, 역할-권한 연결 정보 보관
- batch_id를 순수 UUID로 변경 (컬럼 크기 제한 해결)
- 영구삭제 시 에러 메시지 토스트로 표시 (하위 메뉴 존재 등)
- 글로벌 메뉴 영구삭제 시 참조 테넌트 메뉴 연결 해제
2025-12-09 23:11:17 +09:00
f92b9335fc 메뉴 영구 삭제 시 연관 권한 삭제 및 아카이브 저장
- forceDeleteMenu: 연관 권한(menu:{id}.*) 함께 삭제
- forceDeleteGlobalMenu: 연관 권한 삭제 + 테넌트 메뉴 참조 해제
- 삭제 전 권한/역할 연결 정보를 archived_records에 저장
- Controller 반환값에 삭제된 권한 정보 포함
2025-12-09 22:51:20 +09:00
5db21095f3 feat: [메뉴] 글로벌 메뉴 관리 기능 구현 (슈퍼관리자 전용)
- 글로벌 메뉴 CRUD API 및 라우트 추가 (GlobalMenuController)
- 글로벌 메뉴 목록/생성/수정 뷰 추가 (보라색 테마)
- MenuService에 글로벌 메뉴 관련 메서드 11개 추가
- 메뉴 관리 페이지에 '글로벌 메뉴 관리' 버튼 추가
- 가져오기 모드에서 이미 가져온 메뉴 비활성화 표시
- super.admin 미들웨어로 접근 제어
2025-12-02 21:41:15 +09:00
7bba5e71a6 refactor: MenuService가 global_menus 테이블 사용하도록 수정
- getAvailableGlobalMenus(): GlobalMenu 모델 사용
- copyFromGlobal(): GlobalMenu 모델 사용
- Menu::whereNull('tenant_id') → GlobalMenu::query()로 변경
2025-12-02 20:50:25 +09:00
28b4ec8afd feat: [메뉴] 통합메뉴관리 - 글로벌에서 가져오기 기능 구현
- PULL 방식 메뉴 가져오기 (테넌트가 글로벌에서 선택적으로 가져옴)
- 모드 전환 UI (내 메뉴 / 글로벌에서 가져오기)
- 체크박스 선택으로 다중 메뉴 가져오기 지원
- 가져오기 모드에서 읽기 전용 상태 배지 표시
- hidden input으로 HTMX mode 파라미터 전달 수정
2025-12-02 19:16:23 +09:00
d8bae36efd feat: 메뉴 계층 이동 기능 추가
- MenuService.moveMenu() 메서드 추가 (부모 변경 + 하위 메뉴 유지)
- POST /api/admin/menus/move API 엔드포인트 추가
- 순환 참조 방지 로직 구현
- Shift+드래그로 위 메뉴의 하위로 이동 가능
- 사용법 안내 UI 추가
2025-12-01 15:35:49 +09:00
302b9d73aa feat: 메뉴 드래그 앤 드롭 정렬 기능 추가
- MenuService.reorderMenus() 메서드 추가
- MenuController.reorder() API 엔드포인트 추가
- POST /api/admin/menus/reorder 라우트 추가
- SortableJS 기반 드래그 앤 드롭 UI 구현
- 같은 부모 메뉴 내에서만 순서 변경 가능 (계층 구조 유지)
2025-12-01 15:24:49 +09:00
3992adc800 style: Laravel Pint 코드 스타일 자동 수정 2025-11-25 11:06:03 +09:00
79aebfa148 메뉴 관리 기능 개선
- 트리 구조 정렬 및 표시 (무제한 depth 지원)
- 접기/펼치기 기능 추가 (재귀적 처리)
- 활성/숨김 상태 토글 기능 (실시간 업데이트)
- 테넌트 필터링 (전체 선택 시 마스터 메뉴만 표시)
- UI 개선 (토글 버튼, 외부 메뉴 표시)

추가된 파일:
- MenuService: 비즈니스 로직 처리
- MenuController (API/Web): 라우트 처리
- MenuRequest: 유효성 검증
- views/menus/: 메뉴 관리 뷰

수정된 파일:
- routes/api.php, web.php: 메뉴 라우트 추가
2025-11-24 22:02:09 +09:00