콘텐츠로 이동

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 구조를 사용:

{ "uid": "...", "name": "...", "at": "timestamp" }

상세는 suspension_work.md 참조.

다른 영역과의 관계

  • site: 모든 안전 문서는 현장 하위 컬렉션. 위험성 평가는 tasks/{tid}/details에 저장되어 작업 관리와 연결.
  • system (notifications, files): 작업 중지/비상 알림 발송 시 사용자 알림 전송 + 파일 첨부 공통 메타 사용.
  • common (users/membership): 안전서약서, TBM 서명 등은 현장 멤버(worker) 기준으로 기록.