사용자관리 등록
This commit is contained in:
@@ -763,6 +763,195 @@ export const logger = winston.createLogger({
|
||||
- [ ] 사용자 생성/수정 API
|
||||
- [ ] 사용자 비밀번호 변경 API
|
||||
|
||||
#### **Phase 2-2A: 사용자 관리 기능 Node.js 리팩토링 계획 (1주)**
|
||||
|
||||
**📋 사용자 관리 기능 Node.js 리팩토링 개요**
|
||||
|
||||
**목표**: 기존 Java Spring Boot의 사용자 관리 기능을 Node.js + TypeScript로 완전 리팩토링
|
||||
|
||||
**기존 Java 백엔드 (`@backend/`) 분석**
|
||||
|
||||
- Spring Framework 기반의 `AdminController`와 `AdminService`
|
||||
- MyBatis를 사용한 데이터베이스 접근
|
||||
- 사용자 CRUD, 권한 관리, 상태 변경 등 완전한 기능 구현
|
||||
|
||||
**현재 Node.js 백엔드 (`@backend-node/`) 상황**
|
||||
|
||||
- 기본적인 사용자 목록 조회만 더미 데이터로 구현
|
||||
- 실제 데이터베이스 연동 부족
|
||||
- 사용자 관리 핵심 기능 미구현
|
||||
|
||||
**🎯 리팩토링 목표**
|
||||
|
||||
1. **기존 Java 백엔드의 사용자 관리 기능을 Node.js로 완전 이전**
|
||||
2. **Prisma ORM을 활용한 데이터베이스 연동**
|
||||
3. **기존 API 응답 형식과 호환성 유지**
|
||||
4. **보안 및 인증 기능 강화**
|
||||
|
||||
**🛠️ 단계별 구현 계획**
|
||||
|
||||
**Phase 2-2A-1: 데이터베이스 스키마 및 모델 정리 (1일)**
|
||||
|
||||
- [x] Prisma 스키마에 `user_info` 테이블 정의 완료
|
||||
- [ ] 사용자 관련 추가 테이블 스키마 확인 (부서, 권한 등)
|
||||
- [ ] 데이터 타입 및 관계 정의
|
||||
|
||||
**Phase 2-2A-2: 핵심 사용자 관리 API 구현 (3일)**
|
||||
|
||||
**사용자 CRUD API**
|
||||
|
||||
```typescript
|
||||
// 기존 Java AdminController의 핵심 메서드들
|
||||
- GET /api/admin/users - 사용자 목록 조회 (페이징, 검색)
|
||||
- GET /api/admin/users/:userId - 사용자 상세 조회
|
||||
- POST /api/admin/users - 사용자 등록/수정
|
||||
- PUT /api/admin/users/:userId/status - 사용자 상태 변경
|
||||
- DELETE /api/admin/users/:userId - 사용자 삭제
|
||||
```
|
||||
|
||||
**사용자 관리 부가 기능**
|
||||
|
||||
```typescript
|
||||
- POST /api/admin/users/check-duplicate - 사용자 ID 중복 체크
|
||||
- POST /api/admin/users/reset-password - 비밀번호 초기화
|
||||
- GET /api/admin/users/:userId/history - 사용자 변경 이력
|
||||
- GET /api/admin/departments - 부서 목록 조회
|
||||
```
|
||||
|
||||
**Phase 2-2A-3: 서비스 레이어 구현 (2일)**
|
||||
|
||||
**AdminService 확장**
|
||||
|
||||
```typescript
|
||||
// 기존 Java AdminService의 핵심 메서드들
|
||||
- getEtcUserList() - 사용자 목록 조회
|
||||
- getEtcUserInfo() - 사용자 상세 정보
|
||||
- saveEtcUserInfo() - 사용자 저장/수정
|
||||
- checkDuplicateEtcUserId() - 중복 체크
|
||||
- changeUserStatus() - 상태 변경
|
||||
- getUserHistoryList() - 변경 이력
|
||||
```
|
||||
|
||||
**데이터베이스 연동**
|
||||
|
||||
```typescript
|
||||
- Prisma ORM을 사용한 PostgreSQL 연동
|
||||
- 트랜잭션 처리
|
||||
- 에러 핸들링 및 로깅
|
||||
```
|
||||
|
||||
**Phase 2-2A-4: 보안 및 검증 강화 (1일)**
|
||||
|
||||
**입력값 검증**
|
||||
|
||||
```typescript
|
||||
- 사용자 입력 데이터 검증
|
||||
- SQL 인젝션 방지
|
||||
- XSS 방지
|
||||
```
|
||||
|
||||
**권한 관리**
|
||||
|
||||
```typescript
|
||||
- 사용자별 권한 체크
|
||||
- 메뉴 접근 권한 검증
|
||||
- 역할 기반 접근 제어 (RBAC)
|
||||
```
|
||||
|
||||
**🔄 구현 우선순위**
|
||||
|
||||
**High Priority (1-2일차)**
|
||||
|
||||
1. 사용자 목록 조회 API (실제 DB 연동)
|
||||
2. 사용자 상세 조회 API
|
||||
3. 사용자 등록/수정 API
|
||||
4. 기본적인 에러 핸들링
|
||||
|
||||
**Medium Priority (3-4일차)**
|
||||
|
||||
1. 사용자 상태 변경 API
|
||||
2. 사용자 ID 중복 체크 API
|
||||
3. 부서 목록 조회 API
|
||||
4. 페이징 및 검색 기능
|
||||
|
||||
**Low Priority (5일차)**
|
||||
|
||||
1. 사용자 변경 이력 API
|
||||
2. 비밀번호 초기화 API
|
||||
3. 사용자 삭제 API
|
||||
4. 고급 검색 및 필터링
|
||||
|
||||
**🔧 기술적 고려사항**
|
||||
|
||||
**데이터베이스 연동**
|
||||
|
||||
- Prisma ORM 사용으로 타입 안전성 확보
|
||||
- 기존 PostgreSQL 스키마와 호환성 유지
|
||||
- 마이그레이션 스크립트 작성
|
||||
|
||||
**API 호환성**
|
||||
|
||||
- 기존 Java 백엔드와 동일한 응답 형식 유지
|
||||
- 프론트엔드 변경 최소화
|
||||
- 점진적 마이그레이션 지원
|
||||
|
||||
**성능 최적화**
|
||||
|
||||
- 데이터베이스 인덱스 활용
|
||||
- 쿼리 최적화
|
||||
- 캐싱 전략 수립
|
||||
|
||||
**📊 테스트 계획**
|
||||
|
||||
1. **단위 테스트**: 각 서비스 메서드별 테스트
|
||||
2. **통합 테스트**: API 엔드포인트별 테스트
|
||||
3. **데이터베이스 테스트**: 실제 DB 연동 테스트
|
||||
4. **성능 테스트**: 대용량 데이터 처리 테스트
|
||||
|
||||
**📝 기존 Java 코드 분석 결과**
|
||||
|
||||
**AdminController 주요 메서드**
|
||||
|
||||
```java
|
||||
// 사용자 목록 조회
|
||||
@RequestMapping("/admin/userMngList.do")
|
||||
public String userMngList(HttpServletRequest request, @RequestParam Map paramMap)
|
||||
|
||||
// 사용자 정보 저장
|
||||
@RequestMapping("/admin/saveUserInfo.do")
|
||||
public String saveUserInfo(HttpServletRequest request, @RequestParam Map paramMap)
|
||||
|
||||
// 사용자 ID 중복 체크
|
||||
@RequestMapping("/admin/checkDuplicateUserId.do")
|
||||
public String checkDuplicateUserId(HttpServletRequest request, @RequestParam Map paramMap)
|
||||
|
||||
// 사용자 상태 변경
|
||||
@RequestMapping("/admin/changeUserStatus.do")
|
||||
public String changeUserStatus(HttpServletRequest request, @RequestParam Map paramMap)
|
||||
```
|
||||
|
||||
**AdminService 주요 메서드**
|
||||
|
||||
```java
|
||||
// 사용자 목록 조회
|
||||
public List<Map<String, Object>> getEtcUserList(HttpServletRequest request, Map<String, Object> paramMap)
|
||||
|
||||
// 사용자 정보 저장
|
||||
public Map<String, Object> saveEtcUserInfo(HttpServletRequest request, Map<String, Object> paramMap)
|
||||
|
||||
// 사용자 ID 중복 체크
|
||||
public Map<String, Object> checkDuplicateEtcUserId(Map<String, Object> paramMap)
|
||||
|
||||
// 사용자 상태 변경
|
||||
public Map<String, Object> changeUserStatus(Map<String, Object> paramMap)
|
||||
```
|
||||
|
||||
**📋 다음 단계**
|
||||
|
||||
이 계획에 따라 **Phase 2-2A**를 시작하여 단계적으로 사용자 관리 기능을 구현하겠습니다.
|
||||
|
||||
**시작 지점**: 사용자 목록 조회 API부터 실제 데이터베이스 연동으로 구현
|
||||
|
||||
#### **Phase 2-2A: 메뉴 관리 API (완료 ✅)**
|
||||
|
||||
- [x] 관리자 메뉴 조회 API (`GET /api/admin/menus`) - **완료: 기존 `AdminController.getAdminMenuList()` 포팅**
|
||||
|
||||
Reference in New Issue
Block a user