콘텐츠로 이동

company 영역 DB 스키마

회사 관리 영역의 Firestore 컬렉션 스키마 모음. 회사 본문과 회사 레벨 멤버십, 회사 내 출퇴근(본사 사무직) 로직을 포괄합니다.

컬렉션 맵

companies/{company_id}                          # 회사 본문
 ├─ members/{uid}                               # 회사 멤버 (owner/admin/manager)
 ├─ attendance_logs/{log_id}                    # 회사 출퇴근 로그 (본사/사무실 근무)
 ├─ attendance_requests/{request_id}            # 회사 출퇴근 요청
 ├─ membership_requests/{request_id}            # 회사 가입 요청 (assign_request)
 ├─ supervisor/{supervisor_id}                  # 현장 감독자 풀
 ├─ settings/{setting_id}                       # 회사 설정 (page_rules, site_rules, custom, positions 등)
 └─ delete_logs/{log_id}                        # 삭제 이력 (감사 로그)

회사 하위의 sites/{site_id}/...site 영역 참조.

문서 목록

컬렉션 스키마 문서 설명
companies/{cid} companies.md 회사 본문 (상호/대표자/사업자번호 등)
companies/{cid}/members/{uid} members.md 회사 레벨 멤버 (role=owner/admin/manager)
companies/{cid}/attendance_logs/{id} attendance_logs.md 회사 출퇴근 로그 (본사 사무직)
companies/{cid}/attendance_requests/{id} attendance_requests.md 회사 출퇴근 요청 (승인 대기)
companies/{cid}/membership_requests/{id} membership_requests.md 회사 가입 승인 대기 요청
companies/{cid}/supervisor/{id} supervisor.md 현장 감독자 풀 (현장에 배정되는 감독자 후보)
companies/{cid}/settings/{id} settings.md page_rules, site_rules, positions, custom 등 회사 설정
companies/{cid}/delete_logs/{id} delete_logs.md 회사/현장 주요 삭제 감사 로그

권한 체크

회사 엔드포인트는 check_company_permission(UID, company_id, options)로 권한을 확인합니다. 기본 허용 role: owner, admin, manager. 상세는 functions/con24/utils/membership.py 참조.

출퇴근 흐름

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

check_out_request   → attendance_requests(status=pending, type=check_out)
  → approval        → attendance_logs(status=approved, type=check_out) + 기존 check_in log에 link
  → admin_check_out → request 단계 건너뛰고 바로 log에 기록

add/delete_attendance_log → 관리자가 직접 로그 추가/삭제 (request 단계 없음)

다른 영역과의 관계

  • common: 회사 멤버 승인 시 users/{uid}/membership/{company_id} 생성. common/_schema/membership.md 참조.
  • site: 현장은 companies/{cid}/sites/{sid}/... 하위에 저장. 현장 출퇴근은 회사와 별도. site/_schema/README.md 참조.