6368258797
5개 메뉴 1:1 검증(Agent 5병렬) 후 발견된 mbom 메인 그리드 [BOM 복사] 누락 보완.
저장 매퍼는 PR-B5 saveBomAssignment 재사용 — 백엔드는 EBOM/MBOM 분기 이미 지원,
이번에 MBOM UI 진입점도 첫 노출.
신규 컴포넌트:
- BomCopyDialog.tsx — 품번/품명 readonly + E-BOM/M-BOM 셀렉트 상호배타 +
트리 미리보기 + AttachFileDropZone (docType=MBOM_DRAWING, accept=.stp,.step,.dwg,.dxf,.pdf)
- 메인 page.tsx [BOM 복사] 버튼 추가 + 체크 단건 검증 +
Machine(0000928) 외 동일 partNo 최신 M-BOM 자동 추천
신규 백엔드 (mbomService/Controller/Routes):
- searchAssignableMboms — 매퍼 productionplanning.getMbomListForSelect2 (4007~4014) 1:1
- previewMbomTree — getStructureOnly + finalize("ASSIGNED_MBOM")
- getLatestMbomByPartNo — 매퍼 getLatestMbomByPartNo (3426~3445) 1:1, Machine 외 자동 검색
- 라우트: GET /assignable-mboms, GET /mbom-preview/:objid, GET /latest-mbom-by-partno/:partNo
도면 업로드 차이: 운영 fn_uploadDrawingFiles 는 placeholder("구현 예정"). RPS 는
공용 AttachFileDropZone 재사용해 실구현 (target_objid=projectObjid).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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:YOUR_PASSWORD@YOUR_HOST:YOUR_PORT/YOUR_DB"
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월