6b029e20f9
- DDL: quotation_request_master(14 cols) + quotation_request_detail(15 cols) 운영 → RPS 타입 차이: numeric objid → varchar(64), detail.part_objid bigint(part_mng FK) - 데이터: 운영 sample master 4건 / detail 4건 (sales_request_part 미존재 → NULL fallback) - 백엔드 listQuotationRequest — wace salesMng.xml:5248-5349 매퍼 1:1 (vendor → client_mng JOIN, attach_file_info QUOTATION_RECEIVED 카운트) - listVendorOptions(client_mng) 신규 — 발주서 vendor 옵션이 supply_mng 와 분리됨 - listPurchaseRequest.has_quotation_request 분기 활성화 - quote-request page.tsx UI 문자열 내부 참조 제거, vendor 옵션 client_mng 로 교체
vexplor_rps 이식 통합 진행 상태
작성: 2026-05-15 / 작성자: hjjeong 대상: vexplor_rps (RPS 전용 분기, COMPANY_16 단독) 원본: wace_plm (Java 7 / Spring 3.2.4 / JSP / MyBatis) —
waceplm.esgrin.com운영판이 1순위 진실
0. 전체 한눈에 보기
6개 도메인 / 27개 메뉴 진행 중. (영업 4 + 구매요청 2 + 프로젝트 2 + 개발 5 + 구매 9 + 생산 5).
| 상태 | 메뉴 수 | 의미 |
|---|---|---|
| ✅ 완료 | 19 | wace 1:1 검증 PASS 또는 마이너 차이만 (기능/SQL 일치) |
| 🟡 베이스 | 5 | 그리드/검색 완료, 액션 모달 또는 detail SQL 일부 미진 |
| 🟠 빈 그리드 | 3 | 화면은 있으나 데이터 SQL 미연결 (의존 테이블 DDL 추출 선행 필요) |
| 🔴 미진 | 0 | — |
1. 27개 메뉴 매트릭스
| # | 도메인 | 메뉴명 | RPS 위치 | 상태 | 핵심 미진 |
|---|---|---|---|---|---|
| 1 | 영업관리 | 견적관리 | sales/estimate |
✅ | — |
| 2 | 영업관리 | 주문서관리 | sales/order |
✅ | — |
| 3 | 영업관리 | 판매관리 | sales/sale |
✅ | — |
| 4 | 영업관리 | 매출관리 | sales/revenue |
✅ | — |
| 5 | 영업/구매요청 | 구매요청서관리 | purchase-request/request |
✅ | — |
| 6 | 영업/구매요청 | 품의서관리(영업) | purchase-request/proposal |
✅ | — |
| 7 | 프로젝트관리 | 진행관리 | project/progress |
✅ | — |
| 8 | 프로젝트관리 | 제품구분_WBS관리 | project/wbs-template |
✅ | — |
| 9 | 개발관리 | PART 등록 | development/part-regist |
✅ | — |
| 10 | 개발관리 | PART 조회 | development/part-search |
✅ | — |
| 11 | 개발관리 | E-BOM 등록 | development/ebom-regist |
✅ | — |
| 12 | 개발관리 | E-BOM 조회 | development/ebom-search |
✅ | — |
| 13 | 개발관리 | 설계변경 리스트 | development/change-list |
✅ | — |
| 14 | 구매관리 | 구매리스트 | purchase/list |
🟡 | detail SQL 보강 |
| 15 | 구매관리 | 품의서(구매) | purchase/proposal |
🟡 | 발주서 생성 액션 |
| 16 | 구매관리 | 프로젝트 현황 | purchase/project-status |
🟡 | — |
| 17 | 구매관리 | 견적요청 | purchase/quote-request |
🟠 | sales_request_part DDL 추출 + detail SQL |
| 18 | 구매관리 | 입고관리 | purchase/inbound |
🟠 | inbound detail SQL |
| 19 | 구매관리 | 입고관리-일자별 | purchase/inbound-by-date |
🟠 | inbound detail SQL |
| 20 | 구매관리 | 입고관리-품목별 | purchase/inbound-by-item |
🟠 | inbound detail SQL |
| 21 | 구매관리 | 발주관리 | purchase/order |
✅ | — |
| 22 | 구매관리 | M-BOM (중복) | purchase/mbom |
✅ | production/mbom re-export |
| 23 | 생산관리 | M-BOM 관리 | production/mbom |
✅ PR-B5+ | PR-B6 Excel / PR-B7 행이동 (후순위) |
| 24 | 생산관리 | 생산계획&실적 | production/plan-result |
🟡 | [생산계획 생성] · [생산실적 등록] 모달 |
| 25 | 생산관리 | 생산계획&실적(장비) | production/plan-result-equip |
✅ | WBS할당 모달 의도적 보류 |
| 26 | 생산관리 | 반제품 소요량 | production/semi-product-req |
✅ | 단위/소재/규격 3컬럼 UX 추가 (의도적) |
| 27 | 생산관리 | 원자재 소요량 | production/raw-material-req |
✅ | — |
2. 도메인별 진행 상태
| 도메인 | 메뉴 | 마감도 | 대표 커밋 | 상세 문서 |
|---|---|---|---|---|
| 영업관리 | 4 | 100% (G6 메일 발송까지) | (다수) | sales/README.md |
| 구매요청 (영업↔구매 교차) | 2 | 100% (작성·품의서생성·결재상신 SSO 완료) | 7e7c6a0a + 본 작업 |
sales/09-purchase-request.md |
| 프로젝트관리 | 2 | 100% | a1ace226 / 332688a4 / 7c4817b0 / 50669a66 |
project/00-gap.md |
| 개발관리 | 5 | 100% + Import + 도면 다중 업로드 (16 커밋) | (PR-A/B/C 다수) | development/00-gap.md |
| 구매관리 | 9 | 1차 스캐폴드 (마스터 3 데이터 노출 / detail 4 빈 그리드 / 발주·M-BOM 완료) | b38f5957 |
(메모리만) |
| 생산관리 | 5 | 100% + PR-B5+ BOM 복사 다이얼로그 | bd47ca80 / 63682587 |
production/README.md |
부록 — 품질관리: chpark 가 베이스 4메뉴(incoming-request/incoming-mgmt/process-inspection/semi-product-inspection) + 고객CS/ECR 리팩토링 (d7c645d2). 후속 상세화 별 PR.
3. 공통 인프라 (도메인 가로지름)
3.1 공용 컴포넌트 (의무 사용)
- PageHeader — 메뉴명 자동 매칭, 우측 액션 영역, 조회/초기화 표준 위치
- CompactFilterBar + CompactFilterField + CompactDateRange — 컴팩트 검색 그리드
- SmartSelect / CustomerSelect — native
<select>금지, 자동 완성/공통코드 바인딩 - DataGrid (logicstudio 스타일 6종) — toolbar(⟳⬇⚙️📊) + footer 통계 + range 페이지네이션 + 차트 패널 (
36c1f357) - AttachFileDropZone — attach_file_info 다중 파일 업로드, 도메인별 신규 드롭존 금지
3.2 데이터 마이그레이션 패턴
- 운영
211.115.91.141:11133/waceplm(PG 16.8) → RPS:11134DDL/data CSV staging - 도메인별 폴더
docs/migration/{sales,project,development,quality,production}/+ddl-extracted/+data-sync/ - 누락 컬럼 발견 시: CSV export → TEMP staging → UPDATE FROM JOIN (
is_lastNULL 함정 동시 해결)
3.3 결재 시스템 (Amaranth 연동)
- 영업관리 G7~G11 (견적 메일 + Amaranth 결재상신)
- 영업/구매요청 품의서(
target_type='PROPOSAL') — 결재완료 시 구매관리 발주풀로 자동 노출
3.4 채번/식별자 패턴
- numeric/bigint objid: UUID v4 → Java String.hashCode → int32 String (createObjId 1:1 패턴)
- varchar prefix: 영업관리 prefix-string 패턴 (예:
R-YYYYMMDD-NNN) - DataGrid
row.id↔ 백엔드objiduseMemo 매핑 필수 (누락 시 체크박스 빈 상태)
4. 핵심 정책 (사용자 확정)
- vexplor 로코드툴 프레임워크 안 씀 — 모든 메뉴 wace 도메인으로 풀-커스텀 재개발
wace_plm이 항상 1순위 진실 — 이전 이식물(영업/개발 일부)은 검증 안 된 변형 가능- JSP/매퍼 비활성 보존:
/* */·<!-- -->·//블록 = 이식 대상 아님 (grep 카운트 함정 주의) - company_code 멀티테넌시 불필요 — COMPANY_16 단독, 새 코드/SQL에 분기 만들지 말 것
- 숫자 포맷: 금액 1,234.00 / 수량 1,234 / 모든 숫자 right align
- 존댓말 사용 — 모든 한국어 응답 (2026-05-08 직접 지적)
- UI 문자열에 내부 참조 금지 — PageHeader description / toast 에 wace · 매퍼명 · 테이블명 · 개발자 메모 금지 (2026-05-15 직접 지적)
- 커밋 범위 엄격 — 내 세션 작업만, 사용자 병행 작업/untracked 절대 포함 금지 (2026-05-14 직접 지적)
5. 도메인 핵심 함정 (이식 시 참고)
| 함정 | 메모리 |
|---|---|
| 큰 파일(570MB SQL · 45KB+ JSP) 통째 Read 시 surrogate 에러 → grep + offset/limit | feedback_large_file_handling |
| wace JSP 컬럼/검색폼 끝 주석 블록 (비활성 보존) | feedback_wace_jsp_columns |
wace "Excel" 명칭 메뉴가 실제는 CSV 운영 (fnc_setFileDropZone(...,"csv") 확인) |
feedback_wace_csv_vs_excel |
| wace partMng 폼 colgroup 5컬럼(12/12/25/12/*) + colspan=2 | feedback_wace_colgroup_pattern |
| BOM_PART_QTY 트리 재귀 CTE: 자식.parent_objid = 부모.child_objid (objid 아님) | feedback_bom_part_qty_tree_join |
| 없는 테이블 → 운영 DDL 추출 (211.115.91.141:11133) | feedback_missing_tables_workflow |
| wace 매퍼는 request 파라미터 암묵 수신 — Java paramMap 만 보고 옮기면 핵심 필터 누락 | feedback_wace_mapper_implicit_params |
numeric(15,4) 캐스팅: NULLIF::INTEGER 패턴 시 "invalid input syntax" → COALESCE(x,0)::INTEGER |
feedback_data_migration_sync |
6. 다음 작업 우선순위 (제안)
구매요청 2메뉴 액션 완성— ✅ 2026-05-15 완료 (sales/09-purchase-request.md §6)- 구매관리 빈 그리드 4개 보강 —
sales_request_part추출 완료, quote-request / inbound 3종 detail SQL 연결만 남음 - plan-result 액션 모달 —
prodPlanFormPopup.jsp/prodResultFormPopup.jsp1:1 - 공통 PartSelect 컴포넌트 — wace
Select2-part(AJAX 자동완성), 영업/생산/구매 다수 메뉴 공통 - 품질관리 후속 (chpark 베이스 4메뉴 상세화) / 자재관리 신규 도메인 진입
- M-BOM 후순위 — PR-B6 Excel / PR-B7 행이동
7. 인덱스
7.1 도메인별 README / Gap 문서
- sales/README.md — 영업관리 + 구매요청 (메뉴 매핑 / 도메인 테이블 / 마스터 매핑 / 채번 / UX)
- sales/00-gap.md · 01-estimate.md · 02-order.md · 03-sale.md · 04-revenue.md · 05-master-mapping.md · 09-purchase-request.md
- project/00-gap.md · 01-progress.md · 02-wbs-template.md
- development/00-gap.md · 01-part.md · 02-ebom.md · 03-eo-history.md
- production/README.md — 생산관리 (5메뉴 + PR-B5+ BOM 복사 + 23 매퍼 매핑)
- quality/01_quality_tables_from_ilshin.sql · 02_wace_plm_quality_tables.sql
7.2 공통
- common/menu_desc_sync.sql — 메뉴 설명 동기화
7.3 외부 환경
- 운영 DB:
211.115.91.141:11133/waceplm(PG 16.8) — DDL/data 추출 소스 - RPS DB:
211.115.91.141:11134/vexplor_rps— 이식 대상 - 운영 화면:
waceplm.esgrin.com - wace_plm 소스:
/Users/jhj/wace_plm(JSP + Controller + 매퍼 XML)