safety_agreement 스키마 (무사고 동의서)
무사고 동의서는 별도 컬렉션이 없고,
files컬렉션의 메타데이터로만 존재합니다.
저장 위치 (파일 경로)
저장 위치 (Firestore 메타)
조회는 항상 files 컬렉션에서 아래 조건으로 필터링:
본인의 무사고 동의서만
_get_safety_agreement로 조회되며, 다른 사용자의 동의서를 조회하는 엔드포인트는 없습니다.
files 문서 관련 필드 (무사고 동의서 식별용)
| 필드 | 타입 | 설명 |
|---|---|---|
related_doc_id |
string | 서명한 사용자의 UID (= 업로드 주체) |
doc_type |
string | "site" |
doc_page |
string | "safety-agreement" (필수 식별 키) |
tags.signed_date |
string | 서명한 날짜 (YYYY-MM-DD 원본 문자열, coerce: False) |
file_name |
string | 파일명 |
file_size |
int | 파일 크기 |
file_mime |
string | MIME 타입 |
(files 컬렉션의 공통 필드는 documentation/docs/system/ 파일 메타 스키마 참고)
권한
업로드 토큰 발급 (_get_safety_agreement_upload_token) / 조회 (_get_safety_agreement) 모두 다음 중 하나 충족 필요:
check_company_permission(UID, company_id, {"require_site_access": site_id})— 관리자가 해당 현장 접근 권한이 있을 때- 실패 시
check_site_permission(UID, company_id, site_id)— 현장 소속 근로자/장비
즉, 관리자라도 해당 현장에 배정되지 않았으면 업로드/조회 불가.