콘텐츠로 이동

members 스키마

현장 근로자(worker) 멤버 문서의 전체 스키마. 각 엔드포인트 문서에서 참조용으로 사용합니다.

저장 위치

companies/{company_id}/sites/{site_id}/members/{member_id}
  • member_id사용자 UID와 동일하게 저장됩니다 (doc_id = UID).
  • 한 현장당 한 명의 근로자는 하나의 문서만 가집니다 (재입사 시 기존 문서 resign=False로 복구).

상태 흐름

활동 중 (resign=False) ↔ 퇴사 (resign=True)
  • 입사 승인 시: 새 문서 생성 또는 resign=False로 복구
  • 개별 탈퇴 (_site_resign) 또는 현장 변경 (_site_change, _site_change_request_approval) 시: resign=True
  • 현장 완료 (complete) 시: 전체 멤버 일괄 resign=True 처리 (reason="site_complete")

이 문서는 삭제되지 않고 resign 필드로만 상태 전환됩니다.

문서 필드

필드 타입 설명
UID string 사용자 UID (doc_id와 동일)
name string 근로자 이름 (평문)
phone_enc string 암호화된 전화번호
phone_masked string 마스킹된 전화번호 ("010-****-1234")
email_enc string 암호화된 이메일
main_address string 주소 (도로명/지번)
sub_address_enc string 암호화된 상세 주소
birth timestamp 생년월일
sex string "male" | "female"
field string 직종 (settings/tags.fields 중 하나 또는 "없음")
position string 직책 ("없음" 기본)
labor_supplier string 소속 업체 (settings/tags.labor_suppliers 중 하나 또는 "없음")
wage_rate number 일일 단가 (직종에 매핑됨)
approved_UID string 입사 승인자 UID
created_at timestamp 입사 승인 시각
fcm_token string? FCM 푸시 토큰 (있을 때만 저장)
resign boolean 퇴사 여부 (기본 false)
resign_at timestamp? 퇴사 시각 (resign=True일 때)
resign_UID string? 퇴사 처리자 UID ("system"=자동)
resign_reason string? 퇴사 사유 ("manual_resign" | "site_change" | "site_complete")

관련 서브컬렉션 / 인덱스

  • companies/{cid}/sites/{sid}/search_index/{sid}: 현장 멤버 검색 인덱스 (current_members, resign_members 배열 포함). _update_site_member_index 트리거가 자동 갱신.
  • users/{UID}/membership/{cid}_{sid}: 사용자 관점의 멤버십 문서 (role="worker"). 입사 승인/현장 변경/탈퇴 시 동기화됨.

예시 문서 (활동 중)

{
  "UID": "uid_worker",
  "name": "홍길동",
  "phone_enc": "base64...",
  "phone_masked": "010-****-1234",
  "email_enc": "base64...",
  "main_address": "서울시 강남구",
  "sub_address_enc": "base64...",
  "birth": "1990-01-15T00:00:00Z",
  "sex": "male",
  "field": "철근공",
  "position": "없음",
  "labor_supplier": "동양노무",
  "wage_rate": 180000,
  "approved_UID": "uid_admin",
  "created_at": "2026-02-01T09:00:00Z",
  "fcm_token": "ey...",
  "resign": false
}

예시 문서 (현장 변경으로 퇴사 상태)

{
  "UID": "uid_worker",
  "name": "홍길동",
  "...": "...",
  "resign": true,
  "resign_at": "2026-03-10T14:00:00Z",
  "resign_UID": "uid_admin",
  "resign_reason": "site_change"
}