품질관리 — waceplm 운영 DB 스키마/데이터 1:1 동기화 + incoming-mgmt 필터 완화
Build and Push Images / build-and-push (push) Has been cancelled

스키마 재정합 (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='완료'.
This commit is contained in:
chpark
2026-05-15 12:02:51 +09:00
parent c74e742b6f
commit 83a774f0f5
2 changed files with 188 additions and 1 deletions
+3 -1
View File
@@ -102,7 +102,9 @@ router.get("/incoming-mgmt", async (req: Request, res: Response) => {
const pool = getPool();
const q = req.query as Record<string, string>;
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)); };
@@ -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