Files
wace_rps/docs/migration/development/00-gap.md
T
hjjeong ea6606da0c 개발관리>PART 등록·조회 메뉴 신설 (PR-A) — wace partMng 1:1 이식
backend (M1+M2):
- devPartService: listTemp/listRelease/getByObjid/create/update/deploy/removeMany
- partMngBaseSimple SELECT + 추가 15컬럼(acctfg/odrfg/unit_dc/unitmang_dc/lot_fg 등) 라벨/CASE
- deploy 트랜잭션 3단계 (isLastInit → part_mng_history INSERT → partMngDeploy + EO_NO 채번)
- EO_NO 분기: is_longd='1'→EOB{yy}-{seq} / else EO{yy}-{seq}
- objidUtil: wace CommonUtils.createObjId() 1:1 (bigint objid 채번)
- DDL: 9 신규 테이블 + part_mng 15컬럼 ALTER (운영판 1:1 추출)

frontend (M1+M2):
- part-regist (M1) / part-search (M2): 23셀 그리드 + 검색폼 + 액션
- PartFormDialog: 등록/수정 통합 (mode prop, 4 섹션)
- PartDetailDialog: 읽기 전용 + "수정" dispatch
- AdminPageRenderer dynamic 임포트 2건 + menu_info URL spec 정렬

본 PR 제외 (별 PR): 도면 다중 업로드, ERP 업로드, Excel Import, BOM_PART_QTY R/W

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:14:10 +09:00

12 KiB
Raw Blame History

개발관리 이식 GAP 분석 (원본 wace_plm 대비)

작성: 2026-05-12 / 작성자: hjjeong 대상 메뉴 5종 (1 도메인 development/):

  • PART 등록 / PART 조회 / E-BOM 등록 / E-BOM 조회 / 설계변경 리스트 원본 위치: wace_plm/WebContent/WEB-INF/view/partMng/ (단일 디렉토리) + mapper/partMng.xml 단일 매퍼.

0. 한 문장 요약

5개 메뉴 모두 wace partMng/ 단일 디렉토리 + partMng.xml 매퍼에 1:1 매핑됨. 의존 테이블 15개 중 6개 보유(part_mng/comm_code/pms_wbs_task/project_mgmt/user_info/product_mgmt) · 9개 신규 추가 완료(300_part_bom.sql) · part_mng에 누락 15컬럼 ALTER 완료(301_alter_part_mng.sql). 5개 메뉴 모두 P1에서 실데이터 표시 가능.

0.1 이식 원칙

  • JSP/매퍼XML 안의 /* */, <!-- -->, // 주석 블록은 비활성. 활성 코드만 이식.
  • company_code 멀티테넌시 분기는 vexplor_rps 측에 만들지 않음 (COMPANY_16 단독).
  • CODE_NAME()은 영업/프로젝트와 동일하게 LEFT JOIN comm_code CC_X ON CC_X.code_id=... 패턴 통일.
  • client_mng/supply_mng → vexplor는 customer_mng로 통합되어 있으나, 개발관리 5개 메뉴는 customer_mng를 직접 참조하지 않음(project_mgmt.customer_objid 경유). 분기 변환 불필요.
  • 금액 1,234.00 / 수량 1,234 / 모든 숫자 right-align (memory feedback_number_format.md).
  • wace JSP 컬럼 정의 끝의 주석 블록은 비활성 항목 — grep만으로 카운트하지 말 것 (memory feedback_wace_jsp_columns.md).

1. 메뉴 ↔ JSP ↔ 매퍼 1:1 매핑

# 메뉴 wace JSP 매퍼 쿼리 (partMng.xml) LOC
M1 PART 등록 partMngTempList.jsp partMngTempGridList (S), partMngDeploy (U), partMngDelete (D) 649
M2 PART 조회 partMngList.jsp partMngGridList (S), partMngDelete (D), partMngFormPopUp (S) 834
M3 E-BOM 등록 structureList.jsp getBOMStandardStructureGridList (S), deleteStructure (D), structureStatusChange (U) 782
M4 E-BOM 조회 structureAscendingList.jsp structureAscendingList/structureAscendingListExcel/structureDescendingExcelList (S) 1,064
M5 설계변경 리스트 partMngHisList.jsp partMngHistList (S, read-only) 198

vexplor_rps 측 라우트(예정):

GET  /api/development/part-temp/list      (M1 그리드)
POST /api/development/part-temp/deploy    (M1 확정)
DEL  /api/development/part-temp           (M1·M2 삭제 공용)
GET  /api/development/part/list           (M2 그리드)
GET  /api/development/part/:objid         (M2 상세 팝업)
GET  /api/development/ebom/list           (M3 그리드)
PUT  /api/development/ebom/status         (M3 상태변경)
DEL  /api/development/ebom/:objid         (M3 삭제)
GET  /api/development/ebom/ascending      (M4 정전개)
GET  /api/development/ebom/descending     (M4 역전개)
GET  /api/development/eo/history/list     (M5 그리드)

2. 메뉴별 검색 필드 & 그리드 컬럼 (활성만)

M1 PART 등록 (partMngTempList.jsp)

검색: SEARCH_PART_NO, SEARCH_PART_NAME (둘 다 autocomplete) 그리드 23셀: PART_NO · PART_NAME · CU01_CNT(3D) · CU02_CNT(2D) · CU03_CNT(PDF) · MATERIAL · HEAT_TREATMENT_HARDNESS · HEAT_TREATMENT_METHOD · SURFACE_TREATMENT · MAKER · PART_TYPE_TITLE · SPEC · ACCTFG_NM · ODRFG_NM · UNIT_DC_NM · UNITMANG_DC_NM · UNITCHNG_NB · LOT_FG_NM · USE_YN_NM · QC_FG_NM · SETITEM_FG_NM · REQ_FG_NM · UNIT_LENGTH/QTY 액션: 확정(Deploy) · 삭제 · 등록 · Excel Upload · 도면다중업로드 · 조회 팝업: partMngFormPopUp(신규) · partMngDetailPopUp(편집) · openPartExcelImportPopUp 핵심 의존 테이블: part_mng (메인) · order_spec_mng · admin_supply_mng · bom_part_qty

M2 PART 조회 (partMngList.jsp)

검색: 없음(메인 조회 화면). 그리드 컬럼 동일하게 23셀(M1과 동일). 액션: 등록 · 삭제 · 도면연동 · ERP업로드(전체/단일/모두) · Excel Upload · 조회 팝업: partMngFormPopUp · partMngDetailPopUp · FileRegistPopup · openPartExcelImportPopUp 핵심 의존 테이블: part_mng · bom_part_qty

M3 E-BOM 등록 (structureList.jsp)

검색 9 필드: customer_cd · project_name · unit_code · SEARCH_UNIT_NAME · SEARCH_WRITER · product_cd · SEARCH_PART_NO · SEARCH_PART_NAME · search_fromDate~toDate · status 그리드 9셀: PRODUCT_NAME · PART_NO · PART_NAME · BOM_CNT · DEPT_USER_NAME · REG_DATE · DEPLOY_DATE · REVISION · STATUS 액션: 조회 · 삭제 · E-BOM등록 · 상태변경 팝업: setStructureStandardFormPopup · setBomCopyFormPopup · setStructurePopupMainFS · changeDesignNotePopUp · structureStatusChangePopup · openBomReportExcelImportPopUp 핵심 의존 테이블: part_bom_report · supply_mng · project_mgmt · pms_wbs_task · user_info · bom_part_qty · part_mng · comm_code

M4 E-BOM 조회 (structureAscendingList.jsp)

검색 4 필드: project_name · unit_code · search_partNo · search_partName 그리드: 동적 — MAX_LEVEL 레벨 컬럼 + 품번 · 품명 · 3D/2D/PDF · 수량 · 변경일 · 변경항목 · 규격 · 재질 · 중량 · 비고 액션: 정전개조회 · 역전개조회 · 엑셀다운로드(정/역전개) 팝업: partMngDetailPopUp(클릭) · FileRegistPopup(도면) 핵심 의존 테이블: bom_part_qty · sales_bom_report · part_bom_report · product_mgmt_upg_detail/_master · part_mng · project_mgmt · pms_wbs_task · user_info · product_mgmt

M5 설계변경 리스트 (partMngHisList.jsp)

검색 10 필드: Year · contract_objid · unit_code · part_no · part_name · change_option · eo_start_date~end_date · change_type · part_type · writer_id 그리드 16셀: EO_NO · PROJECT_NO · PROJECT_NAME · UNIT_NAME · PARENT_PART_INFO · PART_NO · PART_NAME · QTY · QTY_TEMP · CHANGE_TYPE_NAME · CHANGE_OPTION_NAME · REVISION · EO_DATE · PART_TYPE_NAME · WRITER_NAME · HIS_REG_DATE_TITLE 액션: 조회만(Read-Only) 팝업: partMngHisDetailPopUp(행 클릭) 핵심 의존 테이블: part_mng_history · project_mgmt · part_bom_report · pms_wbs_task · user_info · comm_code


3. RPS DB 보유 매트릭스 (적용 완료)

테이블 M1 M2 M3 M4 M5 종류 RPS 상태
part_mng R/W R/W R R R 메인 +15컬럼 ALTER(301_alter_part_mng.sql)
bom_part_qty R R R/W R R BOM 수량 신규(300)
part_bom_report R R R/W R R BOM 리포트 헤더 신규(300)
part_mng_history R 변경이력 신규(300)
order_spec_mng R 발주 스펙 신규(300)
admin_supply_mng R 공급사(관리자) 신규(300)
supply_mng R 공급사 신규(300)
sales_bom_report R 영업 BOM 단가 신규(300)
product_mgmt_upg_master R 제품 업그레이드 마스터 신규(300)
product_mgmt_upg_detail R 제품 업그레이드 디테일 신규(300)
project_mgmt R R R 프로젝트 기존
pms_wbs_task R R R 작업/유닛 기존
user_info R R R 사용자 기존(컬럼명 매핑 필요)
comm_code R R R 공통코드 기존
product_mgmt R R 제품 기존

→ 5개 메뉴 모두 P1에서 실데이터 표시 가능.


4. GAP 매트릭스

# 우선 항목 권장 작업
DEV-1 🔴 개발관리 메뉴 자체 부재 → 5개 메뉴 운영판 1:1 이식 본 PR 시리즈 (3 묶음)
DEV-2 🔴 part_mng 15컬럼 누락 (열처리/표면처리/단위/Y-N flag) 완료301_alter_part_mng.sql
DEV-3 🔴 9개 테이블 부재 완료300_part_bom.sql (BEGIN/COMMIT 트랜잭션, IDEMPOTENT)
DEV-4 🟠 user_info 컬럼명 매핑 (wace empseq/rank ↔ vexplor emp_seq/rank_code+rank_name) 코드 측 alias로 처리
DEV-5 🟠 M3 상태값(작성중/적용완료 등) — wace는 comm_code 0000099 자식 사용 comm_code 그대로 사용. RPS DB에 이미 존재 여부 확인 후 부재 시 INSERT
DEV-6 🟠 M1·M2 팝업(등록/상세) 다이얼로그 — wace partMngFormPopUp.jsp 별도 LOC 큼 M1·M2 묶음 PR에 포함 (한 번에 가는 게 효율)
DEV-7 🟡 M1 도면 다중 업로드 / M2 ERP 업로드 본 PR 시리즈 제외 (별 PR)
DEV-8 🟡 M3 BOM Excel Import / M4 엑셀 다운로드 본 PR 시리즈 제외 (별 PR)
DEV-9 🟢 M4 동적 MAX_LEVEL 컬럼 — BOM 트리 깊이에 따라 컬럼 추가 DataGrid 동적 컬럼 모드. 본 PR(E-BOM 묶음)에 포함
DEV-10 🟢 admin_supply_mng.employee_email 운영 타입 버그(xid) 완료300 추출 시 character varying으로 정정

5. PR 묶음 스코프 (3 PR 시리즈)

5.1 PR-A : PART 등록·조회 묶음 (M1+M2)

범위:

  • backend: routes/devPartRoutes.ts + services/devPartService.ts + controllers/devPartController.ts
    • 엔드포인트: /api/development/part-temp/list·/deploy, /api/development/part/list·/:objid, /api/development/part (DELETE)
  • frontend:
    • app/(main)/COMPANY_16/development/part-regist/page.tsx (M1)
    • app/(main)/COMPANY_16/development/part-search/page.tsx (M2)
    • components/development/PartFormDialog.tsx (등록/수정 공용)
    • components/development/PartDetailDialog.tsx (상세)
    • lib/api/devPart.ts
  • 매퍼 1:1: partMngTempGridList · partMngGridList · partMngFormPopUp · partMngDeploy · partMngDelete

제외: 도면 다중 업로드 · ERP 업로드 · Excel Import → 별 PR

5.2 PR-B : E-BOM 등록·조회 묶음 (M3+M4)

범위:

  • backend: routes/devBomRoutes.ts + services/devBomService.ts + controllers/devBomController.ts
    • 엔드포인트: /api/development/ebom/list·/status·/:objid (DELETE), /api/development/ebom/ascending·/descending
  • frontend:
    • app/(main)/COMPANY_16/development/ebom-regist/page.tsx (M3)
    • app/(main)/COMPANY_16/development/ebom-search/page.tsx (M4)
    • components/development/BomStandardFormDialog.tsx (M3 등록)
    • components/development/BomStatusChangeDialog.tsx (M3 상태변경)
    • lib/api/devBom.ts
  • M4 동적 MAX_LEVEL 컬럼 처리 (DataGrid 동적 컬럼)

제외: BOM Excel Import · 정/역전개 엑셀 다운로드 → 별 PR

5.3 PR-C : 설계변경 리스트 (M5)

범위:

  • backend: routes/devEoHistoryRoutes.ts + services/devEoHistoryService.ts + controllers/devEoHistoryController.ts
    • 엔드포인트: /api/development/eo/history/list (read-only)
  • frontend:
    • app/(main)/COMPANY_16/development/change-list/page.tsx
    • components/development/PartHisDetailDialog.tsx (행 클릭 상세)
    • lib/api/devEoHistory.ts
  • read-only — INSERT/UPDATE/DELETE 없음

6. 사용자 결정 사항 (2026-05-12)

# 항목 결정
1 도메인 폴더 단일 development/
2 메뉴 진행 순서 PART 묶음(M1+M2) → E-BOM 묶음(M3+M4) → 설계변경(M5)
3 문서 구조 단일 00-gap.md (본 문서) + 묶음별 *.md (총 3개)
4 DDL 적용 운영DB → vexplor_rps 직접 적용 완료 (9 신규 + 1 ALTER)

7. 다음 단계

  1. PR-A : 01-part.md 작성 → backend route → frontend page 2개 → verify
  2. PR-B : 02-ebom.md 작성 → backend route → frontend page 2개 → verify
  3. PR-C : 03-eo-history.md 작성 → backend route → frontend page → verify