콘텐츠로 이동

site 영역 DB 스키마

현장(건설 사이트) 관리 영역의 Firestore 컬렉션 스키마 모음. 현장 본문, 인력/장비, 출퇴근, 작업 관리, 파일 등 가장 많은 컬렉션이 모인 영역입니다.

컬렉션 맵

companies/{company_id}/sites/{site_id}                        # 현장 본문
 ├─ members/{uid}                                             # 현장 근로자 (worker)
 ├─ equipments/{equipment_id}                                  # 현장 장비
 ├─ supervisor/{uid}                                           # 현장 감독자 (owner/admin/manager + 감독자)
 ├─ attendance_logs/{log_id}                                   # 근로자 출퇴근 로그
 ├─ attendance_requests/{request_id}                           # 근로자 출퇴근 요청
 ├─ equipment_attendance_logs/{log_id}                         # 장비 출퇴근 로그
 ├─ equipment_attendance_requests/{request_id}                 # 장비 출퇴근 요청
 ├─ membership_requests/{request_id}                           # 현장 입사(worker) 요청
 ├─ change_requests/{request_id}                               # 근로자 현장 변경 요청
 ├─ equipment_assign_requests/{request_id}                     # 장비 배정 요청
 ├─ equipment_change_requests/{request_id}                     # 장비 현장 변경 요청
 ├─ tasks/{task_id}                                            # 일별 작업 → tasks.md
 │   ├─ risk_assessment/{id}                                   # 작업 위험성 평가 (TBM)
 │   ├─ material_usage/{id}                                    # 자재 일일 사용량
 │   ├─ waste_amount/{id}                                      # 폐기물 일일 배출량
 │   ├─ memo/{id}                                              # 특이사항 메모
 │   └─ attendance/{supervisor|worker|equipment}               # 작업별 출석 집계 문서
 ├─ waste/{waste_id}                                           # 폐기물 품목 마스터 → waste.md
 ├─ material/{material_id}                                     # 자재 품목 마스터 → material.md
 ├─ files/{file_id}                                            # 현장 관련 파일 메타 → system/_schema/files.md 참조
 ├─ folders/{folder_id}                                        # 드라이브 폴더
 ├─ labor_ledger/{YYYYMM}                                      # 노임대장 월별 → finance/_schema/labor_ledger.md 참조
 ├─ dashboard/{YYYYMM}                                         # 작업 월별 대시보드 → dashboard.md
 ├─ task_summary/{YYYYMM}                                      # 자재/폐기물 월별 집계 → task_summary.md
 └─ suspension_works/{id}                                      # 작업 중지권 → safety/_schema/suspension_work.md 참조

문서 목록

현장 본문 / 소속

컬렉션 스키마 문서 설명
sites/{sid} sites.md 현장 본문 (이름/위치/상태/감독자/레이아웃 등)
sites/{sid}/members/{uid} members.md 현장 근로자 (worker)

작업 관리

컬렉션 스키마 문서 설명
sites/{sid}/tasks/{tid} tasks.md 일별 작업 마스터 + 하위 서브컬렉션(위험성 평가/자재/폐기물/메모/attendance)
sites/{sid}/material/{mid} material.md 자재 품목 마스터 (작업 일지용)
sites/{sid}/waste/{wid} waste.md 폐기물 품목 마스터
sites/{sid}/dashboard/{YYYYMM} dashboard.md 월별 작업 수 대시보드
sites/{sid}/task_summary/{YYYYMM} task_summary.md 자재/폐기물 월별 사용량 집계

미작성(코드 기반 TBD) — 우선순위 높음

아래 컬렉션은 엔드포인트가 존재하고 실제 데이터가 쌓이는 핵심 컬렉션이지만, 별도 스키마 문서가 아직 작성되지 않았습니다. 필요 시 소스 코드(functions/con24/site/...)에서 필드를 직접 확인해주세요.

컬렉션 참고 소스 비고
sites/{sid}/equipments/{eid} con24/site/HR/equipment_assign.py 현장 장비 (장비대 연결, finance/_schema/equipment_cost.md 와 공유)
sites/{sid}/supervisor/{uid} con24/company/supervisor/ 현장 감독자 (owner/admin/manager + 감독자 role)
sites/{sid}/attendance_logs/{id} con24/site/attendence/worker_attendance.py 근로자 출퇴근 로그
sites/{sid}/attendance_requests/{id} con24/site/attendence/worker_attendance.py 근로자 출퇴근 요청 (pending 상태)
sites/{sid}/equipment_attendance_logs/{id} con24/site/attendence/equipment_attendance.py 장비 출퇴근 로그
sites/{sid}/equipment_attendance_requests/{id} con24/site/attendence/equipment_attendance.py 장비 출퇴근 요청
sites/{sid}/membership_requests/{id} con24/site/HR/worker_assign.py 현장 입사 요청
sites/{sid}/change_requests/{id} con24/site/HR/worker_site_change.py 근로자 현장 변경 요청
sites/{sid}/equipment_assign_requests/{id} con24/site/HR/equipment_assign.py 장비 배정 요청
sites/{sid}/equipment_change_requests/{id} con24/site/HR/equipment_site_change.py 장비 현장 변경 요청
sites/{sid}/folders/{id} con24/site/drive_folder.py 드라이브 폴더 트리

상태 흐름 요약

현장 상태

preparation → activate ↔ deactivate → complete

현장이 deactivate가 되면 pending 요청들이 자동 거절되고, complete가 되면 미완결 출퇴근 로그가 정리되며 모든 멤버가 자동 퇴사됩니다. 자세한 내용은 sites.md의 상태 흐름 섹션 참조.

근로자 입사/배정 흐름

site_assign_request       → membership_requests(status=pending)
  ↓ approval
members/{uid} 생성 + users/{uid}/membership/{cid}_{sid} 생성 + request 삭제

출퇴근 흐름

check_in_request  → attendance_requests(status=pending, type=check_in)
  ↓ approval
attendance_logs(status=approved, type=check_in) + request 삭제

check_out_request → attendance_requests(status=pending, type=check_out)
  ↓ approval
attendance_logs(status=approved, type=check_out, link=check_in_log_id) + 상대 로그 link 업데이트

admin_check_out, add_attendance_log는 request 단계를 건너뛰고 바로 로그 기록.

장비 배정/해제/현장 변경

근로자와 동일한 패턴이되 equipment_* 접두가 붙습니다. 각 요청 타입은 별도 컬렉션에 저장되어 한 화면에서 필터링 가능.

다른 영역과의 관계