safety 영역 DB 스키마
안전 관리 영역의 Firestore 컬렉션 스키마 모음. 위험성 평가, TBM, 작업 중지권, 제안/개선, 비상 알림 등.
컬렉션 맵
companies/{company_id}/sites/{site_id}/
├─ suspension_works/{id} # 작업 중지권 (공지/승인/해제/보고 스테이지)
├─ tasks/{tid}/details/risk_assessment # 일일 위험성 평가 (작업별)
├─ tbm/{YYYYMMDD} # 일일 TBM (안전교육 참여 기록)
├─ suggestions/{id} # 안전 제안/개선 건
├─ safety_agreement/{uid} # 안전서약서 서명 상태
├─ emergency_contact/{contact_id} # 비상 연락처
└─ emergency_alerts/{alert_id} # 비상 알림 (현장 내 긴급 알림 전송)
문서 목록
| 컬렉션 | 스키마 문서 | 설명 |
|---|---|---|
suspension_works/{id} |
suspension_work.md | 작업 중지권 전체 흐름 (pending → suspended → ended, rejected) |
tasks/{tid}/details/risk_assessment |
risk_assessment.md | 일일 위험성 평가 (AI 자동 생성 지원) |
tbm/{YYYYMMDD} |
tbm.md | 일일 TBM 기록 (출근자 명단/주제/서명) |
suggestions/{id} |
suggestion.md | 안전 제안 (접수/검토/채택/반려) |
safety_agreement/{uid} |
safety_agreement.md | 현장 진입 전 안전서약서 서명 상태 |
emergency_contact/{id} |
emergency_contact.md | 현장별 비상 연락처 |
emergency_alerts/{id} |
emergency_alert.md | 비상 알림 발송 이력 |
공통 패턴
첨부파일 연결
안전 문서들은 대부분 파일 첨부를 활용합니다. files 컬렉션의 tags.type으로 스테이지를 구분:
- 작업 중지 통지서:
tags.type=notice - 작업 중지 해제 증빙:
tags.type=end - 조치 완료 보고서:
tags.type=report - 제안/개선 첨부:
related_doc_id == suggestion_id
Actor 서브오브젝트
작업 중지권/제안 등에서 행위자 정보는 공통 Actor 구조를 사용:
상세는 suspension_work.md 참조.
다른 영역과의 관계
- site: 모든 안전 문서는 현장 하위 컬렉션. 위험성 평가는
tasks/{tid}/details에 저장되어 작업 관리와 연결. - system (notifications, files): 작업 중지/비상 알림 발송 시 사용자 알림 전송 + 파일 첨부 공통 메타 사용.
- common (users/membership): 안전서약서, TBM 서명 등은 현장 멤버(
worker) 기준으로 기록.