- sidebar-expanded-only 클래스가 hidden을 오버라이드하는 문제 해결
- !important로 hidden 클래스 우선순위 보장
- 사이드바 접힌 상태에서 검색창 숨김 처리
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 헤더에 검색 아이콘 추가 (클릭 시 검색창 토글)
- 실시간 메뉴 필터링 (검색어 입력 시 즉시 반영)
- 검색어 하이라이트 표시
- X 버튼으로 검색 모드 종료
- Ctrl+K / Cmd+K 단축키 지원
- ESC 키로 검색 닫기
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 페이지 로딩 시 블러 오버레이 + 프로그레스 바 추가
- 모든 스크립트 로드 완료 후 오버레이 fade-out
- 메뉴 그룹 상태를 서버에서 기본 펼침으로 렌더링
- localStorage 기반 메뉴 상태 CSS 즉시 적용
- FOUC(Flash of Unstyled Content) 방지
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## 수정 내용
### HTMX 응답 형식 수정
- DepartmentController: view 직접 반환 (JSON 래핑 제거)
- MenuController: ->render() 제거하여 SVG 이스케이프 문제 해결
### 사이드바 개선
- hx-boost 적용하여 SPA 스타일 네비게이션 구현
- 메뉴 클릭 시 활성화 상태 즉시 반영
- 스크롤 위치 저장/복원 기능 추가
### 불필요한 코드 제거
- departments/index.blade.php: JSON.parse 코드 제거
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## 주요 변경사항
### 게시판-메뉴 자동 연동
- 게시판 생성 시 메뉴 자동 생성 (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>
- 사이드바에 hx-boost 적용하여 메인 콘텐츠만 교체
- main-content 영역에 id 부여
- 메뉴 클릭 시 활성화 상태 JavaScript로 처리
- 페이지 전환 시 사이드바 스크롤 위치 유지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- HTMX 응답 에러 수정: JSON 래핑 대신 HTML 직접 반환
- MenuController, GlobalMenuController의 index 메소드 수정
- index.blade.php, global-index.blade.php의 JSON 파싱 로직 제거
- 메뉴 options 필드 검증 추가
- StoreMenuRequest, UpdateMenuRequest에 options 필드 추가
- section 변경이 정상 저장되도록 수정
- 개발도구 메뉴 하드코딩 제거, DB 기반 동적 렌더링
- sidebar.blade.php에서 하드코딩된 메뉴 제거
- tools-menu.blade.php 컴포넌트 신규 생성
- section=tools 메뉴가 하단 고정 영역에 동적 표시
- 소프트 삭제된 필드 목록에 표시 (withTrashed)
- 삭제된 필드 시각적 구분 (빨간 배경, '삭제됨' 배지)
- 필드 복원 기능 추가 (restore API)
- 필드 영구 삭제 기능 추가 (forceDelete API)
- 체크박스 선택 및 일괄 삭제 기능 추가
- 시스템 필드 삭제 제한 해제
- 커스텀 모달 적용 (showConfirm, showDeleteConfirm)
- R&D Labs 헤더, S/A/M 탭, 하위 메뉴 클릭 시 사이드바 최하단 스크롤
- localStorage로 스크롤 위치 저장/복원 (페이지 이동 후에도 유지)
- 일반 메뉴 클릭 시 스크롤 상태 초기화
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 사이드바 UI 텍스트 변경 (실험실 → R&D Labs)
- 라우트 및 컨트롤러 주석 업데이트
- AI/Management 컨트롤러 docblock 추가
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- S 메뉴 14개 항목을 <span> → <a> 태그로 변경
- 확장 상태 메뉴와 플라이아웃 메뉴 모두 수정
- 모든 lab.strategy.* 라우트 연결 완료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- AIController 생성 (12개 메서드)
- ManagementController 생성 (11개 메서드)
- A 메뉴 플레이스홀더 템플릿 12개 생성
- 사업자등록증 OCR, 웹 녹음 AI 요약, 회의록 AI 요약
- 업무협의록 AI 요약, 운영자용 챗봇, Vertex RAG 챗봇
- 테넌트 지식 업로드, 테넌트 챗봇, SAM AI 메뉴 이동
- SAM AI 알람음 제작, GPS 출퇴근 관리, 기업개황 조회
- M 메뉴 플레이스홀더 템플릿 11개 생성
- 바로빌 테넌트 관리, 전자세금계산서 전략, 전자세금계산서
- 사업자등록번호 진위 확인, 영업관리 & 매니저 미팅관리
- 카드 세무항목 매칭 전략, 한국 카드사 API 보고서
- 카드 사용내역 수집 후 매칭, 계좌입출금 내역 조회 API
- 영업관리 시나리오, 매니저 시나리오
- 라우트 23개 추가 (AI 12개, Management 11개)
- 사이드바 메뉴 라우트 연결 완료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CSS: hover 기반에서 .show 클래스 기반 표시로 변경
- CSS: ::before 가상 요소로 20px 투명 브릿지 추가
- JS: mouseenter/mouseleave + 150ms 딜레이 로직 구현
- 축소된 사이드바에서 플라이아웃 이동 시 메뉴 닫힘 현상 해결
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 실험실 그룹 (S: Strategy, A: AI/Automation, M: Management) 추가
- 확장 상태: S | A | M 수평 탭, 클릭 시 해당 패널 표시
- 축소 상태: 아이콘 호버 시 우측 플라이아웃 팝업
- localStorage 탭 상태 저장/복원
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 햄버거 버튼을 사이드바 로고 영역으로 이동
- 접힌 상태에서 'S' 버튼 표시 (클릭 시 확장)
- 접힌 상태 메뉴 아이콘에 JavaScript 기반 툴팁 추가
- 이벤트 위임 방식으로 페이지 전환 시에도 안정적 동작
- 브라우저 기본 title 툴팁과 충돌 방지
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- ItemField 모델 및 SystemFieldDefinitions 상수 클래스 추가
- ItemFieldSeedingService: 시스템 필드 시딩/초기화/커스텀 필드 CRUD
- ItemFieldController (API): HTMX 기반 시딩 상태, 커스텀 필드 관리
- 커스텀 필드 수정 기능 (시스템 필드는 source_table/field_key 수정 불가)
- 레거시 데이터 표시 개선: 소스 테이블 비어있으면 '미지정' 배지
- 필드 키 정책 변경: 숫자로 시작 허용 (영문/숫자/밑줄)
- AI 문의하기: 시딩 오류 보고서 생성 기능
- 사이드바에 품목기준 필드 관리 메뉴 추가
Daily Logs 페이지:
- 미완료 항목 상태 변경 시 카드 유지 (done만 제거)
- 카드 정렬을 날짜 오래된 순으로 변경
- 요약 내용 nl2br 적용 및 접힘 시 2줄 제한
- 아코디언 항목 담당자별 그룹핑으로 통합
Project Management 페이지:
- 오늘의 활동을 칸반(3열) → 담당자 카드 스타일로 변경
- 완료 항목도 함께 표시 (취소선, 초록 배지)
- 미완료/완료 건수 헤더에 표시
- Models: AdminPmProject, AdminPmTask, AdminPmIssue
- Services: ProjectService, TaskService, IssueService, ImportService
- API Controllers: ProjectController, TaskController, IssueController, ImportController
- FormRequests: Store/Update/BulkAction 요청 검증
- Views: 대시보드, 프로젝트 CRUD, JSON Import 화면
- Routes: API 42개 + Web 6개 엔드포인트
주요 기능:
- 프로젝트/작업/이슈 계층 구조 관리
- 상태 변경, 우선순위, 마감일 추적
- 작업 순서 드래그앤드롭 (reorder API)
- JSON Import로 일괄 등록
- Soft Delete 및 복원
- 역할/부서/개인 권한을 통합하여 최종 유효 권한 표시
- 권한 소스별 색상 구분 UI (보라=역할, 파랑=부서, 녹색=개인허용, 빨강=개인거부)
- 스마트 토글 로직 (상속된 권한 오버라이드 지원)
- UserPermissionService: getRolePermissions(), getDepartmentPermissions(), getPersonalOverrides()
- 사용자 ID 뱃지 스타일 개선
- DepartmentPermissionService 생성 (역할 권한 관리 패턴 적용)
- 부서별 메뉴 권한 매트릭스 관리
- 하위 부서 권한 자동 전파 기능
- 전체 허용/거부/초기화 기능
- HTMX 기반 실시간 권한 토글
- Department 모델의 HasRoles trait 활용
- model_has_permissions 테이블 사용
주요 파일:
- app/Services/DepartmentPermissionService.php
- app/Http/Controllers/DepartmentPermissionController.php
- app/Http/Controllers/Api/Admin/DepartmentPermissionController.php
- resources/views/department-permissions/index.blade.php
- resources/views/department-permissions/partials/*.blade.php
- routes/web.php, routes/api.php 라우트 추가
- sidebar 부서 권한 관리 메뉴 활성화
- 테넌트 선택을 각 페이지에서 헤더로 통합 이동
- 페이지 제목 이모지 제거 및 상단 여백(mt-6) 축소
- 역할 권한 관리 페이지 레이아웃을 다른 페이지와 통일
- 메뉴명 스타일 개선 (depth 들여쓰기, └ 기호 적용)
- 상위 메뉴 컬럼 제거로 테이블 간소화
- RolePermissionService에 depth 계산 로직 추가
- pagination.js를 body 끝으로 이동하여 로딩 오류 해결
- 역할 선택 UI를 셀렉트박스에서 버튼 형태로 변경
- 역할 버튼 hover 효과 개선 (선택된 버튼 가독성 향상)
변경된 파일:
- resources/views/partials/header.blade.php: 테넌트 선택 UI 추가
- resources/views/dashboard|menus|users|departments|permissions|roles/index.blade.php: tenant-selector 제거, 여백 축소
- resources/views/layouts/app.blade.php: pagination.js 위치 변경
- app/Services/RolePermissionService.php: depth 계산 로직 추가
- resources/views/role-permissions/: 역할 권한 관리 페이지 개선
- routes/web.php, routes/api.php: 역할 권한 관리 라우트 추가
- 메뉴를 4개 그룹으로 재구성 (시스템 관리, 권한 관리, 생산 관리, 시스템)
- 그룹 접기/펼치기 기능 추가 (localStorage 상태 저장)
- 그룹 내 메뉴 인덴트 적용 (2rem)
- 그룹 구분선 및 시각적 계층 구조 강화
- 권한 테이블 레이아웃 최적화 (한 줄 표시)
- 사이드바 메뉴 가이드 문서 작성 (SIDEBAR_MENU_GUIDE.md)
변경 파일:
- resources/views/partials/sidebar.blade.php
- resources/views/permissions/partials/table.blade.php
- SIDEBAR_MENU_GUIDE.md (신규)
- Permission 모델 및 PermissionService 생성 (Spatie Permission 확장)
- HTMX 기반 권한 CRUD API 구현
- Blade 기반 권한 관리 화면 (index, create, edit)
- 권한명 포맷팅 로직 추가 (menu:id.type 파싱)
- 사이드바 메뉴 추가
- 멀티테넌트 지원 (tenant_id nullable)
- 할당된 역할/부서 표시 기능
- CURRENT_WORKS.md: Phase 4-2~4-5 상세 작업 내역 추가 (365줄)
- docs/INDEX.md: Phase 4 완료 상태 업데이트
- docs/specs/database-schema.md: Phase 4 테이블 8개 상세 스키마 추가
- sidebar.blade.php: 메뉴 관리 링크 추가 (누락되어 있었음)
Phase 4 완료: 시스템 관리 5개 메뉴 (테넌트/역할/부서/사용자/메뉴)
- MNG_CRITICAL_RULES.md: DB 마이그레이션 금지 등 핵심 규칙
- UserController: 사용자 CRUD API 엔드포인트
- StoreUserRequest, UpdateUserRequest: 사용자 검증
- 사용자 관리 뷰: index, create, edit, table
- 시스템 관리 메뉴 UI 개선 (테이블 헤더 스타일)
- docs/INDEX.md: CRITICAL_RULES 링크 추가
- DepartmentService, DepartmentController (Blade/API) 생성
- 부서 CRUD 기능 완성 (목록/생성/수정/삭제)
- FormRequest 검증 (StoreDepartmentRequest, UpdateDepartmentRequest)
- HTMX 패턴 적용 (index, create, edit, partials/table)
- 계층 구조 지원 (parent-child relationships)
- 활성/비활성 상태 관리
- 정렬 순서 관리
- Tenant Selector 통합
- Sidebar 메뉴에 부서 관리 추가
주요 기능:
- 자기 참조 방지 (parent_id validation)
- 하위 부서 존재 시 삭제 방지
- Conditional tenant filtering 적용
- Active/Inactive 필터링
- HTMX 페이지네이션 (target, includeForm 파라미터 포함)
정책:
- 모든 리스트 화면은 1페이지만 있어도 페이지네이션 표시
주요 변경사항:
- Spatie Laravel Permission 패키지 설치 (v6.23.0)
- admin 프로젝트에서 필수 Traits 및 Scopes 복사
- ModelTrait, BelongsToTenant, HasTenantFilter, UppercaseAttributes
- TenantScope
- Tenant 모델 관계 수정 (hasMany → belongsToMany via user_tenants)
- Tenant 모델 null 처리 추가 (status_label, created_at)
- Laravel 12 bootstrap/app.php에 API 라우트 등록
- API 라우트 미들웨어 수정 (auth:sanctum → web,auth)
- HTMX 라이브러리 및 CSRF 토큰 헤더 추가
ViewServiceProvider 수정:
- 전역 View Composer의 $tenants 변수를 $globalTenants로 변경
- 페이지별 페이지네이션된 $tenants 변수와의 충돌 방지
- tenant-selector.blade.php에서 $globalTenants 사용
버그 수정:
- Collection::hasPages() 오류 해결 (ViewComposer 변수 덮어쓰기 문제)
- 테넌트 목록 무한 로딩 스피너 해결
- 500 Internal Server Error 해결