Glowb Dev Docs
SaaS API피드백 관리자 승인 (v4)

제출 상태 조회

검수 라운드의 현재 제출 상태와 관리자가 바꿀 수 있는 목표 상태 목록을 조회합니다.

제출 상태 조회

검수 라운드(스크립트 = 1, 영상 = 2)의 현재 제출 상태와, 제출 상태 변경으로 바꿀 수 있는 목표 상태 목록을 돌려줍니다. 관리자 화면은 이 목록으로 변경 선택지를 그리고, 막힌 목표는 blockedReason을 안내합니다.

ADMIN 권한 필요 (ROLE_ADMIN). 아니면 차단.

HTTP 요청

GET /ai/admin/feedback-approvals/{reviewId}/state
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
reviewIdlong예검수 라운드 ID

제출 상태

값화면 표현판정
BEFORE_SUBMISSION제출 전라운드 PENDING, 제출된 제출물 없음
UNDER_REVIEW기업 검수 대기라운드 REVIEWING (또는 PENDING이지만 제출된 제출물 있음)
GATE_PENDING검수의 검수 대기adminApprovalStatus = PENDING / CHANGES_REQUESTED
RESUBMIT_REQUESTED재제출 요청라운드 REJECTED (크리에이터 수정 중)
APPROVED승인라운드 APPROVED, approvedWithFeedback = false
APPROVED_WITH_FEEDBACK피드백 포함 승인라운드 APPROVED, approvedWithFeedback = true

현재 상태는 목표 목록에서 빠집니다. GATE_PENDING(검수의 검수 대기)도 목표로 고를 수 있습니다 — 이미 확정된 기업 결정을 다시 검수의 검수에 걸어 둘 때 씁니다.

응답

성공 응답 (200)

스크립트 라운드(승인 상태, 2차에 제출물이 있어 되돌리기가 막힌 경우):

{
  "status": 200,
  "code": null,
  "message": "조회 성공",
  "data": {
    "reviewId": 1104,
    "reviewRound": 1,
    "currentState": "APPROVED",
    "currentStateDisplayName": "승인",
    "currentRevisionNo": 1,
    "hasUploadDate": false,
    "uploadDate": null,
    "options": [
      { "target": "BEFORE_SUBMISSION", "displayName": "제출 전", "allowed": false, "blockedReason": "2차(영상)에 제출물이나 임시저장한 내용이 있어 스크립트 승인을 되돌릴 수 없습니다.", "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "UNDER_REVIEW", "displayName": "기업 검수 대기", "allowed": false, "blockedReason": "2차(영상)에 제출물이나 임시저장한 내용이 있어 스크립트 승인을 되돌릴 수 없습니다.", "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "RESUBMIT_REQUESTED", "displayName": "재제출 요청", "allowed": false, "blockedReason": "2차(영상)에 제출물이나 임시저장한 내용이 있어 스크립트 승인을 되돌릴 수 없습니다.", "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "APPROVED_WITH_FEEDBACK", "displayName": "피드백 포함 승인", "allowed": false, "blockedReason": "2차(영상)에 제출물이나 임시저장한 내용이 있어 스크립트 승인을 되돌릴 수 없습니다.", "acceptsUploadDate": false, "requiresUploadDate": false }
    ]
  }
}

영상 라운드(검수의 검수 대기, 기업이 승인하면서 업로드 일정을 이미 정해 둔 경우 — 승인 계열 선택지는 업로드 일정 선택):

{
  "status": 200,
  "code": null,
  "message": "조회 성공",
  "data": {
    "reviewId": 1231,
    "reviewRound": 2,
    "currentState": "GATE_PENDING",
    "currentStateDisplayName": "검수의 검수 대기",
    "currentRevisionNo": 1,
    "hasUploadDate": true,
    "uploadDate": {
      "uploadDateType": "CANDIDATE",
      "uploadDate": null,
      "candidateDates": ["2026-10-06", "2026-10-07", "2026-10-08"]
    },
    "options": [
      { "target": "BEFORE_SUBMISSION", "displayName": "제출 전", "allowed": true, "blockedReason": null, "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "UNDER_REVIEW", "displayName": "기업 검수 대기", "allowed": true, "blockedReason": null, "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "RESUBMIT_REQUESTED", "displayName": "재제출 요청", "allowed": true, "blockedReason": null, "acceptsUploadDate": false, "requiresUploadDate": false },
      { "target": "APPROVED", "displayName": "승인", "allowed": true, "blockedReason": null, "acceptsUploadDate": true, "requiresUploadDate": false },
      { "target": "APPROVED_WITH_FEEDBACK", "displayName": "피드백 포함 승인", "allowed": true, "blockedReason": null, "acceptsUploadDate": true, "requiresUploadDate": false }
    ]
  }
}
필드타입설명
currentStatestring현재 제출 상태 (위 표)
currentRevisionNoint현재 수정 차수
hasUploadDateboolean영상 라운드에 업로드 일정이 이미 저장돼 있는지. 스크립트 라운드는 항상 false
uploadDateobject저장된 업로드 일정. 없으면 null
uploadDate.uploadDateTypestringOPTIMAL / ASAP / CANDIDATE
uploadDate.uploadDatedatetime업로드 예정일 (후보일만 정한 경우 null)
uploadDate.candidateDatesstring[]후보일(yyyy-MM-dd). 없으면 빈 목록
options[].targetstring목표 상태
options[].allowedboolean변경 가능 여부
options[].blockedReasonstring막힌 사유 (가능하면 null)
options[].acceptsUploadDateboolean이 목표로 바꿀 때 업로드 일정(uploadDate)을 받는지. 영상 라운드의 APPROVED / APPROVED_WITH_FEEDBACK만 true
options[].requiresUploadDateboolean업로드 일정이 필수인지. acceptsUploadDate이면서 저장된 일정이 없을 때(hasUploadDate = false)만 true

관리자 화면: acceptsUploadDate가 true인 선택지에서 업로드 일정 입력을 보여 주고, requiresUploadDate가 true면 필수로, false면 선택으로 받습니다. 선택일 때 비워 두면 저장된 일정(uploadDate)이 그대로 쓰이고, 입력하면 덮어씁니다.

막히는 경우

사유조건
크리에이터 제출 없음현재 BEFORE_SUBMISSION — 제출이 필요하면 대리제출을 이용
2차(영상) 제출물·임시저장 있음스크립트 라운드가 승인 상태이고 영상 라운드에 제출물이나 임시저장한 내용이 있음 — 되돌리면 2차 라운드를 삭제하므로 크리에이터 작업 보호
최종제출물 제출됨영상 라운드가 승인 상태이고 최종제출물이 제출됨
보낼 피드백 없음목표가 RESUBMIT_REQUESTED인데 이번 차수에 정식(임시저장 제외) 피드백이 없음
기업 결정 없음목표가 GATE_PENDING인데 이번 차수에 정식(임시저장 제외) 피드백이 없음 — 검수의 검수에 걸어 둘 기업 결정이 없음

에러 응답

거부는 HTTP 200에 body status: 404, code: INVALID_DATA, message에 사유가 담겨 옵니다. 관리자가 아니면 HTTP 403입니다.

body statuscode상황
404INVALID_DATA검수 라운드 없음

On this page