# PLM System Backend - Node.js + TypeScript Java Spring Boot에서 Node.js + TypeScript로 리팩토링된 PLM 시스템 백엔드입니다. ## 🚀 기술 스택 - **Runtime**: Node.js ^20.10.0 - **Framework**: Express ^4.18.2 - **Language**: TypeScript ^5.3.3 - **ORM**: Prisma ^5.7.1 - **Database**: PostgreSQL ^8.11.3 - **Authentication**: JWT + Passport - **Testing**: Jest + Supertest ## 📋 프로젝트 구조 ``` backend-node/ ├── src/ │ ├── config/ # 설정 파일 │ │ ├── environment.ts │ │ └── database.ts │ ├── controllers/ # HTTP 요청 처리 │ ├── services/ # 비즈니스 로직 │ ├── middleware/ # Express 미들웨어 │ │ └── errorHandler.ts │ ├── utils/ # 유틸리티 함수 │ │ └── logger.ts │ ├── types/ # TypeScript 타입 정의 │ │ └── common.ts │ ├── validators/ # 입력 검증 스키마 │ └── app.ts # 애플리케이션 진입점 ├── prisma/ │ └── schema.prisma # 데이터베이스 스키마 ├── tests/ # 테스트 파일 ├── logs/ # 로그 파일 ├── package.json ├── tsconfig.json └── README.md ``` ## 🛠️ 설치 및 실행 ### 1. 의존성 설치 ```bash npm install ``` ### 2. 환경 변수 설정 `.env` 파일을 생성하고 다음 내용을 추가하세요: ```env DATABASE_URL="postgresql://postgres:ph0909!!@39.117.244.52:11132/plm" JWT_SECRET="your-super-secret-jwt-key-change-in-production" JWT_EXPIRES_IN="24h" PORT=8080 NODE_ENV=development ``` ### 3. Prisma 클라이언트 생성 ```bash npx prisma generate ``` ### 4. 개발 서버 실행 ```bash npm run dev ``` ### 5. 프로덕션 빌드 ```bash npm run build npm start ``` ## 📊 데이터베이스 스키마 기존 PostgreSQL 데이터베이스 스키마를 참고하여 Prisma 스키마를 설계했습니다. ### 핵심 테이블 - `user_info` - 사용자 정보 - `dept_info` - 부서 정보 - `menu_info` - 메뉴 정보 - `comm_code` - 공통 코드 - `multi_lang_key_master` - 다국어 키 마스터 - `multi_lang_text` - 다국어 텍스트 자세한 스키마 정보는 `docs/Database_Schema_Collection.md`를 참조하세요. ## 🔐 인증 시스템 JWT 기반 인증 시스템을 구현했습니다: - Access Token (24시간) - Refresh Token (7일) - 토큰 자동 갱신 ## 📝 API 문서 ### 헬스 체크 ``` GET http://localhost:8080/health ``` ### 사용자 관리 (예정) ``` GET http://localhost:8080/api/users # 사용자 목록 조회 GET http://localhost:8080/api/users/:id # 특정 사용자 조회 POST http://localhost:8080/api/users # 사용자 생성 PUT http://localhost:8080/api/users/:id # 사용자 수정 DELETE http://localhost:8080/api/users/:id # 사용자 삭제 ``` ### 메뉴 관리 (예정) ``` GET http://localhost:8080/api/menus # 메뉴 목록 조회 POST http://localhost:8080/api/menus # 메뉴 생성 PUT http://localhost:8080/api/menus/:id # 메뉴 수정 DELETE http://localhost:8080/api/menus/:id # 메뉴 삭제 ``` ## 🧪 테스트 ```bash # 전체 테스트 실행 npm test # 테스트 감시 모드 npm run test:watch ``` ## 📦 스크립트 - `npm run dev` - 개발 서버 실행 (nodemon) - `npm run build` - TypeScript 컴파일 - `npm start` - 프로덕션 서버 실행 - `npm test` - 테스트 실행 - `npm run lint` - ESLint 검사 - `npm run format` - Prettier 포맷팅 - `npx prisma studio` - Prisma Studio 실행 ## 🔧 개발 가이드 ### 새로운 API 추가 1. `src/controllers/`에 컨트롤러 생성 2. `src/services/`에 서비스 로직 생성 3. `src/types/`에 타입 정의 추가 4. `src/validators/`에 검증 스키마 추가 5. `src/app.ts`에 라우터 등록 ### 데이터베이스 스키마 변경 1. `prisma/schema.prisma` 수정 2. `npx prisma generate` 실행 3. `npx prisma migrate dev` 실행 ## 📋 마이그레이션 체크리스트 ### ✅ Phase 1: 기반 구축 (완료) - [x] Node.js + TypeScript 프로젝트 설정 - [x] 기존 데이터베이스 스키마 분석 - [x] Prisma 스키마 설계 및 마이그레이션 - [x] 기본 인증 시스템 구현 - [x] 에러 처리 및 로깅 설정 ### 🔄 Phase 2: 핵심 API 개발 (진행 중) - [ ] 사용자 관리 API (`user_info` 테이블 기반) - [ ] 부서 관리 API (`dept_info` 테이블 기반) - [ ] 메뉴 관리 API (`menu_info` 테이블 기반) - [ ] 권한 관리 API (`authority_master`, `rel_menu_auth` 테이블 기반) - [ ] 다국어 관리 API (`multi_lang_key_master`, `multi_lang_text` 테이블 기반) - [ ] 공통 코드 관리 API (`comm_code` 테이블 기반) ### ⏳ Phase 3: 비즈니스 로직 API (예정) - [ ] 회사 관리 API (`company_mng` 테이블 기반) - [ ] 계약 관리 API (`contract_mgmt` 테이블 기반) - [ ] 주문 관리 API (`order_mgmt` 테이블 기반) - [ ] 재고 관리 API (`inventory_mgmt` 테이블 기반) - [ ] 부품 관리 API (`part_mgmt` 테이블 기반) ## 🚀 배포 ### Docker 배포 ```bash # Docker 이미지 빌드 docker build -t pms-backend-node . # 컨테이너 실행 docker run -p 8080:8080 pms-backend-node ``` ### 환경별 설정 - **Development**: `NODE_ENV=development` - **Production**: `NODE_ENV=production` - **Test**: `NODE_ENV=test` ## 📞 지원 프로젝트 관련 문의사항이 있으시면 개발팀에 연락해주세요. --- **버전**: 1.0.0 **마지막 업데이트**: 2024년 12월