ERP-node/docs/DB_WORKFLOW_ANALYSIS.md

56 KiB

WACE ERP 데이터베이스 워크플로우 분석

📅 작성일: 2026-02-06
🎯 목적: 비즈니스 워크플로우 중심의 DB 구조 분석
📊 DB 엔진: PostgreSQL 16.8
📝 기반 스키마: plm_schema_20260120.sql


📋 Executive Summary

WACE ERP 시스템은 멀티테넌트 SaaS 아키텍처를 기반으로 한 제조업 특화 ERP입니다.

  • 총 테이블 수: 337개
  • 핵심 아키텍처: Multi-tenancy (company_code 기반 데이터 격리)
  • 특징: 메타데이터 드리븐, 동적 스키마, 플로우 기반 통합

🏗️ 1. 데이터베이스 아키텍처 개요

1.1 계층 구조

┌─────────────────────────────────────────────────────────┐
│             Application Layer (React)                    │
└─────────────────────────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────┐
│          Backend Layer (Node.js + TypeScript)           │
│  - API Routes                                           │
│  - Business Logic Services                             │
│  - Raw SQL Query Execution                             │
└─────────────────────────────────────────────────────────┘
                           ↓
┌─────────────────────────────────────────────────────────┐
│              Database Layer (PostgreSQL)                │
│                                                         │
│  ┌──────────────────┐  ┌──────────────────┐           │
│  │  System Core     │  │  Metadata        │           │
│  │  - user_info     │  │  - table_labels  │           │
│  │  - company_mng   │  │  - screen_def    │           │
│  │  - menu_info     │  │  - flow_def      │           │
│  └──────────────────┘  └──────────────────┘           │
│                                                         │
│  ┌─────────────────────────────────────────┐           │
│  │         Business Domain Tables          │           │
│  │  - Sales (30+)  - Purchase (25+)       │           │
│  │  - Stock (20+)  - Production (25+)     │           │
│  │  - Quality (15+) - Logistics (20+)     │           │
│  │  - PLM (30+)     - Accounting (20+)    │           │
│  └─────────────────────────────────────────┘           │
└─────────────────────────────────────────────────────────┘

1.2 멀티테넌시 핵심 원칙

ABSOLUTE MUST: 모든 테이블에 company_code

-- ✅ 표준 테이블 구조
CREATE TABLE {table_name} (
  id VARCHAR(500) PRIMARY KEY DEFAULT gen_random_uuid()::text,
  company_code VARCHAR(20) NOT NULL,  -- 필수!
  created_date TIMESTAMP DEFAULT NOW(),
  updated_date TIMESTAMP DEFAULT NOW(),
  writer VARCHAR(500),
  -- ... 비즈니스 컬럼들
);

-- 필수 인덱스
CREATE INDEX idx_{table_name}_company_code 
ON {table_name}(company_code);

company_code = "*" 의미

  • 잘못된 이해: 모든 회사 공통 데이터
  • 올바른 이해: 슈퍼 관리자 전용 데이터
  • 일반 회사 쿼리: WHERE company_code = $1 AND company_code != '*'

🎯 2. 핵심 시스템 테이블 (System Core)

2.1 사용자 및 인증

테이블 역할 핵심 컬럼
user_info 사용자 정보 user_id, user_name, email, password_hash, company_code
user_info_history 사용자 변경 이력 history_id, user_id, change_type, changed_at
auth_tokens 인증 토큰 token_id, user_id, token, expires_at
login_access_log 로그인 이력 log_id, user_id, ip_address, login_at
user_dept 사용자-부서 매핑 (겸직 지원) user_id, dept_code, is_primary
user_dept_sub 겸직 부서 정보 user_id, sub_dept_code

워크플로우:

로그인 → auth_tokens 생성 → login_access_log 기록
회사별 데이터 격리 → company_code 필터링

2.2 권한 관리

테이블 역할 핵심 컬럼
authority_master 권한 그룹 마스터 objid, auth_name, auth_code, company_code
authority_master_history 권한 그룹 이력 objid, parent_objid, history_type
authority_sub_user 권한 그룹 멤버 objid, master_objid, user_id
rel_menu_auth 메뉴별 권한 CRUD objid, menu_objid, auth_objid, create_auth, read_auth, update_auth, delete_auth

권한 체계:

사용자 → authority_sub_user → authority_master → rel_menu_auth → 메뉴별 CRUD 권한

2.3 회사 및 부서

테이블 역할 핵심 컬럼
company_mng 회사 정보 company_code (PK), company_name, business_registration_number
company_code_sequence 회사 코드 시퀀스 company_code, next_sequence
dept_info 부서 정보 dept_code, dept_name, parent_dept_code, company_code
dept_info_history 부서 변경 이력 dept_code, change_type, changed_at

계층 구조:

company_mng (회사)
  └─ dept_info (부서 - 계층 구조)
       └─ user_dept (사용자 배정)

2.4 메뉴 시스템

테이블 역할 핵심 컬럼
menu_info 메뉴 정보 objid, menu_type, parent_obj_id, menu_name_kor, menu_url, screen_code, company_code, source_menu_objid
menu_screen_groups 통합 메뉴/화면 그룹 group_id, group_name, parent_group_id, company_code
menu_screen_group_items 그룹-화면 연결 group_id, screen_code
screen_menu_assignments 화면-메뉴 할당 screen_code, menu_id

메뉴 타입:

  • menu_type = 0: 일반 메뉴
  • menu_type = 1: 시스템 관리 메뉴
  • menu_type = 2: 동적 생성 메뉴 (screen_definitions에서 자동 생성)

메뉴 복사 메커니즘:

원본 메뉴 (회사A) → 복사 → 새 메뉴 (회사B)
source_menu_objid: 원본 메뉴의 objid 추적
재복사 시: source_menu_objid로 기존 복사본 찾아서 덮어쓰기

🗂️ 3. 메타데이터 시스템 (Metadata Layer)

3.1 테이블 메타데이터

테이블 역할 핵심 컬럼
table_labels 테이블 논리명 table_name (PK), table_label, description
table_type_columns 컬럼 타입 정의 (회사별) table_name, column_name, company_code, input_type, detail_settings, display_order
column_labels 컬럼 논리명 (레거시) table_name, column_name, column_label, input_type
table_relationships 테이블 관계 정의 parent_table, child_table, join_condition
table_log_config 테이블 로그 설정 table_name, log_enabled, log_table_name

메타데이터 구조:

table_labels (테이블 논리명)
  └─ table_type_columns (컬럼 타입 정의 - 회사별)
       └─ category_column_mapping (카테고리 컬럼 매핑)
            └─ table_column_category_values (카테고리 값)

동적 테이블 생성 프로세스:

  1. CREATE TABLE 실행
  2. table_labels 등록
  3. table_type_columns 등록 (회사별)
  4. column_labels 등록 (레거시 호환)
  5. ddl_execution_log에 DDL 실행 이력 기록

3.2 화면 메타데이터

테이블 역할 핵심 컬럼
screen_definitions 화면 정의 screen_code (PK), screen_name, table_name, screen_type, company_code
screen_layouts 화면 레이아웃 screen_code, layout_config (JSONB)
screen_templates 화면 템플릿 template_id, template_name, template_config
screen_widgets 화면 위젯 widget_id, screen_code, widget_type, widget_config
screen_groups 화면 그룹 group_id, group_name, parent_group_id
screen_group_screens 화면-그룹 연결 group_id, screen_code

화면 생성 워크플로우:

screen_definitions 생성
  → 트리거 발동 → menu_info 자동 생성 (menu_type=2)
  → screen_layouts 레이아웃 정의
  → screen_widgets 위젯 배치
  → screen_table_relations 테이블 관계 설정

3.3 화면 고급 기능

테이블 역할 핵심 컬럼
screen_embedding 화면 임베딩 parent_screen, child_screen, embed_config
screen_split_panel 분할 패널 screen_code, left_screen, right_screen, split_ratio
screen_data_transfer 화면 간 데이터 전달 source_screen, target_screen, mapping_config
screen_data_flows 화면 간 데이터 흐름 flow_id, source_screen, target_screen, flow_type
screen_field_joins 화면 필드 조인 source_table, target_table, join_condition
screen_table_relations 화면-테이블 관계 screen_code, table_name, relation_type

화면 임베딩 패턴:

마스터 화면 (sales_order)
  ├─ 좌측 패널: 수주 목록
  └─ 우측 패널: 상세 정보 (임베딩)
       ├─ 수주 기본 정보
       ├─ 수주 품목 (임베딩)
       └─ 배송 정보 (임베딩)

3.4 UI 컴포넌트 표준

테이블 역할 핵심 컬럼
component_standards UI 컴포넌트 표준 component_type, standard_props (JSONB)
button_action_standards 버튼 액션 기준 action_type, action_config (JSONB)
web_type_standards 웹 타입 기준 web_type, type_config (JSONB)
grid_standards 격자 시스템 기준 grid_type, grid_config (JSONB)
layout_standards 레이아웃 표준 layout_type, layout_config (JSONB)
layout_instances 레이아웃 인스턴스 instance_id, layout_type, instance_config
style_templates 스타일 템플릿 template_id, template_name, style_config (JSONB)

🔄 4. 플로우 및 데이터 통합 시스템

4.1 플로우 정의

테이블 역할 핵심 컬럼
flow_definition 플로우 정의 id, name, table_name, db_source_type, company_code
flow_step 플로우 단계 step_id, flow_id, step_name, step_type, step_order, action_config (JSONB)
flow_step_connection 플로우 단계 연결 connection_id, source_step_id, target_step_id, condition
flow_data_mapping 플로우 데이터 매핑 mapping_id, flow_id, source_table, target_table, mapping_config

플로우 타입:

  • 승인 플로우: 결재 라인 정의
  • 상태 플로우: 데이터 상태 전환
  • 데이터 플로우: 테이블 간 데이터 이동
  • 통합 플로우: 외부 시스템 연동

4.2 플로우 실행 및 모니터링

테이블 역할 핵심 컬럼
flow_data_status 데이터 현재 상태 data_id, flow_id, current_step_id, status
flow_audit_log 플로우 상태 변경 이력 log_id, flow_id, data_id, from_step, to_step, changed_at, changed_by
flow_integration_log 플로우 외부 연동 로그 log_id, flow_id, integration_type, request_data, response_data

플로우 실행 예시: 수주 승인

수주 등록 (sales_order_mng)
  → flow_data_status 생성 (status: 'PENDING')
  → flow_step 1: 영업팀장 승인
  → flow_step 2: 재고 확인
  → flow_step 3: 생산계획 생성
  → flow_step 4: 최종 승인
  → flow_audit_log 각 단계 기록

4.3 노드 기반 플로우

테이블 역할 핵심 컬럼
node_flows 노드 기반 플로우 flow_id, flow_name, nodes (JSONB), edges (JSONB)
dataflow_diagrams 데이터플로우 다이어그램 diagram_id, diagram_name, diagram_data (JSONB)
dataflow_external_calls 데이터플로우 외부 호출 call_id, diagram_id, external_connection_id

노드 타입:

  • Start/End Node
  • Data Node (테이블 조회/저장)
  • Logic Node (조건 분기, 계산)
  • External Node (외부 API 호출)
  • Transform Node (데이터 변환)

🌐 5. 외부 연동 시스템

5.1 외부 데이터베이스 연결

테이블 역할 핵심 컬럼
external_db_connections 외부 DB 연결 정보 connection_id, connection_name, db_type, host, port, database, username, password_encrypted
external_db_connection 외부 DB 연결 (레거시) connection_id, connection_config (JSONB)
external_connection_permission 외부 연결 권한 permission_id, connection_id, user_id, allowed_operations
flow_external_db_connection 플로우 전용 외부 DB 연결 connection_id, flow_id, db_config (JSONB)
flow_external_connection_permission 플로우 외부 연결 권한 permission_id, flow_id, connection_id

지원 DB 타입:

  • PostgreSQL
  • MySQL
  • MS SQL Server
  • Oracle
  • MongoDB (NoSQL)

5.2 외부 REST API 연결

테이블 역할 핵심 컬럼
external_rest_api_connections 외부 REST API 연결 connection_id, api_name, base_url, auth_type, auth_config (JSONB)
external_call_configs 외부 호출 설정 config_id, connection_id, endpoint, method, headers (JSONB)
external_call_logs 외부 호출 로그 log_id, config_id, request_data, response_data, status_code, executed_at

인증 방식:

  • API Key
  • Bearer Token
  • OAuth 2.0
  • Basic Auth

5.3 데이터 수집 배치

테이블 역할 핵심 컬럼
data_collection_configs 데이터 수집 설정 config_id, source_type, source_config (JSONB), schedule
data_collection_jobs 데이터 수집 작업 job_id, config_id, job_status, started_at, completed_at
data_collection_history 데이터 수집 이력 history_id, job_id, collected_count, error_count
collection_batch_management 수집 배치 관리 batch_id, batch_name, batch_config (JSONB)
collection_batch_executions 배치 실행 이력 execution_id, batch_id, execution_status, executed_at

📊 6. 비즈니스 도메인 테이블 (Business Domain)

6.1 영업/수주 (Sales & Orders) - 30+ 테이블

핵심 테이블

테이블 역할 주요 참조
sales_order_mng 수주 관리 customer_mng, product_mng
sales_order_detail 수주 상세 sales_order_mng
sales_order_detail_log 수주 상세 이력 sales_order_detail
sales_request_master 구매요청서 마스터 customer_mng
sales_request_part 구매요청서 품목 sales_request_master, part_mng
estimate_mgmt 견적 관리 customer_mng, product_mng
contract_mgmt 계약 관리 customer_mng
contract_mgmt_option 계약 옵션 contract_mgmt

영업 지원 테이블

테이블 역할
sales_bom_report 영업 BOM 보고서
sales_bom_part_qty 영업 BOM 수량
sales_bom_report_part 영업 BOM 품목
sales_long_delivery 장납기 부품 리스트
sales_long_delivery_input 장납기 자재 투입 이력
sales_long_delivery_predict 장납기 예측
sales_part_chg 설계 변경 리스트
sample_supply 샘플 공급

고객 관리

테이블 역할
customer_mng 거래처 마스터
customer_item 거래처별 품번 관리
customer_item_alias 거래처별 품목 품번/품명
customer_item_mapping 거래처별 품목 매핑
customer_item_price 거래처별 품목 단가 이력
customer_service_mgmt 조치내역서 마스터
customer_service_part 조치내역서 사용 부품
customer_service_workingtime 조치내역서 작업 시간
counselingmgmt 상담 관리

워크플로우: 수주 프로세스

1. 견적 요청 (estimate_mgmt)
2. 견적 작성 및 발송
3. 수주 등록 (sales_order_mng)
4. 수주 상세 입력 (sales_order_detail)
5. 계약 체결 (contract_mgmt)
6. 생산 계획 생성 (order_plan_mgmt)
7. 구매 요청 (sales_request_master)

6.2 구매/발주 (Purchase & Procurement) - 25+ 테이블

핵심 테이블

테이블 역할 주요 참조
purchase_order_master 발주 관리 마스터 supplier_mng
purchase_order_part 발주서 상세 목록 purchase_order_master, part_mng
purchase_order_multi 동시적용 프로젝트 발주 purchase_order_master
purchase_order_mng 발주 관리 supplier_mng
purchase_detail 구매 상세 purchase_order
purchase_order 구매 주문 supplier_mng

공급처 관리

테이블 역할
supplier_mng 공급처 마스터
supplier_mng_log 공급처 변경 이력
supplier_item 공급처별 품목 정보
supplier_item_alias 공급처별 품목 품번/품명
supplier_item_mapping 공급처별 품목 매핑
supplier_item_price 공급처별 품목 단가
procurement_standard 구매 기준 정보

입고 관리

테이블 역할
delivery_history 입고 관리
delivery_history_defect 입고 불량 품목
delivery_part_price 입고 품목 단가
receiving 입고 처리
receive_history 입고 이력
inbound_mng 입고 관리
check_report_mng 검수 관리 보고서

워크플로우: 구매 프로세스

1. 구매 요청 (sales_request_master)
2. 공급처 선정 (supplier_mng)
3. 발주서 작성 (purchase_order_master)
4. 발주서 상세 (purchase_order_part)
5. 입고 예정 (delivery_history)
6. 검수 (check_report_mng)
7. 입고 확정 (receiving)
8. 재고 반영 (inventory_stock)

6.3 재고/창고 (Inventory & Warehouse) - 20+ 테이블

핵심 테이블

테이블 역할 주요 참조
inventory_stock 재고 현황 item_info, warehouse_location
inventory_history 재고 이력 inventory_stock
warehouse_info 창고 정보 -
warehouse_location 창고 위치 warehouse_info
inbound_mng 입고 관리 warehouse_location
outbound_mng 출고 관리 warehouse_location
material_release 자재 출고 -

물류 관리

테이블 역할
shipment_header 출하 헤더
shipment_detail 출하 상세
shipment_plan 출하 계획
shipment_instruction 출하 지시
shipment_instruction_item 출하 지시 품목
shipment_pallet 출하 파레트
delivery_destination 납품처 정보
delivery_route_mng 배송 경로 관리
delivery_route_mng_log 배송 경로 이력
delivery_status 배송 상태

디지털 트윈 (창고 레이아웃)

테이블 역할
digital_twin_layout 디지털 트윈 레이아웃
digital_twin_layout_template 레이아웃 템플릿
digital_twin_location_layout Location 배치 정보
digital_twin_zone_layout Zone 배치 정보
digital_twin_objects 디지털 트윈 객체
yard_layout 야드 레이아웃
yard_material_placement 야드 자재 배치

워크플로우: 재고 관리

1. 입고 (inbound_mng)
   → inventory_stock 증가
   → inventory_history 기록

2. 출고 (outbound_mng)
   → inventory_stock 감소
   → inventory_history 기록

3. 창고 위치 관리
   → warehouse_location
   → digital_twin_location_layout (시각화)

4. 재고 조사
   → inventory_stock 조회
   → 실사 vs 전산 비교
   → 차이 조정

6.4 생산/작업 (Production & Work) - 25+ 테이블

핵심 테이블

테이블 역할 주요 참조
work_orders 작업지시 관리 product_mng, sales_order_mng
work_orders_detail 작업지시 상세 work_orders
work_instruction 작업지시 -
work_instruction_detail 작업지시 상세 work_instruction
work_instruction_log 작업지시 이력 work_instruction
work_instruction_detail_log 작업지시 상세 이력 work_instruction_detail
work_order 작업지시 (레거시) -
work_request 작업 요청 (워크플로우) -

생산 계획

테이블 역할
order_plan_mgmt 생산 계획 관리
order_plan_result_error 생산 계획 오류 결과
production_task 생산 작업
production_record 생산 실적
production_issue 생산 이슈
facility_assembly_plan 설비 조립 계획

공정 관리

테이블 역할
process_mng 공정 관리
process_equipment 공정 설비
item_routing_version 품목 라우팅 버전
item_routing_detail 품목 라우팅 상세
input_resource 투입 자원

설비 관리

테이블 역할
equipment_mng 설비 관리
equipment_mng_log 설비 변경 이력
equipment_consumable 설비 소모품
equipment_consumable_log 소모품 이력
equipment_inspection_item 설비 점검 항목
equipment_inspection_item_log 점검 항목 이력
inspection_equipment_mng 검사 설비 관리
inspection_equipment_mng_log 검사 설비 이력

워크플로우: 생산 프로세스

1. 수주 확정 (sales_order_mng)
2. 생산 계획 생성 (order_plan_mgmt)
3. 자재 소요 계획 (MRP)
4. 작업지시 발행 (work_orders)
5. 자재 출고 (material_release)
6. 생산 실행 (production_record)
7. 품질 검사 (inspection_standard)
8. 완제품 입고 (inventory_stock)

6.5 품질/검사 (Quality & Inspection) - 15+ 테이블

테이블 역할 주요 참조
inspection_standard 검사 기준 -
item_inspection_info 품목 검사 정보 item_info
defect_standard_mng 불량 기준 관리 -
defect_standard_mng_log 불량 기준 이력 defect_standard_mng
check_report_mng 검수 관리 보고서 -

품질 관리 워크플로우:

1. 입고 검사 (check_report_mng)
2. 공정 검사 (inspection_standard)
3. 최종 검사 (item_inspection_info)
4. 불량 처리 (defect_standard_mng)
5. 품질 데이터 분석

6.6 물류/운송 (Logistics & Transport) - 20+ 테이블

차량 관리

테이블 역할 주요 참조
vehicles 차량 정보 -
drivers 운전자 정보 -
vehicle_locations 차량 현재 위치 vehicles
vehicle_location_history 차량 위치 이력 vehicles
transport_vehicle_locations 운행 관리 실시간 위치 vehicles

운송 관리

테이블 역할
transport_logs 운행 이력
transport_statistics 일별 운행 통계
vehicle_trip_summary 차량 운행 요약
maintenance_schedules 차량 정비 일정

운송사 관리

테이블 역할
carrier_mng 운송사 관리
carrier_mng_log 운송사 이력
carrier_contract_mng 운송사 계약 관리
carrier_contract_mng_log 계약 이력
carrier_vehicle_mng 운송사 차량 관리
carrier_vehicle_mng_log 차량 이력

DTG (디지털운행기록계)

테이블 역할
dtg_management DTG 통합 관리 (구매/설치/점검/폐기/정산)
dtg_management_log DTG 관리 이력
dtg_contracts DTG 차종별/운송사별 계약
dtg_monthly_settlements DTG 월별 정산
dtg_maintenance_history DTG 점검 이력

물류 비용

테이블 역할
logistics_cost_mng 물류 비용 관리
logistics_cost_mng_log 물류 비용 이력

워크플로우: 운송 관리

1. 출하 계획 (shipment_plan)
2. 차량 배차 (vehicles)
3. 운행 시작
   → vehicle_location_history (GPS 추적)
   → transport_logs 기록
4. 배송 완료
5. 운행 통계 집계 (transport_statistics)
6. 정산 (dtg_monthly_settlements)

6.7 PLM/설계 (Product Lifecycle Management) - 30+ 테이블

제품 관리

테이블 역할 주요 참조
product_mng 제품 마스터 -
product_mgmt 제품 관리 -
product_mgmt_model 제품 모델 product_mgmt
product_mgmt_price_history 제품 가격 이력 product_mgmt
product_mgmt_upg_master 제품 업그레이드 마스터 product_mgmt
product_mgmt_upg_detail 제품 업그레이드 상세 product_mgmt_upg_master
product_kind_spec 제품별 사양 관리 -
product_kind_spec_main 제품별 사양 메인 -
product_spec 제품 사양 -
product_group_mng 제품 그룹 관리 -

품목 관리

테이블 역할
item_info 품목 정보
part_mng 부품 관리 (설계 정보 포함)
part_mng_history 부품 변경 이력
part_mgmt 부품 관리
part_distribution_list 부품 배포 리스트

BOM 관리

테이블 역할
klbom_tbl KL BOM 테이블
part_bom_qty BOM 수량 관리
part_bom_report BOM 보고서
sales_bom_report 영업 BOM 보고서
sales_bom_report_part 영업 BOM 품목
sales_bom_part_qty 영업 BOM 수량

프로젝트 관리

테이블 역할
pms_pjt_info 프로젝트 정보
pms_pjt_concept_info 프로젝트 개념 정보
pms_pjt_year_goal 프로젝트 연간 목표
pms_rel_pjt_prod 프로젝트-제품 관계
pms_rel_pjt_concept_prod 프로젝트 개념-제품 관계
pms_rel_pjt_concept_milestone 프로젝트 개념-마일스톤
pms_rel_prod_ref_dept 제품-참조부서 관계
project 프로젝트 (레거시)
project_mgmt 프로젝트 관리
project_concept 프로젝트 개념 (레거시?)

WBS (Work Breakdown Structure)

테이블 역할
pms_wbs_task WBS 작업
pms_wbs_task_info WBS 작업 정보
pms_wbs_task_confirm WBS 작업 확인
pms_wbs_task_standard WBS 작업 표준
pms_wbs_task_standard2 WBS 작업 표준2
pms_wbs_template WBS 템플릿

설계 관리

테이블 역할
mold_dev_request_info 금형 개발 요청
structural_review_proposal 구조 검토 제안서
external_work_review_info 외주 작업 검토 정보
standard_doc_info 표준 문서 정보

OEM 관리

테이블 역할
oem_mng OEM 관리
oem_factory_mng OEM 공장 관리
oem_milestone_mng OEM 마일스톤 관리

워크플로우: PLM 프로세스

1. 제품 기획 (pms_pjt_concept_info)
2. 프로젝트 생성 (pms_pjt_info)
3. WBS 작업 분해 (pms_wbs_task)
4. 제품 설계 (product_mng)
5. BOM 작성 (part_bom_report)
6. 부품 관리 (part_mng)
7. 설계 검토 (structural_review_proposal)
8. 양산 전환 (production_task)

6.8 회계/원가 (Accounting & Costing) - 20+ 테이블

원가 관리

테이블 역할 주요 참조
material_cost 재료비 -
injection_cost 사출 원가 -
profit_loss 손익 관리 -
profit_loss_total 손익 합계 -
profit_loss_coefficient 손익 계수 -
profit_loss_coolingtime 손익 냉각 시간 -
profit_loss_depth 손익 깊이 -
profit_loss_lossrate 손익 손실률 -
profit_loss_machine 손익 기계 -
profit_loss_pretime 손익 사전 시간 -
profit_loss_srrate 손익 SR률 -
profit_loss_weight 손익 중량 -
profit_loss_total_addlist 손익 합계 추가 리스트 -
profit_loss_total_addlist2 손익 합계 추가 리스트2 -

자재/비용 관리

테이블 역할
material_mng 자재 관리
material_master_mgmt 자재 마스터 관리
material_detail_mgmt 자재 상세 관리
input_cost_goal 투입 원가 목표

비용/투자

테이블 역할
expense_master 비용 마스터
expense_detail 비용 상세
pms_invest_cost_mng 투자 비용 관리
fund_mgmt 자금 관리

세금계산서

테이블 역할
tax_invoice 세금계산서
tax_invoice_item 세금계산서 항목

안전 예산

테이블 역할
safety_budget_execution 안전 예산 집행
safety_incidents 안전 사고
safety_inspections 안전 점검
safety_inspections_log 안전 점검 이력

워크플로우: 원가 계산

1. BOM 기반 재료비 계산 (material_cost)
2. 공정별 가공비 계산 (injection_cost)
3. 간접비 배부
4. 총 원가 집계 (profit_loss_total)
5. 판매가 대비 이익률 계산 (profit_loss)

6.9 기타 비즈니스 테이블 - 15+ 테이블

공통 코드

테이블 역할
comm_code 공통 코드
comm_code_history 공통 코드 이력
code_category 코드 카테고리
code_info 코드 정보

환율

테이블 역할
comm_exchange_rate 환율 정보

게시판/댓글

테이블 역할
chartmgmt 차트 관리
comments 댓글
inboxtask 받은편지함 작업

첨부파일

테이블 역할
attach_file_info 첨부파일 정보
file_down_log 파일 다운로드 로그

승인

테이블 역할
approval 승인

옵션 관리

테이블 역할
option_mng 옵션 관리
option_price_history 옵션 가격 이력

수주 사양

테이블 역할
order_spec_mng 수주 사양 관리
order_spec_mng_history 수주 사양 이력

기타

테이블 역할
ratecal_mgmt 요율 계산 관리
time_sheet 타임시트
problem_mng 문제 관리
planning_issue 계획 이슈
used_mng 중고 관리

📊 7. 대시보드 및 리포트 시스템

7.1 대시보드

테이블 역할 핵심 컬럼
dashboards 대시보드 정의 dashboard_id, dashboard_name, company_code
dashboard_elements 대시보드 요소 element_id, dashboard_id, element_type, element_config (JSONB)
dashboard_shares 대시보드 공유 share_id, dashboard_id, shared_with_user_id
dashboard_sliders 대시보드 슬라이더 slider_id, slider_name, company_code
dashboard_slider_items 슬라이더 내 대시보드 목록 item_id, slider_id, dashboard_id, display_order

대시보드 구조:

dashboard_sliders (슬라이더 그룹)
  └─ dashboard_slider_items (슬라이더에 포함된 대시보드들)
       └─ dashboards (개별 대시보드)
            └─ dashboard_elements (차트, 위젯 등)

7.2 리포트 시스템

테이블 역할 핵심 컬럼
report_master 리포트 마스터 report_id, report_name, report_type
report_query 리포트 쿼리 query_id, report_id, query_sql, query_params
report_layout 리포트 레이아웃 layout_id, report_id, layout_config (JSONB)
report_template 리포트 템플릿 template_id, template_name, template_config (JSONB)
report_menu_mapping 리포트-메뉴 매핑 mapping_id, report_id, menu_id

리포트 생성 프로세스:

1. report_master 정의
2. report_query SQL 작성
3. report_layout 레이아웃 설정
4. report_menu_mapping 메뉴 연결
5. 사용자가 메뉴 클릭
6. 동적 SQL 실행
7. 결과를 레이아웃에 맞춰 렌더링

🔧 8. 고급 기능 시스템

8.1 카테고리 시스템

테이블 역할 핵심 컬럼
category_column_mapping 카테고리 컬럼 매핑 table_name, column_name, category_key
table_column_category_values 카테고리 값 table_name, column_name, company_code, category_values (JSONB)
category_value_cascading_group 카테고리 연쇄 그룹 group_id, group_name
category_value_cascading_mapping 카테고리 연쇄 매핑 mapping_id, parent_category, child_category

카테고리 기능:

  • 컬럼별 드롭다운 옵션 관리
  • 회사별 독립적인 카테고리 값
  • 연쇄 드롭다운 (parent → child)

8.2 연쇄 드롭다운 (Cascading Dropdown)

테이블 역할 핵심 컬럼
cascading_relation 연쇄 드롭다운 관계 relation_id, parent_field, child_field, relation_config
cascading_hierarchy_group 다단계 연쇄 그룹 group_id, group_name, hierarchy_levels
cascading_hierarchy_level 다단계 연쇄 레벨 level_id, group_id, level_order, level_config
cascading_condition 조건부 연쇄 condition_id, parent_field, child_field, condition_config
cascading_multi_parent 다중 부모 연쇄 relation_id, child_field, parent_fields (ARRAY)
cascading_multi_parent_source 다중 부모 소스 source_id, relation_id, parent_field, source_config
cascading_mutual_exclusion 상호 배제 exclusion_id, field_1, field_2
cascading_reverse_lookup 역방향 연쇄 lookup_id, child_field, parent_field
cascading_auto_fill_group 자동 입력 그룹 group_id, master_field, auto_fill_fields
cascading_auto_fill_mapping 자동 입력 매핑 mapping_id, group_id, source_field, target_field

연쇄 드롭다운 패턴:

1. 단순 연쇄: 대분류 → 중분류 → 소분류
2. 다단계 연쇄: 회사 → 부서 → 팀 → 직원
3. 조건부 연쇄: 제품군에 따라 다른 옵션 표시
4. 다중 부모: 부품은 여러 제품에 속할 수 있음
5. 자동 입력: 거래처 선택 시 주소/연락처 자동 입력

8.3 채번 규칙 (Numbering Rules)

테이블 역할 핵심 컬럼
numbering_rules 채번 규칙 마스터 rule_id, rule_name, table_name, column_name, company_code
numbering_rule_parts 채번 규칙 파트 part_id, rule_id, part_order, part_type, part_config

채번 규칙 예시:

수주번호: SO-20260206-001
  - SO: 고정 접두사
  - 20260206: 날짜 (YYYYMMDD)
  - 001: 일련번호 (3자리)

발주번호: PO-{회사코드}-{YYYYMM}-{시퀀스}
  - PO: 고정 접두사
  - COMPANY_A: 회사 코드
  - 202602: 년월
  - 0001: 시퀀스 (4자리)

8.4 엑셀 업로드 매핑

테이블 역할 핵심 컬럼
excel_mapping_template 엑셀 매핑 템플릿 template_id, template_name, table_name, column_mapping (JSONB)

엑셀 업로드 프로세스:

1. 사용자가 엑셀 업로드
2. 헤더 행 읽기
3. excel_mapping_template에서 매칭 템플릿 조회
4. 컬럼 자동 매핑
5. 데이터 검증
6. DB 삽입

8.5 데이터 관계 브리지

테이블 역할 핵심 컬럼
data_relationship_bridge 테이블 간 데이터 관계 중계 bridge_id, source_table, source_id, target_table, target_id, relation_type

용도:

  • 여러 테이블에 걸친 데이터 연결 추적
  • M:N 관계 관리
  • 데이터 통합 조회

⚙️ 9. 배치 및 자동화 시스템

9.1 배치 작업

테이블 역할 핵심 컬럼
batch_jobs 배치 작업 정의 job_id, job_name, job_type, job_config (JSONB)
batch_schedules 배치 스케줄 schedule_id, job_id, cron_expression
batch_execution_logs 배치 실행 로그 log_id, job_id, execution_status, started_at, completed_at
batch_job_executions 배치 작업 실행 execution_id, job_id, execution_params
batch_job_parameters 배치 작업 파라미터 param_id, job_id, param_name, param_value
batch_configs 배치 설정 config_id, job_id, config_key, config_value
batch_mappings 배치 매핑 mapping_id, source_config, target_config

배치 작업 예시:

  • 일일 재고 실사
  • 월말 마감 처리
  • 통계 데이터 집계
  • 외부 시스템 동기화

9.2 동적 폼 데이터

테이블 역할 핵심 컬럼
dynamic_form_data 동적 폼 데이터 form_id, table_name, form_data (JSONB)

용도:

  • 런타임에 정의된 폼의 데이터 저장
  • 유연한 데이터 구조

🌍 10. 다국어 시스템

10.1 다국어 관리

테이블 역할 핵심 컬럼
multi_lang_category 다국어 키 카테고리 (2단계 계층) category_id, category_name, parent_category_id
multi_lang_key_master 다국어 키 마스터 key_id, key_name, category_id, default_text
multi_lang_text 다국어 텍스트 text_id, key_id, language_code, translated_text
language_master 언어 마스터 language_code, language_name, is_active

다국어 구조:

multi_lang_category (카테고리)
  └─ multi_lang_key_master (키)
       └─ multi_lang_text (언어별 번역)
            ├─ ko: 한국어
            ├─ en: 영어
            ├─ ja: 일본어
            └─ zh: 중국어

사용 예시:

// menu_info.lang_key = "menu.sales.order"
// multi_lang_key_master: key_name = "menu.sales.order"
// multi_lang_text:
//   - ko: "수주관리"
//   - en: "Sales Order"
//   - ja: "受注管理"

📧 11. 메일 및 로그 시스템

11.1 메일 시스템

테이블 역할 핵심 컬럼
mail_log 메일 발송 로그 log_id, to_email, subject, body, sent_at, sent_status

11.2 로그 테이블

테이블 역할
ddl_execution_log DDL 실행 로그
file_down_log 파일 다운로드 로그
login_access_log 로그인 접근 로그

11.3 변경 이력 테이블 (Audit Log)

모든 주요 테이블에는 {table_name}_log 테이블이 있습니다:

원본 테이블 이력 테이블 트리거 함수
carrier_contract_mng carrier_contract_mng_log carrier_contract_mng_log_trigger_func()
carrier_mng carrier_mng_log carrier_mng_log_trigger_func()
carrier_vehicle_mng carrier_vehicle_mng_log carrier_vehicle_mng_log_trigger_func()
defect_standard_mng defect_standard_mng_log -
delivery_route_mng delivery_route_mng_log -
dtg_management dtg_management_log -
equipment_consumable equipment_consumable_log -
equipment_inspection_item equipment_inspection_item_log -
equipment_mng equipment_mng_log -
inspection_equipment_mng inspection_equipment_mng_log -
item_info_20251202 item_info_20251202_log -
logistics_cost_mng logistics_cost_mng_log -
order_table order_table_log -
safety_inspections safety_inspections_log -
sales_order_detail sales_order_detail_log -
supplier_mng supplier_mng_log -
work_instruction work_instruction_log -
work_instruction_detail work_instruction_detail_log -

이력 테이블 구조:

CREATE TABLE {table_name}_log (
  id SERIAL PRIMARY KEY,
  operation_type VARCHAR(10), -- INSERT, UPDATE, DELETE
  original_id VARCHAR(500),   -- 원본 레코드 ID
  changed_column VARCHAR(100),
  old_value TEXT,
  new_value TEXT,
  changed_by VARCHAR(100),
  ip_address VARCHAR(50),
  changed_at TIMESTAMP DEFAULT NOW(),
  full_row_before JSONB,      -- 변경 전 전체 행
  full_row_after JSONB        -- 변경 후 전체 행
);

트리거 자동 기록:

CREATE TRIGGER trg_{table_name}_log
AFTER INSERT OR UPDATE OR DELETE ON {table_name}
FOR EACH ROW
EXECUTE FUNCTION {table_name}_log_trigger_func();

🔍 12. 데이터베이스 함수 및 트리거

12.1 주요 함수

화면 관련

-- 화면 생성 시 메뉴 자동 생성
CREATE FUNCTION auto_create_menu_for_screen() RETURNS TRIGGER;

-- 화면 삭제 시 메뉴 비활성화
CREATE FUNCTION auto_deactivate_menu_for_screen() RETURNS TRIGGER;

통계 집계

-- 일일 운송 통계 집계 함수
CREATE FUNCTION aggregate_daily_transport_statistics(target_date DATE DEFAULT CURRENT_DATE - 1) 
RETURNS INTEGER;

거리 계산

-- Haversine 거리 계산 (GPS 좌표)
CREATE FUNCTION calculate_distance(lat1 NUMERIC, lng1 NUMERIC, lat2 NUMERIC, lng2 NUMERIC) 
RETURNS NUMERIC;

-- 차량 위치 이력의 이전 위치로부터 거리 계산
CREATE FUNCTION calculate_distance_from_prev() RETURNS TRIGGER;

비즈니스 로직

-- 수주 잔량 자동 계산
CREATE FUNCTION calculate_order_balance() RETURNS TRIGGER;

-- 세금계산서 합계 자동 계산
CREATE FUNCTION calculate_tax_invoice_total() RETURNS TRIGGER;

-- 영업에서 프로젝트 자동 생성
CREATE FUNCTION auto_create_project_from_sales(p_sales_no VARCHAR) RETURNS VARCHAR;

-- 차량 상태 변경 시 운행 통계 계산
CREATE FUNCTION calculate_trip_on_status_change() RETURNS TRIGGER;

12.2 주요 트리거

-- 화면 생성 시 메뉴 자동 생성
CREATE TRIGGER trg_auto_create_menu_for_screen
AFTER INSERT ON screen_definitions
FOR EACH ROW
EXECUTE FUNCTION auto_create_menu_for_screen();

-- 화면 삭제 시 메뉴 비활성화
CREATE TRIGGER trg_auto_deactivate_menu_for_screen
AFTER UPDATE ON screen_definitions
FOR EACH ROW
EXECUTE FUNCTION auto_deactivate_menu_for_screen();

-- 차량 위치 이력 거리 자동 계산
CREATE TRIGGER trg_calculate_distance_from_prev
BEFORE INSERT ON vehicle_location_history
FOR EACH ROW
EXECUTE FUNCTION calculate_distance_from_prev();

-- 수주 잔량 자동 계산
CREATE TRIGGER trg_calculate_order_balance
BEFORE INSERT OR UPDATE ON orders
FOR EACH ROW
EXECUTE FUNCTION calculate_order_balance();

-- 세금계산서 합계 자동 계산
CREATE TRIGGER trg_calculate_tax_invoice_total
BEFORE INSERT OR UPDATE ON tax_invoice
FOR EACH ROW
EXECUTE FUNCTION calculate_tax_invoice_total();

📈 13. 인덱스 전략

13.1 필수 인덱스

모든 테이블:

-- company_code 인덱스 (멀티테넌시 필수)
CREATE INDEX idx_{table_name}_company_code ON {table_name}(company_code);

13.2 복합 인덱스

자주 함께 조회되는 컬럼:

-- 회사별, 날짜별 조회
CREATE INDEX idx_sales_company_date ON sales_order_mng(company_code, order_date DESC);

-- 회사별, 상태별 조회
CREATE INDEX idx_work_orders_company_status ON work_orders(company_code, status);

-- 회사별, 거래처별 조회
CREATE INDEX idx_purchase_company_supplier ON purchase_order_master(company_code, partner_objid);

13.3 부분 인덱스

특정 조건의 데이터만:

-- 활성 상태의 메뉴만 인덱싱
CREATE INDEX idx_menu_active ON menu_info(company_code, menu_type) 
WHERE status = 'active';

-- 미완료 작업지시만 인덱싱
CREATE INDEX idx_work_orders_pending ON work_orders(company_code, wo_number) 
WHERE status IN ('PENDING', 'IN_PROGRESS');

13.4 JSONB 인덱스

JSONB 컬럼 검색:

-- GIN 인덱스 (JSONB 전체 검색)
CREATE INDEX idx_screen_layouts_config ON screen_layouts USING GIN (layout_config);

-- JSONB 특정 키 인덱스
CREATE INDEX idx_flow_step_action_type ON flow_step ((action_config->>'action_type'));

🔒 14. 데이터베이스 보안

14.1 암호화 컬럼

-- 외부 DB 비밀번호 암호화
external_db_connections.password_encrypted TEXT

-- 외부 REST API 인증 정보 암호화
external_rest_api_connections.auth_config JSONB

암호화 방식:

  • AES-256-GCM
  • 애플리케이션 레벨에서 암호화/복호화
  • DB에는 암호화된 값만 저장

14.2 접근 제어

회사별 데이터 격리:

-- 모든 쿼리에 company_code 필터 필수
WHERE company_code = $1 AND company_code != '*'

사용자별 권한 관리:

user_info
  → authority_sub_user
    → authority_master
      → rel_menu_auth
        → 메뉴별 CRUD 권한

14.3 감사 로그

  • 모든 변경 사항은 {table_name}_log 테이블에 기록
  • IP 주소, 사용자 ID, 변경 시각 추적
  • 변경 전후 전체 행 데이터 JSONB로 저장

🚀 15. 성능 최적화 전략

15.1 쿼리 최적화

1. company_code 필터링 항상 포함

-- ✅ Good
SELECT * FROM sales_order_mng
WHERE company_code = 'COMPANY_A'
  AND order_date >= '2026-01-01';

-- ❌ Bad (전체 스캔)
SELECT * FROM sales_order_mng
WHERE order_date >= '2026-01-01';

2. JOIN 시 company_code 매칭

-- ✅ Good
SELECT so.*, c.customer_name
FROM sales_order_mng so
LEFT JOIN customer_mng c 
  ON so.customer_code = c.customer_code
  AND so.company_code = c.company_code  -- 필수!
WHERE so.company_code = 'COMPANY_A';

-- ❌ Bad (크로스 조인 발생)
SELECT so.*, c.customer_name
FROM sales_order_mng so
LEFT JOIN customer_mng c 
  ON so.customer_code = c.customer_code
WHERE so.company_code = 'COMPANY_A';

3. 인덱스 활용

-- 복합 인덱스 순서 중요
CREATE INDEX idx_sales_company_date_status 
ON sales_order_mng(company_code, order_date, status);

-- ✅ Good (인덱스 활용)
WHERE company_code = 'COMPANY_A'
  AND order_date >= '2026-01-01'
  AND status = 'CONFIRMED';

-- ❌ Bad (인덱스 미활용)
WHERE status = 'CONFIRMED'
  AND order_date >= '2026-01-01'
  AND company_code = 'COMPANY_A';

15.2 대용량 데이터 처리

파티셔닝:

-- 날짜 기반 파티셔닝 (예시)
CREATE TABLE vehicle_location_history (
  ...
) PARTITION BY RANGE (recorded_at);

CREATE TABLE vehicle_location_history_2026_01 
PARTITION OF vehicle_location_history
FOR VALUES FROM ('2026-01-01') TO ('2026-02-01');

배치 처리:

-- 대량 삽입 시 COPY 사용
COPY table_name FROM '/path/to/file.csv' WITH (FORMAT csv, HEADER true);

-- 대량 업데이트 시 배치 단위로
UPDATE table_name
SET status = 'PROCESSED'
WHERE id IN (
  SELECT id FROM table_name
  WHERE status = 'PENDING'
  LIMIT 1000
);

15.3 캐싱 전략

애플리케이션 레벨 캐싱:

  • 메타데이터 (table_labels, column_labels) → Redis
  • 공통 코드 (comm_code) → Redis
  • 메뉴 정보 (menu_info) → Redis
  • 사용자 권한 (rel_menu_auth) → Redis

쿼리 결과 캐싱:

  • 통계 데이터
  • 집계 데이터
  • 읽기 전용 마스터 데이터

📝 16. 마이그레이션 가이드

16.1 마이그레이션 파일 목록

db/migrations/
├── 037_add_parent_group_to_screen_groups.sql
├── 050_create_work_orders_table.sql
├── 051_insert_work_order_screen_definition.sql
├── 052_insert_work_order_screen_layout.sql
├── 054_create_screen_management_enhancement.sql
├── 055_create_customer_item_prices_table.sql
└── plm_schema_20260120.sql  (전체 스키마 덤프)

16.2 마이그레이션 실행 순서

1. 테이블 생성

CREATE TABLE {table_name} (
  id VARCHAR(500) PRIMARY KEY DEFAULT gen_random_uuid()::text,
  company_code VARCHAR(20) NOT NULL,
  created_date TIMESTAMP DEFAULT NOW(),
  updated_date TIMESTAMP DEFAULT NOW(),
  writer VARCHAR(500),
  -- 비즈니스 컬럼들...
);

2. 인덱스 생성

CREATE INDEX idx_{table_name}_company_code ON {table_name}(company_code);
CREATE INDEX idx_{table_name}_created_date ON {table_name}(created_date DESC);
-- 기타 필요한 인덱스들...

3. 메타데이터 등록

-- table_labels
INSERT INTO table_labels (table_name, table_label, description)
VALUES ('{table_name}', '{한글명}', '{설명}')
ON CONFLICT (table_name) DO UPDATE SET ...;

-- table_type_columns
INSERT INTO table_type_columns (table_name, column_name, company_code, input_type, ...)
VALUES ...;

-- column_labels (레거시 호환)
INSERT INTO column_labels (table_name, column_name, column_label, ...)
VALUES ...;

4. 코멘트 추가

COMMENT ON TABLE {table_name} IS '{테이블 설명}';
COMMENT ON COLUMN {table_name}.{column_name} IS '{컬럼 설명}';

5. 화면 정의 (선택)

-- screen_definitions
INSERT INTO screen_definitions (screen_code, screen_name, table_name, ...)
VALUES ...;

-- 트리거 자동 발동 → menu_info 자동 생성

16.3 마이그레이션 롤백

-- 화면 정의 삭제
DELETE FROM screen_definitions WHERE screen_code = '{screen_code}';

-- 메뉴 삭제 (자동 비활성화되었을 것)
DELETE FROM menu_info WHERE screen_code = '{screen_code}';

-- 메타데이터 삭제
DELETE FROM column_labels WHERE table_name = '{table_name}';
DELETE FROM table_type_columns WHERE table_name = '{table_name}';
DELETE FROM table_labels WHERE table_name = '{table_name}';

-- 인덱스 삭제
DROP INDEX IF EXISTS idx_{table_name}_company_code;

-- 테이블 삭제
DROP TABLE IF EXISTS {table_name};

🎯 17. 데이터베이스 설계 원칙 요약

17.1 ABSOLUTE MUST (절대 필수)

  1. 모든 테이블에 company_code VARCHAR(20) NOT NULL
  2. 모든 쿼리에 company_code 필터 포함
  3. JOIN 시 company_code 매칭 조건 포함
  4. 모든 테이블에 company_code 인덱스 생성
  5. 일반 회사는 company_code != '*' 필터 필수

17.2 표준 테이블 구조

CREATE TABLE {table_name} (
  -- 기본 컬럼 (표준 5종 세트)
  id VARCHAR(500) PRIMARY KEY DEFAULT gen_random_uuid()::text,
  created_date TIMESTAMP DEFAULT NOW(),
  updated_date TIMESTAMP DEFAULT NOW(),
  writer VARCHAR(500),
  company_code VARCHAR(20) NOT NULL,
  
  -- 비즈니스 컬럼들
  ...
);

-- 필수 인덱스
CREATE INDEX idx_{table_name}_company_code ON {table_name}(company_code);

17.3 메타데이터 등록 필수

동적 테이블 생성 시:

  1. table_labels 등록
  2. table_type_columns 등록 (회사별)
  3. column_labels 등록 (레거시 호환)
  4. 코멘트 추가

17.4 쿼리 패턴

-- ✅ 표준 SELECT
SELECT * FROM table_name
WHERE company_code = $1
  AND company_code != '*'
ORDER BY created_date DESC;

-- ✅ 표준 JOIN
SELECT a.*, b.name
FROM table_a a
LEFT JOIN table_b b 
  ON a.ref_id = b.id
  AND a.company_code = b.company_code  -- 필수!
WHERE a.company_code = $1;

-- ✅ 표준 집계
SELECT 
  category,
  COUNT(*) as total,
  SUM(amount) as total_amount
FROM sales
WHERE company_code = $1
GROUP BY category;

📚 18. 참고 자료

18.1 관련 문서

docs/
├── DB_ARCHITECTURE_ANALYSIS.md           -- 기존 상세 DB 분석 문서
├── backend-architecture-analysis.md      -- 백엔드 아키텍처 분석
├── frontend-architecture-analysis.md     -- 프론트엔드 아키텍처 분석
└── kjs/
    ├── 멀티테넌시_구현_현황_분석_보고서.md
    ├── 테이블_타입관리_성능최적화_결과.md
    └── 카테고리_시스템_최종_완료_보고서.md

18.2 스키마 파일

db/
├── plm_schema_20260120.sql              -- 전체 스키마 덤프
└── migrations/
    ├── 037_add_parent_group_to_screen_groups.sql
    ├── 050_create_work_orders_table.sql
    ├── 051_insert_work_order_screen_definition.sql
    ├── 052_insert_work_order_screen_layout.sql
    ├── 054_create_screen_management_enhancement.sql
    └── 055_create_customer_item_prices_table.sql

18.3 백엔드 서비스 매핑

// backend-node/src/services/

// 화면 관리
screenManagementService.ts       screen_definitions, screen_layouts

// 테이블 관리
tableManagementService.ts        table_labels, table_type_columns, column_labels

// 메뉴 관리
menuService.ts                   menu_info, menu_screen_groups

// 카테고리 관리
categoryTreeService.ts           table_column_category_values

// 플로우 관리
flowDefinitionService.ts         flow_definition, flow_step
flowExecutionService.ts          flow_data_status, flow_audit_log

// 데이터플로우
dataflowService.ts               dataflow_diagrams, screen_data_flows

// 외부 연동
externalDbConnectionService.ts   external_db_connections
externalRestApiConnectionService.ts  external_rest_api_connections

// 배치
batchService.ts                  batch_jobs, batch_execution_logs

// 인증/권한
authService.ts                   user_info, auth_tokens
roleService.ts                   authority_master, rel_menu_auth

🎬 19. 비즈니스 워크플로우 통합 예시

19.1 수주 → 생산 → 출하 전체 플로우

[영업팀]
1. 견적 요청 접수 (estimate_mgmt)
2. 견적서 작성 및 발송
3. 고객 승인

[영업팀]
4. 수주 등록 (sales_order_mng)
   → sales_order_detail (품목별 상세)
   → contract_mgmt (계약 체결)

[생산관리팀]
5. 생산 계획 수립 (order_plan_mgmt)
   → 자재 소요 계획 (MRP)
   → 공정별 계획

[구매팀]
6. 구매 요청 (sales_request_master)
   → 공급처 선정 (supplier_mng)
   → 발주서 작성 (purchase_order_master)
   → 발주서 상세 (purchase_order_part)

[자재팀]
7. 입고 예정 (delivery_history)
   → 검수 (check_report_mng)
   → 입고 확정 (receiving)
   → 재고 반영 (inventory_stock)

[생산팀]
8. 작업지시 발행 (work_orders)
   → 자재 출고 (material_release)
   → 생산 실행 (production_record)

[품질팀]
9. 품질 검사 (inspection_standard)
   → 합격/불합격 판정
   → 완제품 입고 (inventory_stock)

[물류팀]
10. 출하 계획 (shipment_plan)
    → 출하 지시 (shipment_instruction)
    → 차량 배차 (vehicles)
    → 출고 처리 (outbound_mng)

[운송팀]
11. 운행 시작
    → GPS 추적 (vehicle_location_history)
    → 운행 로그 (transport_logs)

[고객]
12. 납품 완료
    → 배송 상태 업데이트 (delivery_status)
    → 세금계산서 발행 (tax_invoice)

[재무팀]
13. 정산
    → 매출 인식
    → 원가 계산 (profit_loss)

19.2 데이터 흐름 추적

플로우 정의 (flow_definition): "수주-생산-출하 플로우"
  │
  ├─ Step 1: 수주 접수 (flow_step)
  │    └─ 데이터: sales_order_mng
  │         └─ flow_data_status: STEP_1_COMPLETED
  │
  ├─ Step 2: 생산 계획 (flow_step)
  │    └─ 데이터: order_plan_mgmt
  │         └─ flow_data_status: STEP_2_COMPLETED
  │
  ├─ Step 3: 발주 처리 (flow_step)
  │    └─ 데이터: purchase_order_master
  │         └─ flow_data_status: STEP_3_COMPLETED
  │
  ├─ Step 4: 입고 처리 (flow_step)
  │    └─ 데이터: receiving, inventory_stock
  │         └─ flow_data_status: STEP_4_COMPLETED
  │
  ├─ Step 5: 생산 실행 (flow_step)
  │    └─ 데이터: work_orders, production_record
  │         └─ flow_data_status: STEP_5_COMPLETED
  │
  └─ Step 6: 출하 완료 (flow_step)
       └─ 데이터: shipment_plan, outbound_mng
            └─ flow_data_status: COMPLETED

각 단계 변경 이력: flow_audit_log
외부 시스템 연동: flow_integration_log

문서 작성자: Cursor AI (DB Specialist Agent)
문서 버전: 2.0
작성일: 2026-02-06
기반 스키마: plm_schema_20260120.sql (337 테이블)
목적: WACE ERP 전체 워크플로우 문서화를 위한 DB 구조 분석