6 Commits

Author SHA1 Message Date
hjjeong b5bc7f3630 개발관리>data-sync — 긴 BOM 샘플 1건 운영DB → RPS 복사
E-BOM 조회 트리 화면 검증용 긴 BOM 1건을 운영DB 에서 RPS 로 복사 (1회성).

선정 기준 : bom_part_qty 행 수 + 트리 깊이 큼.
대상 BOM : part_bom_report.objid = '1038014721'
            part_no = '21008-0109'  / part_name = 'BS030-120H4A11-EN'
구조     : 126 행 / 4 레벨 (L1=1 / L2=37 / L3=62 / L4=26)

파일:
- 03_long_bom_sample.sql : TEMP staging + ON CONFLICT DO NOTHING INSERT
  · pbr_stage / bpq_stage 두 TEMP 테이블에 \copy 로 적재 후 INSERT FROM SELECT
  · 재실행 안전 (ON CONFLICT 시 skip)
- pbr_long.csv  : part_bom_report 1행 (운영DB export, CSV HEADER)
- bpq_long.csv  : bom_part_qty 126행 (운영DB export, CSV HEADER, seq ORDER BY)
- README.md     : 02_sequences.sql / 03_long_bom_sample.sql 섹션 추가

용도:
- 동적 LEVEL 컬럼 (L1..L4) "*" 표시 검증
- 토글 -/+ 버튼 동작 검증 (자식 보유 행 식별 + 자손 hide 체인)
- search_level 1~5 필터 검증
- 정전개 엑셀 다운로드 검증

운영DB OBJID 그대로 사용 — RPS part_mng 가 운영DB와 동일 OBJID 보유 (이전 part_mng_sync
로 보장) 라서 PART 정보 매핑 정상.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 12:14:07 +09:00
hjjeong 9ff61cf2f9 개발관리>BOM CSV Import — RFC4180 파서 적용 + 누락 시퀀스 5종 생성
CSV 파싱 함정 정정:
사용자 검증 중 운영판 wace 에서 3건만 파싱되는 CSV 가 RPS 에서 4건으로 파싱되며 4번째
행이 깨진 채 들어가는 문제 발견. 단순 line.split(",") 로는 RFC4180 따옴표 처리 실패.

backend-node:
- csv-parse ^6.2.1 추가
- devBomExcelImportService.parseAndValidate :
    text.split(/\r\n|\r|\n/).map(line => line.split(",")) 단순 split  →
    parseCsvSync(text, { relax_quotes, relax_column_count, skip_empty_lines: false })
    · 따옴표 내부 콤마/줄바꿈, "" 이스케이프 모두 안전 처리
    · 운영판 사용자가 만든 비정형 quote 도 relax_quotes 로 관대 처리
    · 1차 스캔(자품번 수집) 도 동일 allRows 재사용
- getCsvValue 헬퍼는 보존 (csv-parse 후에도 안전 trim/quote-strip 으로 유지)

시퀀스 누락 (별 함정):
저장 시 "relation seq_bom_qty does not exist" 에러 발생. wace 매퍼에서 사용하는
nextval('seq_*') 시퀀스 5종 중 RPS DB 에 seq_ecr_no 만 존재. 나머지 4종 신규 생성.

02_sequences.sql (data-sync 디렉토리에 보존):
- seq_bom_qty   200,000  (운영 179,258 + 여유)
- seq_as_no       1,000  (운영       109 + 여유)
- seq_comm_code  10,000  (운영     1,839 + 여유)
- seq_eo_no       1,000  (운영        62 + 여유)
- seq_ecr_no              (RPS 기존 보존, 운영 33)

운영 last_value 보다 충분히 큰 값으로 setval — 향후 운영 데이터 sync 시 PK 충돌 방지.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:51:19 +09:00
hjjeong d74263eaed 개발관리>part_mng 운영DB → RPS 누락 컬럼 데이터 동기화 (1회성)
PART 상세 다이얼로그 검증 중 발견: 품번/품명만 표시되고 재료/규격/계정구분/조달구분/
재고단위/관리단위/환산수량/LOT구분/사용여부/검사여부/SET품여부/의뢰여부 등 거의 모든
컬럼이 NULL. 운영DB 같은 part_no 는 정상 채움 — 마이그레이션 누락.

01_part_mng_sync.sql:
- 운영DB(11133/waceplm) → /tmp/part_mng_sync.csv export
- TEMP staging 테이블 → RPS DB(11134/vexplor_rps) part_mng UPDATE FROM JOIN
- 동기화 컬럼 20개: material / heat_treatment_(hardness/method) / surface_treatment /
  maker / part_type / spec / acctfg / odrfg / unit_dc / unitmang_dc / unitchng_nb /
  lot_fg / use_yn / qc_fg / setitem_fg / req_fg / unit_length / unit_qty / is_last
- is_last 도 같이 COALESCE(p.is_last, '1') 로 채움 — 마이그레이션 시 NULL 이라
  partMng 매퍼의 IS_LAST='1' 조건이 0건 반환되던 부수 문제 동시 해결

결과 (2026-05-12 실행): 8,176건 UPDATE.
  · material 301 / acctfg 8,172 / unit_dc 8,176 / spec 7,466 / part_type 703 / is_last 8,176

미동기화: 운영DB 에만 있는 67건 (운영 8,243 - RPS 8,176). part_no 자체가 RPS 에
미존재 → 신규 INSERT 별 작업.

대상 데이터:
- 본 디렉토리는 *.sql .gitignore 우회 git add -f 로 강제 트래킹 (영업/프로젝트관리
  ddl-extracted 패턴 동일)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 18:32:57 +09:00
hjjeong c9adfd7327 개발관리>설계변경 리스트 메뉴 신설 (PR-C) — wace partMng 1:1 이식
backend (M5, read-only):
- devEoHistoryService: list + getByObjid
- partMngHistList SQL 1:1 (NVL→COALESCE, PART_MNG.OBJID bigint cast, CODE_NAME→LEFT JOIN comm_code)
- 동적 필터 10종 (Year/contract_objid/unit_code/part_no/part_name/change_option/eo_start~end/change_type/part_type/writer_id)
- 신규등록 제외 가드: NOT (HIS_STATUS='DEPLOY' AND CHANGE_TYPE IS NULL AND REVISION='RE') + BOM_STATUS='deploy'
- 품번변경(CHANGE_OPTION=0001790) 'A->B' 머지 CASE (part_no_disp/part_name_disp/revision_disp)

frontend (M5):
- change-list/page.tsx: 16셀 그리드 + 검색 8필드 + 페이징
- PartHisDetailDialog: 모든 필드 disabled, 4 섹션 (EO/프로젝트/PART/수량)
- AdminPageRenderer dynamic 임포트 + 기존 menu_info URL 그대로 사용

개발관리 5개 메뉴 (M1~M5) baseline 완료.

본 PR 제외 (별 PR): writer SmartSelect, change_type/change_option comm_code 그룹 SmartSelect (그룹 ID 확정 후)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:27:37 +09:00
hjjeong 0872199b30 개발관리>E-BOM 등록·조회 메뉴 신설 (PR-B) — wace partMng 1:1 이식
backend (M3+M4):
- devBomService: list/getByObjid/updateStatus/removeMany/ascending/descending
- M3 그리드 SQL (getBOMStandardStructureGridList 1:1)
  - customer_mng 매핑 (wace SUPPLY_MNG → vexplor customer_mng.customer_code)
  - PRODUCT_NAME LEFT JOIN comm_code (CODE_NAME 함수 대체)
- M3 다중 삭제 트랜잭션 (bom_part_qty + part_bom_report CASCADE)
- M4 정/역전개 재귀 CTE (bom_part_qty 트리 + part_mng JOIN)
- vexplor 적응: M4 product_mgmt_spec/upg/vc 분기 제거 (스키마 단순화)
- PG 재귀 CTE 타입 일치: ARRAY[BP.objid::varchar] 명시 cast

frontend (M3+M4):
- ebom-regist (M3): 9셀 그리드 (제품구분·품번·품명·E-BOM·등록자·등록일·확정일·Version·상태)
- ebom-search (M4): 동적 LEVEL 컬럼 + 정/역전개 토글
- BomReportStatusDialog: 상태 변경 (create/changeDesign/deploy + version)
- AdminPageRenderer dynamic 임포트 2건 + menu_info URL spec 정렬

본 PR 제외 (별 PR): E-BOM Excel Import, 정/역전개 Excel Download, BOM_PART_QTY 수량 편집

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