risk_assessment 스키마
현장 단위 위험성 평가 문서와 그 하위 항목(items)의 전체 스키마. 각 엔드포인트 문서에서 참조용으로 사용합니다.
저장 위치
companies/{company_id}/sites/{site_id}/risk_assessment/{risk_assessment_id}
companies/{company_id}/sites/{site_id}/risk_assessment/{risk_assessment_id}/items/{risk_assessment_item_id}
- 문서 1건 = 평가 회차/양식 (예: "2026년 정기 평가")
- 문서의 하위
items서브컬렉션에 실제 위험요인 항목들이 저장됩니다.
평가 방식 (evaluation_type)
문서 생성 시 결정되며 이후 변경 불가. 방식에 따라 items의 필드 구성이 달라집니다.
| evaluation_type | 설명 | items 추가 함수 |
|---|---|---|
3단계판별 |
위험도/빈도 없이 등급만 부여 | _add_3_level_risk_assessment |
빈도강도3 |
frequency(1~3) × intensity(1~3) → risk_score | _add_frequency_intensity_risk_assessment |
빈도강도5 |
frequency(1~5) × intensity(1~5) → risk_score | _add_frequency_intensity_risk_assessment |
평가 방식에 맞지 않는 항목 추가/수정 시 SAFETY_007 에러 발생.
문서 필드 (risk_assessment)
| 필드 | 타입 | 설명 |
|---|---|---|
title |
string | 평가 문서 제목 (수정 가능) |
assessment_type |
string | "정기" | "수시" | "최초" (수정 가능) |
evaluation_type |
string | "3단계판별" | "빈도강도3" | "빈도강도5" (불변) |
created_at |
timestamp | 문서 생성 시각 |
created_by |
string | 작성자 UID |
created_by_name |
string | 작성자 당시 이름 |
items 서브컬렉션 공통 필드
3단계판별 / 빈도강도 항목 모두 아래 기본 필드를 가집니다.
| 필드 | 타입 | 설명 |
|---|---|---|
work_type |
string | 공종 대분류 |
detail_work_type |
string | 세부 공종 |
unit_work_name |
string | 단위 작업명 |
work_step_name |
string | 작업 단계명 |
work_location |
string | 작업 장소 |
risk_grade |
string | 위험 등급 라벨 |
disaster_type |
string | 재해 유형 |
risk_factor |
string | 유해위험요인 |
prevention_measure |
string | 예방 대책 |
responsible |
string | 책임자 |
created_at |
timestamp | 항목 생성 시각 (추가 시만 기록) |
created_by |
string | 항목 작성자 UID (추가 시만 기록) |
created_by_name |
string | 항목 작성자 당시 이름 (추가 시만 기록) |
items 필드 (3단계판별 전용)
evaluation_type == "3단계판별"일 때 items 문서의 필드 = 공통 필드만 사용 (frequency/intensity/risk_score 없음).
items 필드 (빈도강도3 / 빈도강도5 전용)
| 필드 | 타입 | 설명 |
|---|---|---|
frequency |
int | 발생 빈도 (빈도강도3: 1~3 / 빈도강도5: 1~5) |
intensity |
int | 강도 (빈도강도3: 1~3 / 빈도강도5: 1~5) |
risk_score |
int | 자동 계산값 = frequency * intensity |
evaluation_type |
string | 항목 저장 시 부모 문서의 평가 방식 복제 저장 |
범위를 벗어난 frequency/intensity 값은 저장 시 거절됩니다.
삭제 규칙
- 문서(risk_assessment) 삭제 시
_delete_risk_assessment_document호출 → 현재 로직은 문서만 삭제 (items 하위 정리는 호출자 책임). - 항목(items) 단건 삭제는
_delete_risk_assessment_item.
권한
모든 위험성 평가 관련 작업은 get_user_type 결과가 "company" (회사 관리자)여야 합니다. 근로자/장비는 접근 불가.
예시 문서 (빈도강도5 + items 1개)
// companies/{cid}/sites/{sid}/risk_assessment/{id}
{
"title": "2026년 정기 위험성 평가",
"assessment_type": "정기",
"evaluation_type": "빈도강도5",
"created_at": "2026-04-01T09:00:00Z",
"created_by": "uid_admin",
"created_by_name": "김관리자"
}
// 하위 items/{item_id}
{
"work_type": "철근콘크리트공사",
"detail_work_type": "거푸집",
"unit_work_name": "거푸집 해체",
"work_step_name": "고소작업",
"work_location": "B동 5층",
"frequency": 3,
"intensity": 4,
"risk_score": 12,
"risk_grade": "상",
"disaster_type": "추락",
"risk_factor": "안전대 미착용 상태 작업",
"prevention_measure": "안전대 부착 설비 설치 및 착용 교육",
"responsible": "현장소장",
"evaluation_type": "빈도강도5",
"created_at": "2026-04-01T09:10:00Z",
"created_by": "uid_admin",
"created_by_name": "김관리자"
}