From ee167a112e922a32b403622ae4fa600752165508 Mon Sep 17 00:00:00 2001 From: hskwon Date: Mon, 24 Nov 2025 23:07:09 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20Phase=204=20=EC=99=84=EB=A3=8C=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A9=94=EB=89=B4=20=EA=B4=80=EB=A6=AC=20=EB=A7=81?= =?UTF-8?q?=ED=81=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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개 메뉴 (테넌트/역할/부서/사용자/메뉴) --- CURRENT_WORKS.md | 365 ++++++++++++++++++++- docs/INDEX.md | 51 ++- resources/views/partials/sidebar.blade.php | 11 + 3 files changed, 410 insertions(+), 17 deletions(-) diff --git a/CURRENT_WORKS.md b/CURRENT_WORKS.md index 95951170..111ee499 100644 --- a/CURRENT_WORKS.md +++ b/CURRENT_WORKS.md @@ -416,7 +416,364 @@ ### 다음 단계: - [ ] 다른 목록 페이지에 페이지네이션 적용 - [ ] 페이지당 표시 개수 선택 기능 추가 고려 -### Git 상태: -- 🔄 수정됨: `resources/views/tenants/partials/table.blade.php` -- ➕ 추가됨: `resources/views/partials/pagination.blade.php` -- ⏳ 커밋 대기 중 (사용자 확인 후 커밋 예정) \ No newline at end of file +### Git 커밋: +- ✅ `43af1a5` "페이지네이션 기능 개선 및 공통화" + +--- + +## 2025-11-24 (일) - Phase 4-2: 역할 관리 시스템 구현 + +### 주요 작업 +- 역할 CRUD 완전 구현 (Spatie Permission 패키지 활용) +- 권한 선택 UI 구현 (체크박스, 전체 선택/해제) +- HTMX + API 패턴 적용 +- 페이지네이션 공통 컴포넌트 생성 + +### 추가된 파일: +- `app/Services/RoleService.php` - 역할 비즈니스 로직 (Spatie Role 모델 사용) +- `app/Http/Controllers/RoleController.php` - Blade 화면 컨트롤러 +- `app/Http/Controllers/Api/Admin/RoleController.php` - HTMX API 컨트롤러 +- `app/Http/Requests/StoreRoleRequest.php` - 역할 생성 검증 +- `app/Http/Requests/UpdateRoleRequest.php` - 역할 수정 검증 +- `resources/views/roles/index.blade.php` - 역할 목록 (HTMX 로딩) +- `resources/views/roles/create.blade.php` - 역할 생성 폼 +- `resources/views/roles/edit.blade.php` - 역할 수정 폼 +- `resources/views/roles/partials/table.blade.php` - 역할 테이블 +- `resources/views/partials/pagination.blade.php` - 공통 페이지네이션 컴포넌트 + +### 수정된 파일: +- `resources/views/partials/sidebar.blade.php` - 역할 관리 메뉴 추가 +- `routes/web.php` - 역할 관리 라우트 추가 (index, create, edit) +- `routes/api.php` - 역할 관리 API 라우트 추가 (CRUD) + +### 기능 상세: + +**역할 관리 CRUD:** +- 역할 목록: HTMX 동적 로딩, 검색 필터, 페이지네이션 +- 역할 생성: 이름/설명 입력, 권한 선택 (체크박스) +- 역할 수정: 기존 정보 편집, 권한 변경 +- 역할 삭제: Soft Delete (복구 가능) + +**권한 선택 UI:** +- 그리드 레이아웃 (3열) +- 체크박스로 권한 선택 +- 전체 선택/해제 버튼 +- 현재 권한 개수 표시 + +**RoleService 주요 메서드:** +- `getRoles(filters, perPage)`: 역할 목록 조회 (페이지네이션) +- `getRoleById(id)`: 특정 역할 조회 (권한 포함) +- `createRole(data)`: 역할 생성 + 권한 동기화 (`syncPermissions()`) +- `updateRole(id, data)`: 역할 수정 + 권한 동기화 +- `deleteRole(id)`: 역할 삭제 (권한/사용자 연결 해제) +- `isNameExists(name, excludeId)`: 역할 이름 중복 체크 +- `getActiveRoles()`: 활성 역할 목록 (드롭다운용) +- `getRoleStats()`: 역할 통계 (전체 수, 권한 있는 역할 수) + +**Spatie Permission 통합:** +- `Spatie\Permission\Models\Role` 모델 사용 +- `syncPermissions()`: 역할-권한 동기화 +- `permissions` 관계: 역할에 할당된 권한 조회 +- Multi-tenant 지원: `tenant_id` 필터링 + +**HTMX 패턴:** +- 목록 화면: `hx-get="/api/admin/roles"` (필터 포함) +- 생성/수정: `hx-post`, `hx-put` (JSON 응답 → 리다이렉트) +- 삭제: `confirmDelete()` JavaScript → HTMX DELETE 요청 + +**페이지네이션 컴포넌트:** +- 모바일: 이전/다음 버튼만 +- 데스크톱: 전체 페이지 번호 표시 +- HTMX 호환: `hx-get`, `hx-target`, `hx-include` +- 재사용 가능: `@include('partials.pagination', [...])` + +### 테넌트 필터링: +- 세션에 `selected_tenant_id` 있으면 해당 테넌트만 +- 없으면 전체 테넌트 데이터 표시 +- 역할/권한 모두 테넌트 필터링 적용 + +### 빌드 결과: +- **변경 파일**: 17개 +- **추가 코드**: +1331줄, -106줄 + +### Git 커밋: +- ✅ `5f50716` "feat: Phase 4-2 역할 관리 시스템 구현 (HTMX + API 패턴)" + +--- + +## 2025-11-24 (일) - Phase 4-3: 부서 관리 시스템 구현 + +### 주요 작업 +- 부서 CRUD 완전 구현 (계층 구조 지원) +- 활성/비활성 상태 관리 +- HTMX + API 패턴 적용 + +### 추가된 파일: +- `app/Services/DepartmentService.php` - 부서 비즈니스 로직 +- `app/Http/Controllers/DepartmentController.php` - Blade 화면 컨트롤러 +- `app/Http/Controllers/Api/Admin/DepartmentController.php` - HTMX API 컨트롤러 +- `app/Http/Requests/StoreDepartmentRequest.php` - 부서 생성 검증 +- `app/Http/Requests/UpdateDepartmentRequest.php` - 부서 수정 검증 +- `resources/views/departments/index.blade.php` - 부서 목록 +- `resources/views/departments/create.blade.php` - 부서 생성 폼 +- `resources/views/departments/edit.blade.php` - 부서 수정 폼 +- `resources/views/departments/partials/table.blade.php` - 부서 테이블 + +### 수정된 파일: +- `resources/views/partials/sidebar.blade.php` - 부서 관리 메뉴 추가 +- `routes/web.php` - 부서 관리 라우트 추가 +- `routes/api.php` - 부서 관리 API 라우트 추가 + +### 기능 상세: + +**부서 계층 구조:** +- Self-referential relationship: `parent_id` → `departments.id` +- 상위 부서 선택 가능 (드롭다운) +- 자기 자신을 상위 부서로 선택 방지 (FormRequest 검증) +- 하위 부서 존재 시 삭제 방지 + +**DepartmentService 주요 메서드:** +- `getDepartments(filters, perPage)`: 부서 목록 조회 +- `getDepartmentById(id)`: 특정 부서 조회 +- `createDepartment(data)`: 부서 생성 +- `updateDepartment(id, data)`: 부서 수정 +- `deleteDepartment(id)`: 부서 삭제 (하위 부서 체크) +- `getActiveDepartments()`: 활성 부서 목록 (드롭다운용) +- `getDepartmentTree()`: 계층 구조 트리 (향후 구현) + +**활성 상태 관리:** +- `is_active` 컬럼: 활성(1) / 비활성(0) +- 활성 필터: `active` scope 적용 +- UI: 활성 상태 뱃지 표시 + +**정렬 순서:** +- `sort_order` 컬럼: 표시 순서 지정 +- 기본 정렬: `sort_order ASC`, `name ASC` + +### 검증 규칙: + +**StoreDepartmentRequest:** +- `name`: 필수, 최대 100자 +- `parent_id`: 선택, 존재하는 부서 ID +- `sort_order`: 선택, 정수 +- `is_active`: 불리언 (기본값: true) + +**UpdateDepartmentRequest:** +- 위와 동일 + 자기 참조 방지 +- `parent_id` ≠ 현재 부서 ID + +### Git 커밋: +- ✅ `6738505` "feat: Phase 4-3 부서 관리 시스템 구현" + +--- + +## 2025-11-24 (일) - 사용자 관리 기능 추가 + +### 주요 작업 +- 사용자 CRUD 완전 구현 +- UserService, FormRequest, Blade Views 생성 +- MNG_CRITICAL_RULES.md 문서 추가 +- 테이블 헤더 스타일 통일 + +### 추가된 파일: +- `app/Http/Controllers/UserController.php` - Blade 화면 컨트롤러 +- `app/Http/Controllers/Api/Admin/UserController.php` - HTMX API 컨트롤러 +- `app/Http/Requests/StoreUserRequest.php` - 사용자 생성 검증 +- `app/Http/Requests/UpdateUserRequest.php` - 사용자 수정 검증 +- `resources/views/users/index.blade.php` - 사용자 목록 +- `resources/views/users/create.blade.php` - 사용자 생성 폼 +- `resources/views/users/edit.blade.php` - 사용자 수정 폼 +- `resources/views/users/partials/table.blade.php` - 사용자 테이블 +- `docs/MNG_CRITICAL_RULES.md` - MNG 프로젝트 핵심 규칙 문서 + +### 수정된 파일: +- `resources/views/partials/sidebar.blade.php` - 사용자 관리 메뉴 이동 +- `routes/web.php` - 사용자 관리 라우트 추가 +- `routes/api.php` - 사용자 관리 API 라우트 추가 +- 테이블 헤더 스타일 통일 (tenants, roles, departments) + +### 기능 상세: + +**사용자 관리 CRUD:** +- 사용자 목록: 검색, 필터링 (역할, 부서, 활성 상태) +- 사용자 생성: 이름, 이메일, 비밀번호, 역할, 부서, 테넌트 +- 사용자 수정: 정보 변경, 비밀번호 변경 (선택) +- 사용자 삭제: Soft Delete + +**MNG_CRITICAL_RULES.md:** +- DB 마이그레이션 금지 (API 프로젝트에서만 실행) +- 모델 독립 운영 (admin, api, mng 각각 독립) +- Filament 의존성 제거 +- Service-First 패턴 강제 +- FormRequest 검증 필수 + +### Git 커밋: +- ✅ `0c86b39` "feat: 사용자 관리 기능 및 MNG 문서 추가" + +--- + +## 2025-11-24 (일) - 사용자 관리 복구 및 영구삭제 기능 추가 + +### 주요 작업 +- UserService에 복구/영구삭제 메서드 추가 +- Audit 컬럼 처리 (created_by, updated_by, deleted_by) +- 삭제된 사용자 UI 표시 + +### 수정된 파일: +- `app/Services/UserService.php` - restoreUser(), forceDeleteUser() 추가 +- `app/Http/Controllers/Api/Admin/UserController.php` - restore, forceDestroy 엔드포인트 +- `resources/views/users/index.blade.php` - 삭제된 항목 필터 체크박스 +- `resources/views/users/partials/table.blade.php` - 복원/영구삭제 버튼 +- `routes/api.php` - restore, forceDestroy 라우트 추가 + +### 기능 상세: + +**복구 기능:** +- Soft Delete된 사용자 복원 +- `withTrashed()`: 삭제된 사용자 포함 조회 +- UI: 삭제된 사용자에 "복원" 버튼 표시 + +**영구삭제 기능:** +- 물리적 삭제 (복구 불가) +- 권한 체크: 슈퍼관리자만 가능 +- UI: 삭제된 사용자에 "영구삭제" 버튼 표시 (빨간색) + +**Audit 컬럼 처리:** +- `created_by`: 생성자 ID +- `updated_by`: 수정자 ID +- `deleted_by`: 삭제자 ID +- 자동 기록: `auth()->id()` + +### Git 커밋: +- ✅ `8940557` "사용자 관리 복구 및 영구삭제 기능 추가" + +--- + +## 2025-11-24 (일) - 메뉴 관리 기능 개선 + +### 주요 작업 +- 메뉴 트리 구조 완전 구현 (무제한 depth) +- 접기/펼치기 기능 (재귀적 처리) +- 활성/숨김 상태 토글 (실시간 업데이트) +- 테넌트 필터링 (마스터 메뉴 지원) + +### 추가된 파일: +- `app/Services/MenuService.php` - 메뉴 비즈니스 로직 (트리 구조) +- `app/Http/Controllers/MenuController.php` - Blade 화면 컨트롤러 +- `app/Http/Controllers/Api/Admin/MenuController.php` - HTMX API 컨트롤러 +- `app/Http/Requests/StoreMenuRequest.php` - 메뉴 생성 검증 +- `app/Http/Requests/UpdateMenuRequest.php` - 메뉴 수정 검증 +- `resources/views/menus/index.blade.php` - 메뉴 목록 (트리 구조) +- `resources/views/menus/create.blade.php` - 메뉴 생성 폼 +- `resources/views/menus/edit.blade.php` - 메뉴 수정 폼 +- `resources/views/menus/partials/table.blade.php` - 메뉴 트리 테이블 + +### 수정된 파일: +- `routes/web.php` - 메뉴 관리 라우트 추가 +- `routes/api.php` - 메뉴 관리 API 라우트 추가 (tree, toggleActive, toggleHidden) + +### 기능 상세: + +**트리 구조:** +- 무제한 depth 지원 +- 재귀적 렌더링 (Blade recursive include) +- 인덴트로 계층 표시 +- 접기/펼치기 아이콘 + +**MenuService 주요 메서드:** +- `getMenus(filters)`: 메뉴 목록 (flat) +- `getMenuTree(filters)`: 트리 구조 메뉴 (재귀 쿼리) +- `createMenu(data)`: 메뉴 생성 +- `updateMenu(id, data)`: 메뉴 수정 +- `deleteMenu(id)`: 메뉴 삭제 (하위 메뉴 체크) +- `toggleActive(id)`: 활성 상태 토글 +- `toggleHidden(id)`: 숨김 상태 토글 + +**토글 기능:** +- 활성/비활성: `is_active` 토글 +- 숨김/표시: `is_hidden` 토글 +- HTMX 실시간 업데이트 (페이지 새로고침 없음) + +**테넌트 필터링:** +- 전체 선택: 마스터 메뉴만 표시 (`tenant_id IS NULL`) +- 특정 테넌트: 해당 테넌트 메뉴만 +- 외부 메뉴 표시: `external_link` 컬럼 + +### Git 커밋: +- ✅ `79aebfa` "메뉴 관리 기능 개선" + +--- + +## 📊 Phase 4 완료 요약 (2025-11-24) + +### 구현된 모든 관리 기능: + +**✅ Phase 4-1: 테넌트 관리** +- CRUD, 복구/영구삭제, 페이지네이션 +- 커밋: 575e9df, 0f21445, bc3777a + +**✅ Phase 4-2: 역할 관리** +- CRUD, 권한 할당/해제, Spatie Permission 통합 +- 커밋: 5f50716 + +**✅ Phase 4-3: 부서 관리** +- CRUD, 계층 구조, 활성 상태 관리 +- 커밋: 6738505 + +**✅ Phase 4-4: 사용자 관리** +- CRUD, 복구/영구삭제, 역할/부서 연결 +- 커밋: 0c86b39, 8940557 + +**✅ Phase 4-5: 메뉴 관리** +- CRUD, 트리 구조, 토글 기능 +- 커밋: 79aebfa + +### 공통 컴포넌트: +- ✅ `partials/pagination.blade.php` - 재사용 가능 페이지네이션 +- ✅ `partials/tenant-selector.blade.php` - 테넌트 선택기 +- ✅ `partials/sidebar.blade.php` - 좌측 메뉴 +- ✅ `partials/header.blade.php` - 상단 헤더 + +### 공통 패턴: +- ✅ Service-First 아키텍처 +- ✅ FormRequest 검증 +- ✅ HTMX + API 패턴 +- ✅ Multi-tenant 필터링 +- ✅ Soft Delete + 복구/영구삭제 +- ✅ Audit 로그 (created_by, updated_by, deleted_by) + +### 문서: +- ✅ `docs/MNG_CRITICAL_RULES.md` - 핵심 규칙 +- ✅ `docs/TROUBLESHOOTING.md` - 트러블슈팅 가이드 +- ✅ `docs/INDEX.md` - 문서 인덱스 + +### 통계: +- **추가 파일**: 60개 이상 +- **추가 코드**: 5,000줄 이상 +- **커밋 수**: 12개 +- **작업 기간**: 2025-11-24 하루 + +--- + +## 📋 다음 단계 (Phase 5 이후) + +### Phase 5: 제품/자재 관리 +- [ ] 제품 관리 (Products) +- [ ] 자재 관리 (Materials) +- [ ] 카테고리 관리 (Categories) + +### Phase 6: BOM 관리 +- [ ] BOM 구조 (Bill of Materials) +- [ ] BOM 버전 관리 +- [ ] BOM 트리 뷰 + +### Phase 7: 시스템 관리 +- [ ] 감사 로그 (Audit Logs) +- [ ] 시스템 설정 (Settings) +- [ ] 알림 관리 (Notifications) + +--- + +**최종 업데이트**: 2025-11-24 22:30 +**현재 Phase**: Phase 4 완료, Phase 5 준비 중 +**다음 작업**: 제품 관리 시스템 구현 \ No newline at end of file diff --git a/docs/INDEX.md b/docs/INDEX.md index 32f982a4..6ad40606 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -54,26 +54,41 @@ ### 현재 진행 상황 - ✅ **Phase 1**: 인증 시스템 (AuthService, LoginController, User 모델) - ✅ **Phase 2**: 레이아웃 구조 (sidebar + header, Pure Tailwind) - ✅ **Phase 3**: 테넌트 선택 기능 (TenantController, ViewServiceProvider) +- ✅ **Phase 4**: 시스템 관리 메뉴 완성 (2025-11-24) + - ✅ Phase 4-1: 테넌트 관리 (CRUD, 복구/영구삭제) + - ✅ Phase 4-2: 역할 관리 (CRUD, 권한 할당, Spatie Permission) + - ✅ Phase 4-3: 부서 관리 (CRUD, 계층 구조) + - ✅ Phase 4-4: 사용자 관리 (CRUD, 복구/영구삭제) + - ✅ Phase 4-5: 메뉴 관리 (CRUD, 트리 구조, 토글) -**진행 중 Phase:** -- 🔄 **Phase 4**: 시스템 관리 메뉴 (admin/ Filament 기능 이식) - - 테넌트 관리 - - 사용자 관리 - - 메뉴 관리 - - 역할/부서/권한 관리 - -**계획된 Phase:** -- ⏳ **Phase 5**: 제품/자재 관리 -- ⏳ **Phase 6**: BOM/카테고리 관리 +**다음 Phase:** +- 🎯 **Phase 5**: 제품/자재 관리 + - [ ] 제품 관리 (Products) + - [ ] 자재 관리 (Materials) + - [ ] 카테고리 관리 (Categories) +- ⏳ **Phase 6**: BOM 관리 + - [ ] BOM 구조 (Bill of Materials) + - [ ] BOM 버전 관리 +- ⏳ **Phase 7**: 시스템 관리 + - [ ] 감사 로그 (Audit Logs) + - [ ] 시스템 설정 (Settings) ### 프로젝트 문서 + +**MNG 프로젝트:** - **[🚨 MNG_CRITICAL_RULES.md](./MNG_CRITICAL_RULES.md)** - 절대 위반 금지 규칙 (필독!) - **[CURRENT_WORKS.md](../CURRENT_WORKS.md)** - 현재 작업 진행 상황 +- **[TROUBLESHOOTING.md](./TROUBLESHOOTING.md)** - 트러블슈팅 가이드 - **[MIGRATION_PLAN.md](./MIGRATION_PLAN.md)** - Admin → MNG 마이그레이션 계획 (Phase 4) - **[claudedocs/mng/MNG_PROJECT_PLAN.md](../../claudedocs/mng/MNG_PROJECT_PLAN.md)** - 전체 프로젝트 계획 - **[claudedocs/mng/DEV_PROCESS.md](../../claudedocs/mng/DEV_PROCESS.md)** - 개발 프로세스 (HTMX + API 방식) - **[claudedocs/mng/SETUP_GUIDE.md](../../claudedocs/mng/SETUP_GUIDE.md)** - 초기 설정 가이드 +**SAM 공통 문서:** +- **[📊 ../../docs/specs/database-schema.md](../../docs/specs/database-schema.md)** - 데이터베이스 스키마 (Phase 4: 8개 테이블 상세) +- **[../../docs/INDEX.md](../../docs/INDEX.md)** - SAM 전체 문서 네비게이션 +- **[../../docs/reference/architecture.md](../../docs/reference/architecture.md)** - SAM 아키텍처 + --- ## 🏗️ 아키텍처 @@ -246,9 +261,19 @@ ## 📝 작업 이력 **2025-11-21 (목)** - 문서 체계화 (INDEX.md 작성) - 공통 문서 업데이트 (CLAUDE.md, docs/INDEX.md, architecture.md) +- Phase 4-1: 테넌트 관리 백엔드/프론트엔드 구현 + +**2025-11-24 (일)** +- Phase 4-2: 역할 관리 시스템 구현 (Spatie Permission 통합) +- Phase 4-3: 부서 관리 시스템 구현 (계층 구조) +- Phase 4-4: 사용자 관리 기능 추가 (복구/영구삭제) +- Phase 4-5: 메뉴 관리 기능 개선 (트리 구조, 토글) +- 공통 컴포넌트: 페이지네이션, 테넌트 선택기 +- 문서: MNG_CRITICAL_RULES.md, TROUBLESHOOTING.md 추가 +- **Phase 4 완료**: 시스템 관리 메뉴 5개 완성 (60+ 파일, 5,000+ 줄) --- -**최종 업데이트**: 2025-11-21 -**버전**: 1.0 -**상태**: Phase 3 완료, Phase 4 준비 중 \ No newline at end of file +**최종 업데이트**: 2025-11-24 +**버전**: 2.0 +**상태**: Phase 4 완료, Phase 5 준비 중 \ No newline at end of file diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php index 60d321cc..8229442c 100644 --- a/resources/views/partials/sidebar.blade.php +++ b/resources/views/partials/sidebar.blade.php @@ -64,6 +64,17 @@ class="flex items-center gap-3 px-4 py-3 rounded-lg text-gray-700 hover:bg-gray- + +
  • + + + + + 메뉴 관리 + +
  • +