콘텐츠로 이동

suggestions 스키마

현장 건의사항(제안) 문서의 전체 스키마. 각 엔드포인트 문서에서 참조용으로 사용합니다.

저장 위치

companies/{company_id}/sites/{site_id}/suggestions/{suggestion_id}

상태 흐름

pending → approved
  • 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": "김관리자"
}