Skip to main content

품질시험

이 기능은 무엇인가요?​

품질시험 기능은 화장품 원료·반제품·완제품에 대한 이화학·미생물·중금속 시험을 수행하고, 안정성시험으로 사용기한을 설정하며, OOS(Out-of-Specification) 발생 시 체계적 조사를 진행하는 기능입니다.

이 기능은 ISO 22716 제10장(품질관리시험실) 및 ICH Q1A(R2) 안정성시험 가이드라인 요구사항을 충족합니다.

업무 프로세스 개요​

포함된 화면​

화면용도주 사용자
품질시험 관리원료·반제품·완제품 시험기록 관리품질시험팀
안정성시험 관리가속/장기보존/가혹 안정성시험 관리품질시험팀
보관검체 관리원료·완제품 보관검체 이력 관리품질시험팀
OOS 조사 관리OOS Phase I/II 조사·배치처분 관리QA팀
연간 제품 품질 검토(APR)연간 제품별 품질 데이터 종합 검토QA팀
안정성 시험 시점 데이터ICH Q1A 시점별 시험결과 기록품질시험팀

관련 솔루션 연계​

솔루션연계 내용데이터 흐름
CGMP 제조공정BMR → 품질시험·안정성시험BMR → 시험
CGMP 원료관리원료규격 → 품질시험원료규격 → 시험
CGMP 일탈관리OOS → 일탈기록 연계OOS → 일탈
LIMSLIMS 시험의뢰·결과 연동LIMS ↔ CGMP

시작하기​

1단계: 시험 체계 설정​

  1. 제품별 시험항목(이화학, 미생물, 중금속)과 규격을 설정합니다
  2. 안정성시험 프로토콜을 작성합니다 (가속/장기보존 조건, 시점)

2단계: 시험 수행​

  1. BMR 또는 원료 입고에 따라 품질시험을 실시합니다
  2. OOS 발생 시 Phase I → Phase II 조사를 진행합니다
  3. 보관검체를 등록하고 만료일을 관리합니다
참고: 데이터 구조

관련 워크플로우​

  • QC 결과 검토 (humanTask): -
  • OOS 검출 (startEvent): -
  • Phase I: 실험실 조사 (humanTask): 실험실 오류 확인: 계산/시약/장비/절차/환경 점검
  • 재시험 실행 (humanTask): 명확한 실험실 오류 확인 시 재시험
  • Phase II: 풀조사 (humanTask): 공정/원료/환경/설비 전면 조사
  • 근본원인 분석 (humanTask): 5-Why, Fishbone 등 근본원인 분석
  • 배치 처분 결정 (humanTask): QA 관리자가 배치 처분 결정 (출하/보류/폐기/재가공)
  • 종결 승인 (approval): QA 관리자 OOS 조사 종결 승인
  • 만료 임박 검체 스캔 (autoTask): 보관기한 30일 이내 검체 자동 스캔
  • QA 검토/처분 결정 (humanTask): QA 검토: 추가시험 사용 또는 폐기 결정

테이블 요약​

품질시험기록 (quality_test_records)​

컬럼명한글명타입설명
test_code시험코드VARCHAR *필수 *고유-
bmr_idBMRUUID (FK)-
spec_id원료규격UUID (FK)-
test_stage시험단계ENUM(원료, 반제품, 완제품, 안정성, 환경) *필수-
test_category시험구분ENUM(이화학, 미생물, 중금속, 포장, 종합) *필수-
sample_description검체설명VARCHAR *필수-
batch_number배치번호VARCHAR-
material_lot원료LOTVARCHAR-
test_date시험일DATE *필수-
test_items시험항목(레거시)JSONB[{item, method, unit, spec_lower, spec_upper, result, judgment}] -- 개별 레코드는 quality_test_items 테이블 참조
microbial_results미생물결과JSONB{total_aerobic, yeast_mold, ecoli, pseudomonas, staphylococcus}
heavy_metal_results중금속결과JSONB{pb, as, hg, cd, sb} (ug/g)
overall_judgment종합판정ENUM(적합, 부적합, 시험중, 재시험, 보류) *필수-
oos_investigationOOS조사BOOLEAN *필수-
oos_resultOOS조사결과TEXT-
analyst_id시험자UUID (시스템참조) *필수-
reviewer_id검토자UUID (시스템참조)-
review_date검토일DATE-
lims_request_idLIMS의뢰IDUUID (FK)LIMS 시험의뢰 크로스솔루션
lims_test_result_idLIMS시험결과IDUUID (FK)LIMS lims_test_results 크로스솔루션 참조 (nullable)
retention_sample보관검체여부BOOLEAN *필수-
retention_qty보관검체수량INT-
retention_location보관검체위치VARCHAR-
certificate_issued성적서발행BOOLEAN *필수-
certificate_file_url성적서파일FILE-
remark비고TEXT-

안정성시험 (stability_tests)​

컬럼명한글명타입설명
test_code시험코드VARCHAR *필수 *고유-
bmr_idBMRUUID (FK)-
test_record_id초기시험UUID (FK)-
product_name제품명VARCHAR *필수-
product_code제품코드VARCHAR-
batch_number배치번호VARCHAR *필수-
test_type시험유형ENUM(가속시험, 장기보존, 가혹시험, 광안정성시험) *필수-
storage_condition보관조건VARCHAR *필수예: 25±2℃/60±5%RH
container_type용기유형VARCHAR-
test_intervals시험시점(월)JSONB *필수[0, 1, 2, 3, 6, 9, 12, 18, 24, 36]
test_items_list시험항목목록JSONB *필수["pH","점도","외관","색상","미생물"]
current_timepoint현재시점VARCHAR-
results_by_timepoint시점별결과JSONB{"0":{items}, "3":{items}, ...}
trend_status추세상태ENUM(안정, 경향성, 이탈) *필수-
trend_analysis추세분석TEXT-
shelf_life_conclusion사용기한결론VARCHAR예: 36개월
start_date시작일DATE *필수-
expected_end_date예정종료일DATE-
actual_end_date실제종료일DATE-
next_test_date차기시험일DATE-
manager_id담당자UUID (시스템참조) *필수-
protocol_file_url프로토콜파일FILE-
report_file_url보고서파일FILE-
status상태ENUM(계획, 진행중, 완료, 중단, OOS조사) *필수-
remark비고TEXT-

보관검체 (retained_samples)​

컬럼명한글명타입설명
sample_code보관검체코드VARCHAR *필수 *고유-
sample_type검체유형ENUM(원료보관검체, 완제품보관검체) *필수-
bmr_id관련BMRUUID (FK)-
material_id관련원료UUID (FK)-
product_name제품명/원료명VARCHAR *필수-
batch_number배치번호VARCHAR *필수-
sample_qty보관수량DECIMAL *필수-
sample_unit단위VARCHAR-
storage_location보관위치VARCHAR *필수-
storage_condition보관조건ENUM(실온, 냉장, 냉동, 차광) *필수-
retention_start보관시작일DATE *필수-
retention_end보관만료일DATE *필수-
status상태ENUM(보관중, 시험사용, 폐기, 기한만료) *필수-
used_for_test시험사용여부BOOLEAN-
used_date사용일자DATE-
disposal_date폐기일자DATE-
disposal_method폐기방법VARCHAR-
wms_location_idWMS 보관위치UUID (FK)WMS locations 크로스솔루션 참조 (nullable)
custodian_id관리자UUID (시스템참조)-
remark비고VARCHAR-

OOS 조사 (cgmp_oos_investigations)​

컬럼명한글명타입설명
oos_codeOOS코드VARCHAR *필수 *고유-
test_id원시험UUID (FK)-
oos_categoryOOS 단계ENUM(Phase_I_Lab, Phase_II_Full, Phase_III_Extended) *필수-
product_name제품명VARCHAR *필수-
batch_number배치번호VARCHAR *필수-
test_parameter이탈시험항목VARCHAR *필수-
spec_value규격값VARCHAR *필수-
observed_value관측값VARCHAR *필수-
oos_dateOOS 발생일DATE *필수-
phase1_checklistPhase I 체크리스트JSON-
phase1_conclusionPhase I 결론ENUM(실험실오류확인, OOS확정, 불확실)-
phase2_investigationPhase II 조사내용VARCHAR-
retest_count재시험횟수INT-
retest_results재시험결과JSON-
root_cause근본원인VARCHAR-
batch_disposition배치처분ENUM(출하, 보류, 폐기, 재가공)-
deviation_id관련일탈UUID (FK)-
lims_oos_idLIMS OOS IDUUID (FK)LIMS lims_oos_investigations 크로스솔루션 참조 (nullable)
investigator_id조사자UUID (시스템참조)-
qa_reviewer_idQA검토자UUID (시스템참조)-
status상태ENUM(개시, Phase_I, Phase_II, 결론, CAPA, 종결) *필수-
timeline_days경과일수INT-
due_date조사기한DATE-

연간 제품 품질 검토(APR) (cgmp_annual_product_reviews)​

컬럼명한글명타입설명
apr_codeAPR코드VARCHAR *필수 *고유-
product_name제품명VARCHAR *필수-
product_code제품코드VARCHAR-
review_year검토연도INT *필수-
review_period_start검토기간시작DATE *필수-
review_period_end검토기간종료DATE *필수-
batch_count배치수INT *필수-
pass_rate합격률(%)DECIMAL-
deviation_count일탈건수INT-
capa_countCAPA건수INT-
oos_countOOS건수INT-
complaint_count불만건수INT-
recall_count회수건수INT-
change_control_count변경관리건수INT-
stability_results_summary안정성결과요약TEXT-
process_trend_summary공정추세요약TEXT-
raw_material_review원료변경검토TEXT-
supplier_audit_summary공급업체감사요약TEXT-
validation_status밸리데이션현황TEXT-
conclusion종합결론TEXT-
recommendations권고사항TEXT-
reviewer_id검토자UUID (시스템참조)-
approver_id승인자UUID (시스템참조)-
review_date검토일DATE-
approval_date승인일DATE-
report_file보고서FILE-
status상태ENUM(계획, 작성중, 검토중, 승인완료) *필수-

안정성 시험 시점 데이터 (cgmp_stability_time_points)​

컬럼명한글명타입설명
time_point_code시점코드VARCHAR *필수 *고유-
stability_study_id안정성시험UUID (FK) *필수-
time_point_months시점(개월)INT *필수ICH Q1A(R2): 0, 3, 6, 9, 12, 18, 24, 36 등
test_date시험일DATE *필수-
storage_condition보관조건ENUM(25℃/60%RH(장기), 30℃/65%RH(중간), 40℃/75%RH(가속), 25℃/40%RH(건조), 5℃±3℃(냉장)) *필수-
results_json시험결과JSON[{항목명, 시험방법, 결과값, 단위, 규격, 판정}]
meets_spec규격적합BOOLEAN *필수-
out_of_trendOOT여부BOOLEANOut Of Trend 여부
out_of_specOOS여부BOOLEAN-
appearance외관VARCHAR-
ph_valuepHDECIMAL-
viscosity점도DECIMAL-
assay_value함량(%)DECIMAL-
microbial_result미생물결과JSON-
analyst_id시험자UUID (시스템참조)-
reviewer_id검토자UUID (시스템참조)-
remark비고VARCHAR-

업무 자동화​

안내

화면에서 데이터를 저장하면 시스템이 관련된 다른 화면의 데이터를 자동으로 갱신합니다.

🔢 자동 계산​

  • 시험항목 판정 입력 → 종합판정 자동 산출: 개별 시험항목 판정을 입력하면 종합판정이 자동으로 계산됩니다 (하나라도 부적합이면 부적합).
  • 안정성 데이터 입력 → 추세 자동 분석: 안정성시험 시점 데이터를 입력하면 이탈/경향성 여부가 자동으로 판정됩니다 (ICH Q1A 기준).

➡️ 자동 처리​

  • 시험 적합 → 배치 출하승인 자동 진행: 품질시험이 적합으로 판정되면 해당 배치가 자동으로 출하승인 단계로 진행됩니다.
  • 시험 부적합 → 배치 즉시 출하보류: 품질시험 부적합 시 해당 배치가 즉시 출하보류됩니다.

🚫 제약 조건​

차단되는 동작사유해결 방법
시험 부적합 시 일탈보고 없이 진행 불가FDA 21 CFR 211.192에 따라 규격 미달 결과는 반드시 일탈로 보고해야 합니다부적합 판정 시 일탈보고서가 자동 생성되므로 조사를 진행하세요