사용자관리 등록

This commit is contained in:
kjs
2025-08-25 13:12:17 +09:00
parent 8667cb4780
commit ce130ee225
9 changed files with 1256 additions and 170 deletions

View File

@@ -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()` 포팅**