# 제조업 공정 관리 방법론 ## 📋 목차 1. [개요](#개요) 2. [7가지 공정 관리 변수](#7가지-공정-관리-변수) 3. [데이터 구조 설계](#데이터-구조-설계) 4. [실무 시나리오별 해결 방법](#실무-시나리오별-해결-방법) 5. [구현 화면](#구현-화면) --- ## 개요 제조업에서 품목별 공정 관리는 다양한 변수를 고려해야 합니다. 본 문서는 이러한 변수들을 체계적으로 관리하기 위한 방법론을 제시합니다. --- ## 7가지 공정 관리 변수 ### 1. 품목별로 공정순서가 정해져있는 경우 - **해결방안**: `순서고정여부` = Y - **예시**: 재단 → 가공 → 조립 (반드시 이 순서) ### 2. 어떤 품목은 공정순서가 바뀌어도 되는 경우 - **해결방안**: `순서고정여부` = N - **예시**: 도장과 가공의 순서 변경 가능 ### 3. 어떤 공정은 내부 또는 외부(외주)에서 선택적으로 하는 경우 - **해결방안**: `작업구분` = "선택가능" - **예시**: 가공 공정을 내부 또는 외주 중 선택 ### 4. 어떤 외주에서는 상황에 따라 여럿 공정이 거쳐지는 경우 - **해결방안**: `외주업체목록` 컬럼에 복수 업체 저장 - **예시**: A업체, B업체, C업체 중 선택 ### 5. 어떤 경우에는 정해진 공정중 배제하고 하는 경우 - **해결방안**: `필수여부` = N - **예시**: 도장 공정을 생략 가능 ### 6. 공정 작업중 재작업의 경우 - **해결방안**: `공정상태` = "재작업", `재작업회차` 관리 - **예시**: 조립 공정 재실행 ### 7. 공정 작업중 이전 다른공정에서 재작업 - **해결방안**: `원공정순번` 기록, 공정 히스토리 추적 - **예시**: 검사 불합격 → 가공 공정으로 돌아가서 재작업 --- ## 데이터 구조 설계 ### 1. 공정 마스터 (ProcessMaster) ``` - process_code (공정코드, PK) - process_name (공정명) - process_type (공정유형: 내부/외주/선택가능) - standard_time (표준작업시간, 분) - equipment (사용설비) - worker_count (작업인원수) - use_yn (사용여부) - remark (비고) ``` ### 2. 품목별 라우팅 (ItemRouting) ``` - routing_id (라우팅ID, PK) - item_code (품목코드, FK) - version (버전: v1, v2, ...) - routing_name (라우팅명) - is_default (기본여부: Y/N) - use_yn (사용여부) ``` ### 3. 라우팅 상세 (RoutingDetail) ``` - routing_id (라우팅ID, FK) - seq_no (순번: 10, 20, 30...) - process_code (공정코드, FK) - is_required (필수여부: Y/N) ← 조건5 해결 - is_fixed_order (순서고정여부: Y/N) ← 조건2 해결 - work_type (작업구분: 내부/외주/선택) ← 조건3 해결 - vendor_list (외주업체목록, JSON) ← 조건4 해결 - prev_process (선행공정, FK, nullable) - standard_time (표준작업시간) - remark (비고) ``` ### 4. 작업지시별 공정 (WorkOrderProcess) ``` - wo_no (작업지시번호, FK) - seq_no (순번) - process_code (공정코드) - process_type (공정유형: STANDARD/ADDED/REWORK) - is_from_routing (기본라우팅여부: Y/N) - work_type (실제작업구분: 내부/외주) - vendor_code (외주업체코드, 선택시) - status (공정상태: 대기/진행중/완료/재작업) - rework_count (재작업회차) ← 조건6 해결 - original_seq (원공정순번, 재작업시) ← 조건7 해결 - add_reason (추가사유) - add_user (추가자) - add_datetime (추가일시) - start_time (시작시간) - end_time (종료시간) ``` ### 5. 공정 변경 이력 (ProcessChangeHistory) ``` - history_id (이력ID, PK) - wo_no (작업지시번호) - change_type (변경유형: ADD/DELETE/MODIFY/REORDER) - process_code (공정코드) - seq_no (순번) - change_reason (변경사유) - changed_by (변경자) - changed_at (변경일시) ``` --- ## 실무 시나리오별 해결 방법 ### 시나리오 1: 작업지시 생성 시 공정 추가/제거 **상황:** ``` 기본 라우팅: 재단 → 가공 → 조립 → 검사 작업지시 생성 시: 재단 → 가공 → [열처리 추가] → 조립 → 검사 ``` **해결방법:** 1. 작업지시 생성 화면에서 품목의 기본 라우팅을 불러옴 2. "라우팅 편집" 기능으로 공정 추가/삭제/순서변경 3. 편집된 라우팅을 `WorkOrderProcess` 테이블에 저장 4. `is_from_routing` = N (추가된 공정) 5. `process_type` = 'ADDED' 6. `add_reason`에 추가 사유 기록 **프로세스:** ``` [작업지시 생성] ↓ [품목 선택] → 기본 라우팅 자동 로드 ↓ [라우팅 편집] (선택사항) - 공정 추가 버튼 - 공정 삭제 (필수여부=N인 공정만) - 순서 변경 (드래그 앤 드롭) - 외주업체 선택 ↓ [저장] → WorkOrderProcess에 저장 ``` --- ### 시나리오 2: 작업 진행 중 긴급 공정 추가 ⭐ (핵심!) **상황:** ``` 작업 진행 상황: ✅ 10. 재단 (완료) ✅ 20. 가공 (완료) ⏸️ 30. 조립 (진행중) ⏳ 40. 검사 (대기) → 문제 발견! "표면처리" 공정이 필요함 → 조립 전에 표면처리를 해야 함 ``` **해결방법 A: 공정 중간 삽입 (권장)** ``` 1. 조립 공정 일시중지 (상태: 진행중 → 대기) 2. "긴급 공정 추가" 버튼 클릭 3. 공정 선택: 표면처리 4. 삽입 위치: 25 (20과 30 사이) 5. 추가 사유 입력: "표면 결함 발견, 표면처리 필요" 6. 저장 결과: ✅ 10. 재단 (완료) ✅ 20. 가공 (완료) ⏳ 25. 표면처리 (대기) ← 긴급 추가 ⏳ 30. 조립 (대기) ⏳ 40. 검사 (대기) ``` **데이터 저장:** ```sql INSERT INTO WorkOrderProcess VALUES ( 'WO-2025-001', -- wo_no 25, -- seq_no 'P099', -- process_code (표면처리) 'ADDED', -- process_type 'N', -- is_from_routing '내부', -- work_type NULL, -- vendor_code '대기', -- status 0, -- rework_count NULL, -- original_seq '표면 결함 발견, 표면처리 필요', -- add_reason '김철수', -- add_user NOW() -- add_datetime ); INSERT INTO ProcessChangeHistory VALUES ( UUID(), 'WO-2025-001', 'ADD', 'P099', 25, '표면 결함 발견, 표면처리 필요', '김철수', NOW() ); ``` **해결방법 B: 동적 라우팅 (가장 유연)** - 기본 라우팅은 "권장 사항"일 뿐 - 실제 작업은 현장에서 실시간 결정 - 모든 공정 추가/삭제가 자유로움 - 단, 변경 이력은 철저히 기록 --- ### 시나리오 3: 재작업 시 추가 공정 **상황:** ``` 원래 라우팅: 재단 → 가공 → 도장 → 조립 → 검사 진행 상황: ✅ 10. 재단 (완료) ✅ 20. 가공 (완료) ✅ 30. 도장 (완료) ✅ 40. 조립 (완료) ❌ 50. 검사 (불합격) → 도장 불량 발견 ``` **해결방법:** ``` 1. 검사 불합격 처리 2. "재작업" 버튼 클릭 3. 재작업 공정 선택: 도장 4. 추가 공정 필요 여부 확인 → "연마" 공정 추가 필요 5. 재작업 라우팅 생성: 35. 연마 (추가, REWORK) 30. 도장 (재작업, 회차=1) 40. 조립 (재작업, 회차=1) 50. 검사 (재작업, 회차=1) ``` **데이터 저장:** ```sql -- 연마 공정 추가 INSERT INTO WorkOrderProcess VALUES ( 'WO-2025-001', 35, 'P100', -- 연마 'REWORK', 'N', '내부', NULL, '대기', 1, -- rework_count 30, -- original_seq (도장의 원래 순번) '도장 불량으로 인한 연마 작업 필요', '이영희', NOW() ); -- 도장 재작업 UPDATE WorkOrderProcess SET status = '대기', rework_count = rework_count + 1, original_seq = 30 WHERE wo_no = 'WO-2025-001' AND seq_no = 30; ``` --- ### 시나리오 4: 순서 변경 가능한 공정 **상황:** ``` 품목: 스틸 브라켓 기본 라우팅: 재단 → 가공 → 도장 → 조립 특징: 가공과 도장은 순서 변경 가능 (is_fixed_order = N) ``` **해결방법:** ``` 작업지시 생성 시: - 도장을 먼저 하고 싶음 - 순서 변경: 10. 재단 20. 도장 ← 순서 변경 30. 가공 ← 순서 변경 40. 조립 시스템 체크: - 재단(is_fixed_order=Y) → 순서 변경 불가 - 도장(is_fixed_order=N) → 순서 변경 가능 ✓ - 가공(is_fixed_order=N) → 순서 변경 가능 ✓ - 조립(is_fixed_order=Y) → 순서 변경 불가 ``` --- ### 시나리오 5: 공정 배제 **상황:** ``` 품목: 플라스틱 케이스 기본 라우팅: 사출 → 연마 → 도장 → 검사 특징: 연마(is_required=N), 도장(is_required=N) ``` **해결방법:** ``` 작업지시 생성 시: - "연마" 공정 제외 (고객 요청으로 불필요) - "도장" 공정 포함 (필요) 최종 라우팅: 10. 사출 30. 도장 (연마 제외) 40. 검사 시스템 체크: - 연마(is_required=N) → 제외 가능 ✓ - 도장(is_required=N) → 제외 가능하지만 포함하기로 결정 ``` --- ### 시나리오 6: 내부/외주 선택 **상황:** ``` 품목: 알루미늄 프레임 공정: 가공 (work_type = '선택가능') 가능 외주업체: [A업체, B업체, C업체] ``` **해결방법:** ``` 작업지시 생성 시: 1. 가공 공정에서 작업구분 선택 - 내부 선택 → 자체 설비로 작업 - 외주 선택 → 외주업체 목록 표시 * A업체 (리드타임 3일, 단가 10,000원) * B업체 (리드타임 5일, 단가 8,000원) * C업체 (리드타임 2일, 단가 12,000원) 2. B업체 선택 3. 저장 최종 데이터: - work_type: '외주' - vendor_code: 'V002' (B업체) ``` --- ## 구현 화면 ### 1. 공정 마스터 관리 (공정관리.html) **경로:** `화면개발/공정관리.html` **기능:** - 공정 등록/수정/삭제 - 공정코드, 공정명, 공정유형 관리 - 표준작업시간, 사용설비, 작업인원수 설정 - 검색 및 필터링 **샘플 데이터:** - P001: 재단 (내부) - P002: 가공 (선택가능) - P003: 도장 (외주) - P004: 조립 (내부) - P005: 검사 (내부) --- ### 2. 품목별 라우팅 관리 (품목라우팅관리.html) **경로:** `화면개발/품목라우팅관리.html` **기능:** - 품목 선택 후 라우팅 설정 - 다중 라우팅 버전 관리 (v1, v2, ...) - 기본 라우팅 설정 - 공정별 상세 설정: - 순번 (10, 20, 30... 중간 삽입 가능) - 필수여부 (공정 배제 가능) - 순서고정여부 (순서 변경 가능 여부) - 작업구분 (내부/외주/선택가능) - 외주업체 다중 선택 - 표준작업시간 - 공정 추가/삭제 - 드래그 앤 드롭 (준비) **화면 구성:** ``` ┌─────────────────────────────────────────────┐ │ [왼쪽: 품목 목록] [오른쪽: 라우팅 관리] │ │ │ │ 📦 품목 목록 품목: 알루미늄 프레임 │ │ ┌──────────┐ 라우팅: ⭐v1 기본 v2 대체 │ │ │ITEM001 │ ┌─────────────────────┐ │ │ │알루미늄 │ │ 공정 순서 │ │ │ │프레임 │ │ ✓ 10 재단 필수 고정 │ │ │ └──────────┘ │ ✓ 20 가공 필수 변경 │ │ │ ITEM002 │ 30 도장 선택 변경 │ │ │ 스틸 브라켓 │ ✓ 40 조립 필수 고정 │ │ │ │ ✓ 50 검사 필수 고정 │ │ │ └─────────────────────┘ │ └─────────────────────────────────────────────┘ ``` --- ### 3. 작업지시 관리 (추후 구현 예정) **경로:** `화면개발/작업지시관리.html` **기능:** - 작업지시 생성 시 기본 라우팅 로드 - 라우팅 편집 (공정 추가/삭제/순서변경) - 외주업체 선택 - 작업 진행 중 긴급 공정 추가 - 공정별 시작/완료 처리 - 재작업 처리 - 공정 변경 이력 조회 **화면 구성:** ``` [작업지시 정보] 작업지시번호: WO-2025-001 품목: 알루미늄 프레임 수량: 100개 [공정 진행 현황] ┌──┬────────┬──────┬──────┬──────┬────────┐ │선택│순번 │공정명 │상태 │작업구분│관리 │ ├──┼────────┼──────┼──────┼──────┼────────┤ │□ │10 │재단 │완료 │내부 │ │ ├──┼────────┼──────┼──────┼──────┼────────┤ │□ │20 │가공 │완료 │내부 │ │ ├──┼────────┼──────┼──────┼──────┼────────┤ │□ │30 │조립 │진행중│내부 │일시중지│ ├──┼────────┼──────┼──────┼──────┼────────┤ │□ │40 │검사 │대기 │내부 │ │ └──┴────────┴──────┴──────┴──────┴────────┘ [긴급 공정 추가] [선택 삭제] [재작업] [변경이력] ``` --- ## 핵심 원칙 ### 1. 기본 라우팅 = 템플릿 - 기본 라우팅은 템플릿 역할 - 작업지시 생성 시 복사해서 사용 - 원본은 보존되어야 함 ### 2. 작업지시별 독립적인 공정 목록 - 각 작업지시는 자체 공정 목록을 보유 - 실시간 추가/수정/삭제 가능 - 기본 라우팅과 독립적 ### 3. 유연한 순번 체계 - 순번을 10단위로 관리 (10, 20, 30, 40...) - 중간 공정 추가 가능 (15, 25, 35...) - 순서 변경 시 재번호 부여 ### 4. 변경 이력 철저히 기록 - 누가(who), 언제(when), 왜(why) 추가/변경했는지 - 추적 가능성(traceability) 확보 - 감사(audit) 대응 ### 5. 공정 유형 명확히 구분 - **STANDARD**: 기본 라우팅에서 온 표준 공정 - **ADDED**: 작업지시 생성 시 또는 진행 중 추가된 공정 - **REWORK**: 재작업 공정 ### 6. 권한 관리 - **작업자**: 공정 시작/완료만 가능 - **반장/조장**: 긴급 공정 추가 가능 - **관리자**: 모든 공정 변경 가능 - **승인 프로세스**: 필요시 구현 ### 7. 실시간성과 추적성의 균형 - 현장의 유연성 확보 (실시간 공정 추가) - 변경 사유 및 이력 필수 기록 (추적성) --- ## 데이터 흐름 ``` [공정 마스터 등록] ↓ [품목별 라우팅 설정] (기본 라우팅) ↓ [작업지시 생성] → 기본 라우팅 복사 ↓ [라우팅 편집] (선택사항) - 공정 추가/삭제 - 순서 변경 - 외주업체 선택 ↓ [작업지시별 라우팅 확정] ↓ [작업 진행] - 공정별 시작/완료 - 긴급 공정 추가 (필요시) - 재작업 (필요시) ↓ [완료] ``` --- ## 구현 우선순위 ### Phase 1: 기본 마스터 관리 - [x] 공정 마스터 관리 화면 - [x] 품목별 라우팅 관리 화면 - [ ] 외주업체 마스터 관리 ### Phase 2: 작업지시 관리 - [ ] 작업지시 생성 화면 - [ ] 기본 라우팅 로드 및 편집 - [ ] 작업지시별 공정 저장 ### Phase 3: 현장 작업 관리 - [ ] 작업 진행 현황 화면 - [ ] 공정별 시작/완료 처리 - [ ] 긴급 공정 추가 기능 - [ ] 재작업 처리 ### Phase 4: 이력 및 분석 - [ ] 공정 변경 이력 조회 - [ ] 공정별 작업시간 분석 - [ ] 외주 실적 분석 --- ## 참고사항 ### 외주 관리 고려사항 - 외주 발주서 자동 생성 - 외주 일정 관리 - 외주 입고 처리 - 외주 비용 관리 ### BOM 연계 - 공정별 소요 자재/부품 - 자재 투입 시점 - 재고 차감 ### 품질 관리 연계 - 공정별 검사 기준 - 불량 유형 관리 - 재작업 사유 분석 ### 원가 관리 연계 - 공정별 원가 집계 - 내부 공정: 인건비 + 설비비 - 외주 공정: 외주비 --- ## 작성 정보 - **작성일**: 2025-01-XX - **작성자**: AI Assistant - **버전**: 1.0 - **목적**: 공정 관리 시스템 구현을 위한 설계 문서 - **적용 범위**: 제조업 ERP 시스템 --- ## 추후 개선 방향 1. **AI 기반 라우팅 추천** - 과거 작업 이력 분석 - 최적 라우팅 자동 제안 2. **실시간 공정 모니터링** - 각 공정별 진행률 실시간 표시 - 지연 공정 알림 3. **모바일 앱 연동** - 현장 작업자용 모바일 앱 - QR 코드 스캔으로 공정 시작/완료 4. **IoT 센서 연동** - 설비 가동률 실시간 수집 - 자동 작업시간 기록 5. **예측 유지보수** - 설비 고장 예측 - 공정 지연 사전 감지