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 참조.