불만/회수/자체점검
이 기능은 무엇인가요?
불만/회수/자체점검 기능은 소비자 불만을 체계적으로 처리(접수→조사→회신→예방조치)하고, 제품 결함 시 회수(리콜) 프로세스를 관리하며, GMP 자체점검으로 제조 시설의 적합성을 검증하는 기능입니다.
이 기능은 ISO 22716 제14장(불만 및 회수), 제16장(내부감사) 및 화장품법 시행규칙 제12조(회수) 요구사항을 충족합니다.
업무 프로세스 개요
포함된 화면
| 화면 | 용도 | 주 사용자 |
|---|---|---|
| 불만처리 관리 | 소비자 불만 접수·조사·회신 관리 | QA팀 |
| 제품회수 관리 | 제품 회수 계획·실행·회수율 관리 | QA팀, 경영진 |
| 자체점검 관리 | GMP 자체점검 계획·실행·지적사항 관리 | QA팀 |
| 세척밸리데이션 | 설비 세척 후 잔류물 허용 기준 검증 | QA팀 |
| CGMP 감사 관리 | 자체점검 전표 상세 관리 | QA팀 |
관련 솔루션 연계
| 솔루션 | 연계 내용 | 데이터 흐름 |
|---|---|---|
| CGMP 일탈관리 | 불만/감사 → 일탈기록 연계 | 불만 → 일탈 |
| CGMP 밸리데이션 | 밸리데이션 → 세척밸리데이션 | 밸리데이션 → 세척 |
| QMS | 자체점검 → QMS 감사계획 연동 | CGMP → QMS |
시작하기
1단계: 불만 처리 체계 수립
- 불만 접수 경로(소비자/판매처/SNS/정부기관)와 분류 체계를 설정합니다
- 조사·회신 프로세스와 기한을 정의합니다
2단계: 자체점검 계획 수립
- 연간 자체점검 계획을 수립합니다 (정기/수시)
- 감사 영역별 체크리스트를 준비합니다
참고: 데이터 구조
관련 워크플로우
- 현장 감사 (humanTask): GMP 현장감사 (위생/설비/공정/문서)
- 감사보고서 작성 (humanTask): 감사결과 보고서 작성 및 지적사항 정리
- 개선 요구/확인 (humanTask): 조건부 승인 시 개선요구 및 확인
- 불만 접수/등록 (humanTask): 불만 접수 및 초기 정보 등록 (접수경로/불만유형/제품/시료)
- 시료 시험 (humanTask): 접수 시료에 대한 품질시험 실시 및 결과 기록
- 불만 조사 (humanTask): 불만 원인 조사: 제조기록/시험기록 확인, 유사사례 검토
- 회수 프로세스 개시 (autoTask): 제품회수 워크플로우 자동 트리거
- 고객 회신 (humanTask): 조사결과 기반 고객 회신 (전화/이메일/서면/방문)
- 예방조치 수립 (humanTask): 재발 방지를 위한 예방조치 수립 및 기록
- 종결 승인 (approval): QA 관리자 불만처리 종결 승인
테이블 요약
불만처리 (complaint_records)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|---|---|---|
complaint_code | 불만코드 | VARCHAR *필수 *고유 | - |
received_date | 접수일 | DATE *필수 | - |
complaint_source | 접수경로 | ENUM(소비자, 판매처, SNS, 정부기관, 내부) *필수 | - |
complaint_category | 불만유형 | ENUM(변색, 변취, 이물, 자극, 효능불만, 포장불량, 표시오류, 기타) *필수 | - |
product_name | 제품명 | VARCHAR *필수 | - |
batch_number | 배치번호 | VARCHAR | - |
lot_number | LOT번호 | VARCHAR | - |
complaint_detail | 불만내용 | TEXT *필수 | - |
sample_received | 시료접수여부 | BOOLEAN *필수 | - |
sample_condition | 시료상태 | TEXT | - |
investigation_result | 조사결과 | TEXT | - |
investigation_date | 조사일 | DATE | - |
is_product_defect | 제품결함여부 | BOOLEAN | - |
response_content | 회신내용 | TEXT | - |
response_date | 회신일 | DATE | - |
response_method | 회신방법 | ENUM(전화, 이메일, 서면, 방문) | - |
compensation_type | 보상유형 | ENUM(해당없음, 교환, 환불, 기타) | - |
handler_id | 처리자 | UUID (시스템참조) *필수 | - |
deviation_id | 일탈기록 | UUID (FK) | - |
preventive_action | 예방조치 | TEXT | - |
attachment | 첨부파일 | FILE | - |
status | 상태 | ENUM(접수, 조사중, 조사완료, 회신, 종결) *필수 | - |
metadata | 확장데이터 | JSONB | - |
제품회수 (product_recalls)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|---|---|---|
recall_code | 회수코드 | VARCHAR *필수 *고유 | - |
deviation_id | 일탈기록 | UUID (FK) | - |
complaint_id | 불만기록 | UUID (FK) | - |
recall_class | 회수등급 | ENUM(Class_I, Class_II, Class_III) *필수 | - |
recall_reason | 회수사유 | TEXT *필수 | - |
product_name | 제품명 | VARCHAR *필수 | - |
batch_numbers | 배치번호목록 | JSONB *필수 | 회수 대상 배치 목록 |
affected_quantity | 영향수량 | DECIMAL *필수 | - |
distribution_scope | 유통범위 | TEXT *필수 | - |
distribution_channels | 유통채널 | JSONB | [{channel, region, quantity}] |
recall_initiated_date | 회수개시일 | DATE *필수 | - |
recall_deadline | 회수기한 | DATE *필수 | - |
recovered_quantity | 회수수량 | DECIMAL | - |
recovery_rate | 회수율(%) | DECIMAL (계산) | - |
disposal_method | 처리방법 | ENUM(반품, 폐기, 재작업) | - |
disposal_date | 처리일 | DATE | - |
regulatory_notification_date | 규제기관통보일 | DATE | - |
regulatory_report_number | 규제보고번호 | VARCHAR | - |
root_cause | 근본원인 | TEXT | - |
preventive_action | 예방조치 | TEXT | - |
manager_id | 담당자 | UUID (시스템참조) *필수 | - |
attachment | 첨부파일 | FILE | - |
status | 상태 | ENUM(개시, 진행중, 완료, 종결) *필수 | - |
metadata | 확장데이터 | JSONB | - |
자체점검 (cgmp_audits)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|---|---|---|
audit_code | 감사코드 | VARCHAR *필수 *고유 | - |
audit_type | 감사유형 | ENUM(정기자체점검, 수시자체점검, CGMP인증심사, 거래처감사) *필수 | - |
audit_title | 감사제목 | VARCHAR *필수 | - |
audit_year | 감사연도 | INT *필수 | - |
audit_date | 감사시작일 | DATE *필수 | - |
audit_end_date | 감사종료일 | DATE | - |
audit_scope | 감사범위 | TEXT *필수 | - |
audit_areas | 감사영역 | JSONB *필수 | [{area, checklist_items:[{item,result,remark}]}] |
auditee_department_id | 피심사부서 | UUID (시스템참조) | - |
lead_auditor_id | 수석심사원 | UUID (시스템참조) *필수 | - |
audit_team | 심사팀 | JSONB | [{name, role, department}] |
finding_count | 지적건수 | INT *필수 | - |
critical_count | Critical건수 | INT *필수 | - |
major_count | Major건수 | INT *필수 | - |
minor_count | Minor건수 | INT *필수 | - |
findings_detail | 지적상세 | JSONB | [{no, area, severity, finding, evidence, capa}] |
observations | 관찰사항 | TEXT | - |
overall_result | 종합결과 | ENUM(적합, 조건부적합, 부적합) | - |
corrective_actions_due | 시정조치기한 | DATE | - |
follow_up_audit_date | 추적감사일 | DATE | - |
executive_summary | 감사요약 | TEXT | - |
report_file | 보고서파일 | FILE | - |
qms_audit_plan_id | QMS감사계획ID | UUID (FK) | QMS audit_plans 크로스솔루션 참조 (nullable) |
status | 상태 | ENUM(계획, 진행중, 보고서작성, 완료, CAPA진행) *필수 | - |
metadata | 확장데이터 | JSONB | - |
세척밸리데이션 (cleaning_validations)
| 컬럼명 | 한글명 | 타입 | 설명 |
|---|---|---|---|
cv_code | 세척밸리데이션코드 | VARCHAR *필수 *고유 | - |
sop_id | 세척SOP | UUID (FK) | - |
validation_id | 밸리데이션 | UUID (FK) | - |
equipment_name | 설비명 | VARCHAR *필수 | - |
equipment_code | 설비코드 | VARCHAR *필수 | - |
cleaning_method | 세척방법 | ENUM(CIP, COP, 수작업) *필수 | - |
cleaning_agent | 세척제 | VARCHAR *필수 | - |
cleaning_procedure | 세척절차 | TEXT *필수 | - |
residue_type | 잔류물유형 | ENUM(유효성분, 세제, 미생물) *필수 | - |
target_substance | 대상물질 | VARCHAR *필수 | - |
acceptance_limit | 허용기준값 | DECIMAL *필수 | - |
acceptance_limit_unit | 기준단위 | VARCHAR *필수 | - |
maco_value | MACO값 | DECIMAL | Maximum Allowable Carryover (μg/cm² 또는 ppm) |
therapeutic_dose | 치료용량(mg) | DECIMAL | 활성물질 1일 최소 치료용량 |
safety_factor | 안전계수 | DECIMAL | MACO 계산 안전계수 (일반: 1/1000) |
shared_surface_area | 공유표면적(cm²) | DECIMAL | 공유 설비 총 접촉 표면적 |
calculation_method | MACO계산방법 | ENUM(dose_based, ppm_based, visual_limit, toxicological) | MACO 산출방법 |
sampling_method | 시료채취법 | ENUM(린스, 스왑, 직접) *필수 | - |
sampling_points | 채취지점 | JSONB *필수 | [{point_id, location, description, area_cm2}] |
test_method | 시험방법 | VARCHAR *필수 | - |
number_of_runs | 실행횟수 | INT *필수 | - |
test_results | 시험결과 | JSONB | [{run_no, date, points:[{point_id, value, unit, judgment}]}] |
worst_case_product |