From 83a774f0f517b845626bd4088bfd930986246715 Mon Sep 17 00:00:00 2001 From: chpark Date: Fri, 15 May 2026 12:02:51 +0900 Subject: [PATCH] =?UTF-8?q?=ED=92=88=EC=A7=88=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=E2=80=94=20waceplm=20=EC=9A=B4=EC=98=81=20DB=20=EC=8A=A4?= =?UTF-8?q?=ED=82=A4=EB=A7=88/=EB=8D=B0=EC=9D=B4=ED=84=B0=201:1=20?= =?UTF-8?q?=EB=8F=99=EA=B8=B0=ED=99=94=20+=20incoming-mgmt=20=ED=95=84?= =?UTF-8?q?=ED=84=B0=20=EC=99=84=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 스키마 재정합 (docs/migration/quality/03_waceplm_quality_sync.sql): - waceplm.esgrin.com 운영(211.115.91.141:11133/waceplm) 스키마 그대로 이식 - 기존 bigserial PK 5개 테이블 DROP 후 varchar(50) PK 로 재생성 - customer_cs, pms_quality_ecr 신규 추가 데이터 복사 (waceplm → vexplor_rps, 126행): - customer_cs 24 - process_inspection_master 3 - process_inspection_detail 13 - incoming_inspection_detail 1 - pms_quality_semi_product_inspection 84 - pms_quality_ecr 1 backend qualityRoutes.ts: - incoming-mgmt 의 inspection_yn='검사' 하드코딩 필터를 1=1 로 완화. '스킵' 행도 검사 진행 화면에 노출. 완료 건만 보려면 search_inspection_status='완료'. --- backend-node/src/routes/qualityRoutes.ts | 4 +- .../quality/03_waceplm_quality_sync.sql | 185 ++++++++++++++++++ 2 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 docs/migration/quality/03_waceplm_quality_sync.sql diff --git a/backend-node/src/routes/qualityRoutes.ts b/backend-node/src/routes/qualityRoutes.ts index 25c74e05..60061750 100644 --- a/backend-node/src/routes/qualityRoutes.ts +++ b/backend-node/src/routes/qualityRoutes.ts @@ -102,7 +102,9 @@ router.get("/incoming-mgmt", async (req: Request, res: Response) => { const pool = getPool(); const q = req.query as Record; - const where: string[] = ["iid.inspection_yn = '검사'"]; + // wace_plm 원본은 inspection_yn='검사' 만 노출하지만, '스킵' 행도 진행 화면에 보이도록 완화. + // 검사 완료만 좁히려면 search_inspection_status='완료' 사용. + const where: string[] = ["1=1"]; const params: any[] = []; const add = (sql: string, ...v: any[]) => { v.forEach(x => params.push(x)); where.push(sql.replace(/\?/g, () => "$" + params.length)); }; diff --git a/docs/migration/quality/03_waceplm_quality_sync.sql b/docs/migration/quality/03_waceplm_quality_sync.sql new file mode 100644 index 00000000..842462ad --- /dev/null +++ b/docs/migration/quality/03_waceplm_quality_sync.sql @@ -0,0 +1,185 @@ +-- 품질관리 — waceplm.esgrin.com 운영 DB(211.115.91.141:11133/waceplm) 스키마/데이터 동기화. +-- 2단계 마이그레이션(02_*.sql)에서 만든 5개 wace_plm 스타일 테이블의 PK 타입이 bigserial 이었으나, +-- 실제 운영 DB 는 varchar(50) 을 사용하므로 DROP 후 운영 스키마 1:1 로 재정합한다. +-- 추가로 운영 환경에만 있는 customer_cs, pms_quality_ecr 도 신규 생성. + +DROP TABLE IF EXISTS public.incoming_inspection_defect CASCADE; +DROP TABLE IF EXISTS public.incoming_inspection_detail CASCADE; +DROP TABLE IF EXISTS public.process_inspection_detail CASCADE; +DROP TABLE IF EXISTS public.process_inspection_master CASCADE; +DROP TABLE IF EXISTS public.pms_quality_semi_product_inspection CASCADE; + +-- 고객 CS (waceplm 운영판) +CREATE TABLE IF NOT EXISTS public.customer_cs ( + objid varchar(50) PRIMARY KEY, + receipt_no varchar(50), + receipt_date varchar(10), + qty numeric, + customer_objid varchar(200), + model_name varchar(200), + product_name varchar(200), + part_no varchar(200), + production_date varchar(10), + sales_date varchar(10), + serial_no varchar(200), + manufacturer varchar(200), + complaint_content varchar(2000), + action_content varchar(2000), + blame_decision varchar(50), + status varchar(50), + remark varchar(2000), + action_date varchar(10), + action_user_id varchar(50), + attach_file_objid varchar(50), + writer varchar(50), + reg_date timestamp, + mod_date timestamp, + part_name varchar, + product_no varchar, + action_type varchar, + receipt_user_id varchar(50) +); + +-- ECR (waceplm 운영 신규 테이블 — 기존 ecr_mng 와는 별도 보존) +CREATE TABLE IF NOT EXISTS public.pms_quality_ecr ( + objid varchar(50) PRIMARY KEY, + ecr_no varchar(50), + request_date varchar(10), + requester_id varchar(50), + part_no varchar(100), + part_name varchar(200), + issue_content text, + due_date varchar(10), + action_dept varchar(50), + action_manager_id varchar(50), + action_user_id varchar(50), + action_content text, + complete_date varchar(10), + attach_file_objid varchar(50), + remark text, + writer varchar(50), + reg_date timestamp, + modifier varchar(50), + mod_date timestamp, + part_objid varchar, + ecr_doc_summary text, + ecr_doc_reason text, + ecr_rev_no varchar(50), + ecr_rev_date varchar(20), + ecr_doc_form_no varchar(50), + ecr_doc_author varchar(100), + change_type varchar +); + +-- 수입검사 진행 상세 +CREATE TABLE IF NOT EXISTS public.incoming_inspection_detail ( + objid varchar(50) PRIMARY KEY, + inventory_in_objid varchar(50), + purchase_order_master_objid varchar, + request_date varchar(10), + request_user_id varchar(50), + inspection_date varchar(10), + inspector_id varchar(50), + inspection_type varchar(50), + inspection_yn varchar(10), + defect_type varchar(50), + defect_reason varchar(200), + action_status varchar(50), + inspection_qty numeric, + defect_qty numeric, + inspection_result varchar(50), + attach_file_objid varchar(50), + remark varchar(2000), + writer varchar(50), + reg_date timestamp +); + +-- 수입검사 불량 상세 +CREATE TABLE IF NOT EXISTS public.incoming_inspection_defect ( + objid varchar(50) PRIMARY KEY, + inspection_detail_objid varchar(50), + inspection_type varchar(50), + inspection_date varchar(10), + inspector_id varchar(50), + defect_type varchar(50), + defect_reason varchar(200), + action_status varchar(50), + action_result varchar(200), + inspection_qty numeric, + defect_qty numeric, + inspection_result varchar(50), + remark varchar(2000), + writer varchar(50), + reg_date timestamp +); + +-- 공정검사 마스터/디테일 +CREATE TABLE IF NOT EXISTS public.process_inspection_master ( + objid varchar(50) PRIMARY KEY, + inspection_date varchar(10), + inspector_id varchar(50), + remark varchar(2000), + writer varchar(50), + reg_date timestamp, + mod_date timestamp +); + +CREATE TABLE IF NOT EXISTS public.process_inspection_detail ( + objid varchar(50) PRIMARY KEY, + master_objid varchar(50), + process_cd varchar(50), + project_objid varchar(50), + part_objid varchar(50), + part_no varchar(200), + part_name varchar(200), + inspection_qty numeric, + defect_qty numeric, + work_env_status varchar(10), + measuring_device varchar(10), + dept_cd varchar(50), + user_id varchar(50), + inspection_date varchar(10), + inspector_id varchar(50), + remark varchar(2000), + action_status varchar(50), + inspection_result varchar(10), + writer varchar(50), + reg_date timestamp, + mod_date timestamp +); + +-- 반제품검사 (GOOD/DEFECT 통합) +CREATE TABLE IF NOT EXISTS public.pms_quality_semi_product_inspection ( + objid varchar(50) PRIMARY KEY, + project_no varchar(200), + work_order_no varchar(100), + part_no varchar(200), + part_name varchar(200), + receipt_qty numeric, + good_qty numeric, + defect_qty numeric, + disposition_type varchar(50), + remark varchar(2000), + writer varchar(50), + reg_date timestamp, + inspection_group_id varchar(50), + data_type varchar(20), + defect_type varchar(50), + defect_cause varchar(200), + responsible_dept varchar(50), + worker varchar(50), + process_status varchar(50), + inspection_date varchar(10), + inspector varchar(50), + model_name varchar(200), + product_type varchar(50), + is_locked varchar(1) +); + +-- 데이터 복사 (운영 → 로컬, ON CONFLICT DO NOTHING). 실제 실행은 node script 로 진행. +-- customer_cs 24 rows +-- pms_quality_ecr 1 +-- process_inspection_master 3 +-- process_inspection_detail 13 +-- incoming_inspection_detail 1 +-- pms_quality_semi_product_inspection 84