Glowb Dev Docs
SaaS API기업용 콘텐츠 검수

GET /ai/business/contents/review/{reviewId}/detail

검수 라운드 상세 조회

검수 라운드 상세 조회

검수 라운드의 모든 제출물과 각 제출물의 히스토리, 피드백을 포함하여 조회합니다.

HTTP 요청

GET /ai/business/contents/review/{reviewId}/detail
Authorization: Bearer {access_token}

Path Parameters

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

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "검수 라운드 상세 조회가 완료되었습니다.",
  "data": {
    "reviewId": 1,
    "applicationId": 100,
    "reviewRound": 1,
    "guidelineVersion": 2,
    "status": "REVIEWING",
    "adminApprovalStatus": "NONE",
    "uploadApproved": false,
    "feedbackDeadline": "2024-01-20T10:30:00",
    "createdAt": "2024-01-15T10:30:00",
    "creatorName": "홍길동",
    "creatorEmail": "creator@example.com",
    "submissionItems": [
      {
        "id": 1,
        "itemType": "VIDEO",
        "filePath": "https://s3.../video.mp4",
        "editorState": null,
        "comment": null,
        "status": "REVIEWING",
        "isSubmitted": true,
        "submittedAt": "2024-01-16T14:00:00",
        "uploadedAt": "2024-01-16T14:00:00",
        "currentVersion": 2,
        "createdAt": "2024-01-15T10:30:00",
        "histories": [...],
        "feedbacks": [
          {
            "id": 10,
            "feedback": "자유 피드백 내용",
            "feedbackType": "FREE",
            "billingType": "FREE",
            "revisionNo": 1,
            "feedbackCategory": null,
            "feedbackItem": null,
            "highlightedText": null,
            "isResolved": true,
            "isDraft": false,
            "createdAt": "2024-01-17T10:00:00"
          },
          {
            "id": 11,
            "feedback": "제형 표현이 충분히 보이지 않습니다.",
            "feedbackType": "GUIDELINE_UNREFLECTED",
            "billingType": "FREE",
            "revisionNo": 2,
            "feedbackCategory": "필수 촬영 항목",
            "feedbackItem": "제형 표현 샷",
            "highlightedText": null,
            "isResolved": false,
            "isDraft": false,
            "createdAt": "2024-01-19T10:00:00"
          },
          {
            "id": 12,
            "feedback": "작성 중인 피드백...",
            "feedbackType": "FREE",
            "billingType": "FREE",
            "revisionNo": 2,
            "feedbackCategory": null,
            "feedbackItem": null,
            "highlightedText": null,
            "isResolved": false,
            "isDraft": true,
            "createdAt": "2024-01-19T11:00:00"
          }
        ]
      }
    ],
    "unreflectedFeedbackIds": [1, 2, 3],
    "previousReviewId": null,
    "uploadDateType": "CANDIDATE",
    "uploadDate": null,
    "candidateDates": "[\"2026-04-10\",\"2026-04-13\",\"2026-04-15\"]",
    "submissionDeadline": "2026-04-25T23:59:59",
    "hasTriggered": true
  }
}

Response 스키마

필드타입설명
reviewIdlong검수 라운드 ID
applicationIdlongCampaignApplication ID
reviewRoundint검수 라운드 (1: 1차, 2: 2차)
guidelineVersionint가이드라인 버전 (1: v1, 2: v2)
statusstring검수 상태
adminApprovalStatusstring검수의 검수(관리자 승인 게이트) 상태. NONE(게이트 미개입=평소) / PENDING·CHANGES_REQUESTED(관리자 승인 대기=보류 → 재제출·승인하기 차단) / APPROVED(승인 완료)
uploadApprovedboolean업로드 승인 여부
feedbackDeadlinedatetime피드백 마감일
createdAtdatetime생성일시
creatorNamestring크리에이터명
creatorEmailstring크리에이터 이메일
submissionItemsarray제출물 목록 (히스토리, 피드백 포함)
unreflectedFeedbackIdsarray<long>반영되지 않은 피드백 ID 목록 (nullable)
previousReviewIdlong이전 검수 라운드 ID (2차 검수인 경우 1차 검수 ID, 1차 검수이면 null)
uploadDateTypestring업로드일 선택 타입 (OPTIMAL / CANDIDATE / ASAP, nullable)
uploadDatedatetime업로드 예정일 (OPTIMAL 타입인 경우, nullable)
candidateDatesstring후보 업로드 날짜 목록 (CANDIDATE 타입인 경우, JSON 배열 문자열, nullable)
submissionDeadlinedatetime제작물 제출 마감일 (TB_APPLICATION_SCHEDULE CONTENT_SUBMISSION_DEADLINE, nullable)
hasTriggeredbooleansubmissionDeadline이 트리거로 확정된 마감인지 여부

hasTriggered — 지연 판정 전에 반드시 확인하세요

제출 마감일은 선정 시점에 임시(placeholder) 값으로 먼저 깔린 뒤, 배송완료·계약 서명완료 같은 트리거가 발동해야 실제 일자로 확정됩니다.

  • hasTriggered: true — 트리거가 발동해 확정된 마감입니다. 지연 판정에 사용할 수 있습니다.
  • hasTriggered: false — 아직 트리거가 발동하지 않은 임시 마감입니다. 날짜가 이미 지나 있어도 크리에이터에게 제출 의무가 시작되지 않은 상태이므로 "지연"으로 판정하면 안 됩니다.

마감일 행이 아예 없는 경우에도 false로 내려옵니다.

unreflectedFeedbackIds 필드

기업이 "피드백 미반영" 검수 추가 요청 시 지정한 피드백 ID 목록입니다.

  • 값이 있으면: 해당 피드백들을 하이라이트 표시하여 크리에이터가 미반영한 피드백 확인 가능
  • 값이 null이면: 검수 추가 요청이 없거나 OUTSIDE_GUIDELINE 유형인 경우

피드백의 feedbackType 필드 (신규)

각 피드백에 feedbackType, feedbackCategory, feedbackItem 필드가 추가되었습니다.

  • feedbackType: 피드백 종류 구분
    • FREE — 기존 자유 피드백 (category/item은 null)
    • GUIDELINE_UNREFLECTED — 가이드라인 미반영 항목 (category: 섹션명, item: 항목명)
    • GUIDELINE_EXTRA — 가이드라인 외 추가 피드백 (category: 자막/녹음 등, item: null)
  • 기존 피드백은 모두 feedbackType: "FREE"로 조회됩니다.
  • 프론트에서 feedbackType으로 피드백 종류를 구분하여 렌더링하면 됩니다.

피드백의 revisionNo 필드 (신규)

각 피드백에 작성 시점의 수정 차수가 실립니다. 1이 1차 피드백, 2가 2차 피드백입니다.

  • 차수는 크리에이터가 정식 제출한 횟수입니다. 최초 제출이 1차이고, 기업 피드백이 전달된 뒤 크리에이터가 재제출하면 2차가 됩니다.
  • 검수 단위로 1부터 시작합니다. 스크립트 검수와 영상 검수의 차수는 서로 독립입니다.
  • 저장 시점에 고정되며 이후 갱신되지 않습니다.
  • 목록에는 이전 차수의 피드백도 함께 내려옵니다. 승인·해결된 1차 피드백이 2차 피드백과 같은 배열에 섞이므로, 화면에서 회차를 구분하려면 이 필드로 그룹핑해야 합니다.
  • 2차에서 끝나지 않습니다. 3차·4차도 실제로 발생하므로 "1차/2차" 두 값으로 고정하지 말고 N차로 렌더링하세요.
  • 기존 피드백은 revisionNo: 1로 조회됩니다.

revisionNo 와 reviewRound 는 다른 개념입니다

  • reviewRound단계. 1=스크립트 검수, 2=영상 검수.
  • revisionNo — 그 단계 안에서의 수정 차수. 1차/2차/N차.

이름이 비슷하지만 섞으면 안 됩니다. 영상 검수(reviewRound: 2)의 1차 피드백은 revisionNo: 1입니다.

피드백의 billingType 필드

FREE(무료 검수) 또는 PAID(유료 검수) 표시 마커입니다.

billingType 을 과금 근거로 사용하지 마세요

실제 크레딧 차감은 검수 추가 요청(OUTSIDE_GUIDELINE, 50,000 크레딧)에서 일어나며 이 필드와 연동되지 않습니다. 또한 PAID 피드백은 재제출 시 삭제 후 재생성되므로 revisionNo가 재삽입 시점 값으로 다시 매겨질 수 있습니다.

피드백의 isDraft 필드

각 피드백에 isDraft 필드가 포함됩니다.

  • isDraft: true — 임시저장된 피드백 (아직 정식 제출되지 않음)
  • isDraft: false — 정식 제출된 피드백
  • 프론트에서 isDraft로 구분하여 임시저장 피드백은 별도 UI로 표시할 수 있습니다.
  • 정식 제출 시 임시저장 피드백은 자동 삭제됩니다.

previousReviewId 필드

2차 검수(reviewRound=2)인 경우, 같은 신청 건의 1차 검수 라운드 ID를 반환합니다.

  • 이 ID로 /ai/business/contents/review/{previousReviewId}/detail을 호출하면 1차 검수 내용을 확인할 수 있습니다.
  • 1차 검수이거나 1차 검수가 존재하지 않으면 null입니다.

업로드일 관련 필드 (uploadDateType, uploadDate, candidateDates)

해당 신청 건의 최종 제출물(FinalSubmission)에 설정된 업로드일 정보입니다.

  • OPTIMAL: 3일 이내 최적 날짜에 게시 → uploadDate에 날짜 저장
  • CANDIDATE: 기업이 후보 3개 지정 → candidateDates에 JSON 배열 저장
  • ASAP: 가능한 빨리 게시
  • 업로드일이 아직 설정되지 않은 경우 세 필드 모두 null입니다.

API 테스트

On this page