From b087bd7d8581b9f6fa6374bcc2de9b0c3d208234 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Mon, 27 Apr 2026 18:38:15 +0900 Subject: [PATCH] =?UTF-8?q?M-BOM=20ERP=20BOM=20=EB=8F=99=EA=B8=B0=ED=99=94?= =?UTF-8?q?=20=EC=A7=84=ED=96=89=20=EC=83=81=ED=99=A9=20=EB=AC=B8=EC=84=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20(=EA=B0=9C=EB=B0=9C=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=20=EC=A4=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 자동 호출 비활성화 상태 명시 - 구성 파일/동작 흐름/수동 호출 방법 - 검증 체크리스트 + 자동 호출 활성화 방법 Co-Authored-By: Claude Opus 4.7 (1M context) --- ERP_BOM_SYNC_TODO.md | 82 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 ERP_BOM_SYNC_TODO.md diff --git a/ERP_BOM_SYNC_TODO.md b/ERP_BOM_SYNC_TODO.md new file mode 100644 index 0000000..d4841fb --- /dev/null +++ b/ERP_BOM_SYNC_TODO.md @@ -0,0 +1,82 @@ +# M-BOM → ERP BOM 동기화 (개발 진행 중) + +> 상태: **개발 진행 중 / 운영 검증 전** +> 자동 호출 비활성화됨. 수동 호출만 가능. + +## 1. 현재 상태 + +- M-BOM 저장 후 **자동 ERP BOM 동기화 호출은 일시 비활성화**되어 있음 + - 위치: `src/com/pms/service/ProductionPlanningService.java` (saveMbom 마지막 영역, `// [임시 주석] DB 커밋 성공 후 ERP BOM 동기화 ...` 블록) + - 사유: 검증 전 자동 호출 시 운영 데이터에 영향 가능 +- **수동 동기화 엔드포인트는 활성화 상태** — 테스트/임시 운영용으로 사용 가능 + +## 2. 구성 파일 + +| 파일 | 역할 | +|------|------| +| `src/com/pms/api/BomErpApiClient.java` | 아마란스 ERP `api20A00` (등록 I01001 / 조회 S01001 / 삭제 D01001) HTTP 클라이언트 | +| `src/com/pms/service/BatchService.java` `syncMbomBomToErp(String mbomHeaderObjid)` | M-BOM 헤더 단위로 모품목 추출 → 기존 ERP BOM 삭제 → PLM 구조 재등록 | +| `src/com/pms/controller/AdminController.java` `/admin/syncMbomBomToErp.do` | 수동 동기화 엔드포인트 (POST, `mbomHeaderObjid` 파라미터) | +| `src/com/pms/service/ProductionPlanningService.java` saveMbom() 1592~1612 | **현재 주석 처리** — DB 커밋 성공 후 자동 호출 블록 | + +## 3. 동작 흐름 (자동 호출 활성화 시) + +1. 사용자가 M-BOM 저장 (`fn_saveMbom`) +2. `ProductionPlanningService.saveMbom`에서 DB 커밋 성공 +3. (주석 해제 시) `batchService.syncMbomBomToErp(mbomHeaderObjid)` 호출 +4. 내부 흐름: + - 매퍼 `productionplanning.getMbomHeaderByObjid` 로 헤더 조회 + - 모품목 DISTINCT 목록 추출 + - 모품목별 기존 ERP BOM `bomSq` 조회 후 일괄 삭제 + - PLM M-BOM 구조 → ERP 형식 변환 후 `api20A00I01001` 로 재등록 + - SUPPLY_TYPE: `자급` → `bomOdrFg=0` (자재), `사급` → `bomOdrFg=1` (사급) + +## 4. 수동 호출 방법 + +```bash +curl -X POST 'https://wace-plm-host/admin/syncMbomBomToErp.do' \ + -d 'mbomHeaderObjid=MBOM_HEADER_OBJID값' +``` + +또는 관리자 화면에 별도 버튼이 추가되었다면 거기서 호출 (현재 화면 버튼은 미반영). + +## 5. 검증 체크리스트 (자동 호출 활성화 전 확인할 것) + +- [ ] BomErpApiClient의 ERP base URL / ACCESS_TOKEN / HASH_KEY가 운영 환경 값으로 맞는지 +- [ ] `productionplanning.getMbomHeaderByObjid` 매퍼 쿼리 정상 동작 +- [ ] 모품목 DISTINCT 추출 쿼리 정확성 +- [ ] ERP 측 기존 `bomSq` 조회 → 삭제가 정상 (조회 결과 파싱 포함) +- [ ] 자급/사급 → `bomOdrFg` 매핑 누락 케이스 (다른 SUPPLY_TYPE 값) 처리 +- [ ] ERP API 실패 시 PLM DB 트랜잭션은 유지되는지 (현재 try/catch로 감싸 PLM 트랜잭션 유지하도록 의도됨 — 검증 필요) +- [ ] 대량 BOM (수백 건) 시 타임아웃/성능 +- [ ] 중복 호출 / 재시도 시 이중 등록 방지 (삭제 후 재등록 패턴이라 OK 추정) +- [ ] 운영 ERP 계정의 권한 / 호출 빈도 제한 + +## 6. 자동 호출 활성화 방법 + +검증 완료 후 `src/com/pms/service/ProductionPlanningService.java` saveMbom() 의 주석 블록(`// [임시 주석] DB 커밋 성공 후 ERP BOM 동기화` 부분)에서 `//` 제거. + +```java +// 현재 +// if(result && mbomHeaderObjidForErp != null && !mbomHeaderObjidForErp.isEmpty()) { +// try { +// ... +// Map erpResult = batchService.syncMbomBomToErp(mbomHeaderObjidForErp); +// ... +// } +// } + +// 활성화 시 +if(result && mbomHeaderObjidForErp != null && !mbomHeaderObjidForErp.isEmpty()) { + try { + ... + Map erpResult = batchService.syncMbomBomToErp(mbomHeaderObjidForErp); + ... + } +} +``` + +## 7. 관련 커밋 + +- `2b5a7e5` — 배치 ERP 세트 추가 (BatchService + BomErpApiClient + AdminController) +- `b466e3b` — ProductionPlanningService 자동 호출부 일시 주석 -- 2.49.1