7779f37c17
PART Excel Import (M1·M2 공용):
- /partMng/openPartExcelImportPopUp.do + partParsingExcelFile.do + partUploadSave.do 1:1
- 22컬럼 파싱 + NOTE 누적 검증 (품번 필수/중복, PART_TYPE/ACCTFG/UNIT_DC commCode 매핑,
ODRFG/LOT_FG/USE_YN/QC_FG/SETITEM_FG/REQ_FG 한글 → 코드값)
- 저장은 신규 PART_NO 만 mergePartMng INSERT (기존 IS_LAST='1' 행은 skip)
- part-regist + part-search 페이지에 Excel Upload 버튼 + 다이얼로그 연결
BOM Report Excel Import (M3 = openBomReportExcelImportPopUp = "PART 및 구조등록 Excel upload"):
- /partMng/parsingExcelFile.do + checkDuplicatePartNo.do + getBomDataForCopy.do
+ partBomApplySave.do (savePartBomMaster) 1:1
- 10컬럼 파싱 + 자품번/모품번/품명/수량 필수 검증, 모품번이 자품번 목록(Set)에 존재 검증,
수량 숫자+>0 검증, PART_TYPE='0001788'(구매품표준) part_mng 존재 검증
- 1레벨(모품번 없는 첫 행) → 헤더 PART_NO/PART_NAME 자동 채움
- 저장 트랜잭션 (wace 1:1):
헤더 part_bom_report INSERT(신규) / DELETE 자식트리+UPDATE(수정)
자식 PART: part_mng IS_LAST='1' 존재 시 updatePartInfoFromCsv UPDATE, 없으면 insertpartInfo INSERT
부모 PART: 존재 시 lookup, 없으면 "" (절대 INSERT 안 함 — wace 5359-5361)
bom_part_qty INSERT (relatePartInfo) — 부모행 CHILD_OBJID 를 PARENT_OBJID 로 체인
- 헤더 PART_NO 중복 검사 (편집 중인 자신 제외)
- E-BOM 복사 기능 (기존 BOM → 그리드 행) + Template Download
- ebom-regist 페이지에 "E-BOM 등록(Excel)" 버튼 + 다이얼로그 연결
운영 템플릿 정적 자산:
- frontend/public/templates/PART_EXCEL_IMPORT_TEMPLATE.xlsx
- frontend/public/templates/BOM_REPORT_EXCEL_IMPORT_TEMPLATE.xlsx (.gitignore 우회 git add -f)
wace structureExcelImportPopup.jsp 는 옛 차종/제품군/사양 도메인 화면으로 운영 메뉴 트리에
서 더이상 호출되지 않아 이식 대상 제외.
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월