이 기능은 무엇인가요?
리콜관리 기능은 제품 안전 문제 발생 시 리콜 캠페인을 체계적으로 수행하는 기능입니다. 영향 LOT를 자동 식별하고, 리콜 등급(Class I/II/III)에 따른 고객 통보와 회수를 실행하며, 효과성 검증으로 리콜의 적절성을 확인합니다.
이 기능은 FDA 21 CFR Part 7(리콜) 및 ISO 9001 8.7(부적합 출력의 관리) 요구사항을 충족합니다.
업무 프로세스 개요
포함된 화면
| 화면 | 용도 | 주 사용자 |
|---|
| 리콜캠페인 | 리콜 캠페인 생성 및 전체 관리 | 품질 책임자 |
| 리콜영향LOT | 영향받는 LOT 식별·회수 추적 | QA 엔지니어 |
| 리콜고객통보 | 고객 통보 이력 관리 | 영업 담당 |
| 리콜효과성검증 | 리콜 효과성 검증 (FDA Audit Check) | QA 매니저 |
관련 솔루션 연계
| 솔루션 | 연계 내용 | 데이터 흐름 |
|---|
| QMS 부적합/CAPA | 부적합 → 리콜 캠페인 | NCR → 리콜 |
| MES | LOT 추적 데이터 | MES → QMS |
시작하기
1단계: 리콜 캠페인 생성
- 리콜 유형(자발적/강제)과 등급(Class I/II/III)을 결정합니다
- 영향 품목과 기간을 설정하면 영향 LOT가 자동 식별됩니다
2단계: 회수 실행
- 고객에게 리콜 통보를 발송합니다
- 회수율을 모니터링하고 80% 미달 시 에스컬레이션합니다
- 회수품 처분(재작업/폐기/반품)을 결정합니다
참고: 데이터 구조
데이터 관계도
관련 워크플로우
- 리콜 캠페인 시작 (startEvent): -
- 영향 LOT 자동 식별 (autoTask): 리콜 대상 품목과 기간을 기반으로 영향받는 LOT를 자동 식별하고 recall_affected_lots 테이블에 생성합니다
- 위험성 평가 및 등급 결정 (humanTask): 리콜담당자가 인체 위해성, 법규 요구사항, 영향 범위를 평가하고 리콜 등급(Class I/II/III)을 결정합니다
- 고객 통보 자동 발송 (autoTask): 영향받는 고객에게 리콜 통보를 자동 발송하고 recall_customer_notifications에 이력을 저장합니다
- 추가 회수 조치 에스컬레이션 (humanTask): 회수율 80% 미달 시 추가 회수 전략을 수립하고 에스컬레이션 조치(2차 통보, 현장 방문 등)를 실행합니다
- 정상 진행 처리 (autoTask): 회수 율 80% 이상 달성 시 정상 진행 상태로 업데이트합니다
- 회수품 처분 결정 (humanTask): 회수된 제품에 대해 재작업, 폐기, 반품 중 처분 방법을 결정하고 실행합니다
- 효과성 검증 (humanTask): 리콜 시정조치의 효과성을 검증하고 재발 방지 대책의 적절성을 확인합니다
테이블 요약
리콜캠페인 (recall_campaigns)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|
recall_number | 리콜번호 | VARCHAR *필수 *고유 | - |
recall_type | 리콜유형 | ENUM(voluntary, mandatory, market_withdrawal, safety_alert) *필수 | - |
recall_class | 리콜등급 | ENUM(class_I, class_II, class_III) *필수 | FDA 기준 리콜 등급 |
item_id | 품목ID | UUID (FK) | 크로스템플릿: ERP items 참조 |
reason | 리콜사유 | TEXT *필수 | - |
hazard_description | 위험성설명 | TEXT | - |
affected_lot_count | 영향LOT수 | INT | - |
affected_qty | 영향수량 | DECIMAL | - |
recall_scope | 리콜범위 | ENUM(domestic, international, global) *필수 | - |
status | 상태 | ENUM(initiated, investigating, active, monitoring, closed) *필수 | - |
initiated_date | 개시일 | DATE *필수 | - |
target_completion_date | 목표완료일 | DATE | - |
actual_completion_date | 실제완료일 | DATE | - |
regulatory_report_required | 규제보고필요 | BOOLEAN | - |
regulatory_report_date | 규제보고일 | DATE | - |
root_cause | 근본원인 | TEXT | - |
corrective_action | 시정조치 | TEXT | - |
responsible_id | 담당자ID | UUID (시스템참조) | public.users 참조 |
department_id | 담당부서ID | UUID (시스템참조) | public.departments 참조 |
리콜영향LOT (recall_affected_lots)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|
campaign_id | 리콜캠페인ID | UUID (FK) *필수 | recall_campaigns 참조 |
lot_id | LOT ID | UUID (FK) | 크로스솔루션: MES lot_tracking 참조 (nullable) |
lot_number | LOT번호 | VARCHAR *필수 | - |
product_name | 제품명 | VARCHAR | - |
quantity | 수량 | DECIMAL | - |
location | 위치 | VARCHAR | - |
recovery_status | 회수상태 | ENUM(identified, notified, in_transit, recovered, disposed, unrecoverable) *필수 | - |
recovery_date | 회수일 | DATE | - |
recovery_qty | 회수수량 | DECIMAL | - |
disposition | 처분 | ENUM(rework, scrap, return_to_supplier, quarantine, release) | - |
disposition_date | 처분일 | DATE | - |
notes | 비고 | TEXT | - |
remaining_qty | 미회수수량 | DECIMAL (계산) | - |
recovery_rate_pct | 회수율(%) | DECIMAL (계산) | - |
리콜고객통보 (recall_customer_notifications)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|
campaign_id | 리콜캠페인ID | UUID (FK) *필수 | recall_campaigns 참조 |
customer_name | 고객명 | VARCHAR *필수 | - |
contact_email | 연락이메일 | VARCHAR | - |
contact_phone | 연락전화 | VARCHAR | - |
notification_method | 통보방법 | ENUM(email, phone, letter, in_person, press_release) *필수 | - |
notification_date | 통보일시 | TIMESTAMP | - |
notification_content | 통보내용 | TEXT | - |
response_status | 응답상태 | ENUM(pending, acknowledged, action_taken, no_response) *필수 | - |
response_date | 응답일시 | TIMESTAMP | - |
customer_feedback | 고객피드백 | TEXT | - |
lots_affected | 영향LOT목록 | JSONB | 해당 고객에게 출하된 LOT 목록 |
리콜효과성검증 (recall_effectiveness_checks)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|
campaign_id | 리콜캠페인ID | UUID (FK) *필수 | recall_campaigns 참조 |
check_date | 점검일 | DATE *필수 | - |
check_type | 점검유형 | ENUM(level_A, level_B, level_C) *필수 | FDA Recall Audit Checks 레벨 |
total_affected_customers | 총영향고객수 | INT | - |
customers_notified | 통보고객수 | INT | - |
customers_responded | 응답고객수 | INT | - |
total_affected_qty | 총영향수량 | DECIMAL | - |
recovered_qty | 회수수량 | DECIMAL | - |
recovery_rate_pct | 회수율(%) | DECIMAL (계산) | - |
notification_rate_pct | 통보율(%) | DECIMAL (계산) | - |
response_rate_pct | 응답율(%) | DECIMAL (계산) | - |
effectiveness_rating | 효과성판정 | ENUM(effective, partially_effective, ineffective) *필수 | - |
auditor_id | 심사자ID | UUID (시스템참조) | public.users 참조 |
findings | 발견사항 | TEXT | - |
follow_up_required | 후속조치필요 | BOOLEAN | - |
follow_up_actions | 후속조치내용 | TEXT | - |