suggestions 스키마
현장 건의사항(제안) 문서의 전체 스키마. 각 엔드포인트 문서에서 참조용으로 사용합니다.
저장 위치
상태 흐름
pending: 건의 접수 후 관리자 응답 대기 (생성 시 기본값)approved: 관리자가 응답/처리 완료 (반려 상태 없음 — 채택 여부와 무관하게 답변 처리되면 approved)
반려/거절 케이스는 현재 별도 상태값이 아닌
reply본문에 사유를 기록하는 방식으로 동작합니다. 상태 전이는_handle_suggestion에서만 일어나며,pending이 아니면SAFETY_007에러.
문서 필드
| 필드 | 타입 | 설명 |
|---|---|---|
title |
string | 건의 제목 |
body |
string | 건의 본문 |
type |
string | 건의 분류 (프론트에서 정의한 카테고리 키) |
status |
string | "pending" | "approved" |
created_at |
timestamp | 최초 작성 시각 |
created_by |
string | 작성자 UID |
created_by_name |
string | 작성자 당시 이름 |
reply |
string? | 관리자 응답 본문 (처리 시에만 존재) |
approved_at |
timestamp? | 처리 시각 (처리 시에만 존재) |
approvalUID |
string? | 처리자 UID (처리 시에만 존재) |
approval_name |
string? | 처리자 당시 이름 (처리 시에만 존재) |
첨부파일 (files) 연결
첨부파일 메타는 companies/{cid}/sites/{sid}/files/ 컬렉션에 저장되며 related_doc_id == suggestion_id 로 역참조됩니다. 업로드 시 doc_type="safe", doc_page="realtime-communication" 로 태깅.
삭제 (_delete_suggestion) 시 해당 related_doc_id를 가진 파일 전체가 휴지통으로 이동된 뒤 본 문서가 삭제됩니다.
권한
| 작업 | 허용 user_type |
|---|---|
생성 (_make_suggestion) |
site / equipment / company |
업로드 토큰 (_get_suggestion_upload_token) |
site / equipment / company |
처리 (_handle_suggestion) |
company 전용 |
삭제 (_delete_suggestion) |
site / equipment / company 단, 본인 작성 또는 company인 경우만 실제 삭제 진행 |
예시 문서 (approved)
{
"title": "이동식 사다리 추가 요청",
"body": "2층 작업 구간에 이동식 사다리 1대가 부족합니다.",
"type": "equipment_request",
"status": "approved",
"created_at": "2026-04-18T09:12:00Z",
"created_by": "uid_worker",
"created_by_name": "홍길동",
"reply": "2026-04-20까지 추가 반입 완료 예정",
"approved_at": "2026-04-18T14:00:00Z",
"approvalUID": "uid_admin",
"approval_name": "김관리자"
}