Files

209 lines
5.4 KiB
Markdown
Raw Permalink Normal View History

2025-08-21 09:41:46 +09:00
# 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
- **Database**: PostgreSQL ^8.11.3 (Raw Query with `pg`)
2025-08-21 09:41:46 +09:00
- **Authentication**: JWT + Passport
- **Testing**: Jest + Supertest
## 📋 프로젝트 구조
```
backend-node/
├── src/
│ ├── database/ # 데이터베이스 유틸리티
│ │ ├── db.ts # PostgreSQL Raw Query 헬퍼
│ │ └── ...
2025-08-21 09:41:46 +09:00
│ ├── controllers/ # HTTP 요청 처리
│ ├── services/ # 비즈니스 로직
│ ├── middleware/ # Express 미들웨어
│ │ └── errorHandler.ts
│ ├── utils/ # 유틸리티 함수
│ │ └── logger.ts
│ ├── types/ # TypeScript 타입 정의
│ │ └── common.ts
│ ├── validators/ # 입력 검증 스키마
│ └── app.ts # 애플리케이션 진입점
├── 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. 개발 서버 실행
2025-08-21 09:41:46 +09:00
```bash
npm run dev
```
### 5. 프로덕션 빌드
```bash
npm run build
npm start
```
## 📊 데이터베이스 스키마
PostgreSQL 데이터베이스를 직접 Raw Query로 사용합니다.
2025-08-21 09:41:46 +09:00
### 핵심 테이블
- `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 포맷팅
## 🔧 개발 가이드
### 새로운 API 추가
1. `src/controllers/`에 컨트롤러 생성
2. `src/services/`에 서비스 로직 생성
3. `src/types/`에 타입 정의 추가
4. `src/validators/`에 검증 스키마 추가
5. `src/app.ts`에 라우터 등록
### 데이터베이스 스키마 변경
1. SQL 마이그레이션 파일 작성 (`db/` 디렉토리)
2. PostgreSQL에서 직접 실행
3. 필요 시 TypeScript 타입 정의 업데이트 (`src/types/`)
2025-08-21 09:41:46 +09:00
## 📋 마이그레이션 체크리스트
### ✅ Phase 1: 기반 구축 (완료)
- [x] Node.js + TypeScript 프로젝트 설정
- [x] 기존 데이터베이스 스키마 분석
- [x] PostgreSQL Raw Query 시스템 구축
2025-08-21 09:41:46 +09:00
- [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월