콘텐츠로 이동

users/{uid}/requests 스키마

사용자가 낸 승인 요청(회사 가입, 현장 배정, 장비 배정, 출근 요청 등)의 상태 트래킹. 회사/현장 쪽의 membership_requests/attendance_requests 등과 쌍으로 관리됩니다.

저장 위치

users/{uid}/requests/{request_id}

request_id는 자동 생성되는 Firestore document ID입니다.

상태 흐름

pending → approved | rejected
  • pending: 요청 등록 직후 기본 상태
  • approved: 회사/현장 관리자가 승인함
  • rejected: 관리자가 거절 또는 요청자가 취소

사용자는 같은 request_type + status=pending인 요청을 중복 생성할 수 없습니다 (코드에서 선검사).

공통 문서 필드

필드 타입 설명
target_name string 요청 대상의 표시명 (회사명, 현장명 등)
target_id string 요청 대상 문서 ID (company_id 또는 site_id 등)
request_path string? 회사/현장 쪽 요청 문서의 컬렉션 경로 (예: companies/{cid}/membership_requests). 취소 시 역조회에 사용
request_type string 요청 종류 ENUM — 아래 참조
status string pending | approved | rejected
created_at timestamp 요청 생성 시각

request_type 종류

생성 위치 비고
company_membership con24/company/assign.py 회사 입사 요청
company_attendance con24/company/attendence.py 회사 출근 요청
site_attendance con24/site/HR/worker_site_change.py 현장 출근(배정) 요청
site_change con24/site/HR/worker_site_change.py 근로자 현장 변경 요청
equipment_membership con24/site/HR/equipment_assign.py 장비 배정 요청
equipment_site_change con24/site/HR/equipment_site_change.py 장비 현장 변경 요청

출근 요청 추가 필드 (request_type=company_attendance 등, 선택)

출근 요청의 경우 attendance_request_id 등 상대 문서 ID가 포함될 수 있습니다(관련 로직은 company/attendence.py, site/HR/worker_site_change.py 참조). 본 문서는 common 파트 중심으로 정리하며, 상세한 출근 요청 스키마는 con24 파트 문서를 참고합니다.

상호 관계

  • 상대 문서(companies/{cid}/membership_requests/{req_id} 등)에는 역으로 user_notification_id가 저장되어 승인/거절 시 이 users/{uid}/requests 문서도 함께 업데이트됩니다.
  • 탈퇴(withdraw) 시 이 서브컬렉션은 전체 삭제됩니다.

예시 문서 (회사 가입 요청)

{
  "target_name": "건설주식회사",
  "target_id": "company_abc",
  "request_path": "companies/company_abc/membership_requests",
  "request_type": "company_membership",
  "status": "pending",
  "created_at": "2026-04-10T10:00:00Z"
}