users/{uid}/membership 스키마
사용자가 소속된 회사/현장/장비 관계 서브컬렉션. 한 사용자는 현재 같은 회사에 한해 여러 역할(회사 멤버, 현장 근로자, 장비 배정 등)을 가질 수 있습니다.
저장 위치
users/{uid}/membership/{membership_id}
membership_id는 role과 대상에 따라 결정됩니다:
| 역할 |
membership_id 규칙 |
비고 |
owner, admin, manager |
{company_id} |
회사 가입 승인 시 생성 (con24/company/assign.py) |
worker |
{company_id}_{site_id} |
현장 배정 승인 시 생성 (con24/site/HR/worker_assign.py) |
equipment |
{company_id}_{site_id}_{equipment_id} |
장비 배정 승인 시 생성 (con24/site/HR/equipment_assign.py) |
문서 필드
공통 필드 (모든 role)
| 필드 |
타입 |
설명 |
company_id |
string |
소속 회사 문서 ID |
company_name |
string? |
소속 회사명 (owner/admin/manager/worker에 포함) |
site_id |
string | null |
소속 현장 문서 ID. 회사 레벨(owner/admin/manager)이면 null |
site_name |
string | null |
현장명. 회사 레벨이면 null |
role |
string |
owner | admin | manager | worker | equipment |
created_at |
timestamp |
멤버십 생성 시각 |
장비 배정 시 추가 필드 (role == "equipment")
| 필드 |
타입 |
설명 |
equipment_id |
string |
users/{uid}/equipments의 개인 장비 문서 ID |
equipment_name |
string |
장비 모델명 (스냅샷) |
equipment_type |
string |
장비 구분 (스냅샷) |
equipment_number |
string |
차량 등록번호 (스냅샷) |
상호 관계
- 회원 탈퇴(
withdraw)는 이 서브컬렉션에 문서가 하나라도 있으면 거부됩니다 (ErrorCode.USER_006).
- 회사 가입 요청(
company_assign_request)은 이 서브컬렉션을 스캔해 다른 회사 소속 여부를 확인합니다 (ErrorCode.MEMBER_009).
- 현장 탈퇴/회사 탈퇴/장비 해제 시 해당 membership 문서가 삭제됩니다.
예시 문서
회사 owner
{
"company_id": "company_abc",
"company_name": "건설주식회사",
"site_id": null,
"site_name": null,
"role": "owner",
"created_at": "2026-04-01T00:00:00Z"
}
현장 worker (membership_id = "company_abc_site_xyz")
{
"company_id": "company_abc",
"company_name": "건설주식회사",
"site_id": "site_xyz",
"site_name": "A현장",
"role": "worker",
"created_at": "2026-04-10T00:00:00Z"
}
장비 (membership_id = "company_abc_site_xyz_equipment_123")
{
"company_id": "company_abc",
"site_id": "site_xyz",
"site_name": "A현장",
"equipment_id": "equipment_123",
"equipment_name": "현대 25톤 덤프",
"equipment_type": "덤프트럭",
"equipment_number": "12가 3456",
"role": "equipment",
"created_at": "2026-04-12T00:00:00Z"
}