220 lines
5.6 KiB
Markdown
220 lines
5.6 KiB
Markdown
# 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월
|