- Replaced the middleware `checkAuthStatus` with the `AuthController.checkAuthStatus` method in the authentication routes for improved clarity and structure. - Simplified token validation logic in the `useAuth` hook by removing unnecessary checks for expired tokens, allowing the API client to handle token refresh automatically. - Enhanced logging for authentication checks to provide clearer insights into the authentication flow and potential issues. - Adjusted the handling of user authentication status to ensure consistency and reliability in user state management. This refactor streamlines the authentication process and improves the overall maintainability of the authentication logic. |
||
|---|---|---|
| .. | ||
| data | ||
| scripts | ||
| src | ||
| uploads | ||
| .env.example | ||
| .env.shared | ||
| API_연동_가이드.md | ||
| API_키_정리.md | ||
| Dockerfile.win | ||
| PHASE1_USAGE_GUIDE.md | ||
| README.md | ||
| README_API_SETUP.md | ||
| install-multer.js | ||
| jest.config.js | ||
| nodemon.json | ||
| package-lock.json | ||
| package.json | ||
| performance-test.js | ||
| tsconfig.json | ||
README.md
re# 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) - Authentication: JWT + Passport
- Testing: Jest + Supertest
📋 프로젝트 구조
backend-node/
├── src/
│ ├── database/ # 데이터베이스 유틸리티
│ │ ├── db.ts # PostgreSQL Raw Query 헬퍼
│ │ └── ...
│ ├── 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. 의존성 설치
npm install
2. 환경 변수 설정
.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. 개발 서버 실행
npm run dev
5. 프로덕션 빌드
npm run build
npm start
📊 데이터베이스 스키마
PostgreSQL 데이터베이스를 직접 Raw Query로 사용합니다.
핵심 테이블
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 # 메뉴 삭제
🧪 테스트
# 전체 테스트 실행
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 추가
src/controllers/에 컨트롤러 생성src/services/에 서비스 로직 생성src/types/에 타입 정의 추가src/validators/에 검증 스키마 추가src/app.ts에 라우터 등록
데이터베이스 스키마 변경
- SQL 마이그레이션 파일 작성 (
db/디렉토리) - PostgreSQL에서 직접 실행
- 필요 시 TypeScript 타입 정의 업데이트 (
src/types/)
📋 마이그레이션 체크리스트
✅ Phase 1: 기반 구축 (완료)
- Node.js + TypeScript 프로젝트 설정
- 기존 데이터베이스 스키마 분석
- PostgreSQL Raw Query 시스템 구축
- 기본 인증 시스템 구현
- 에러 처리 및 로깅 설정
🔄 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 배포
# 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월