SaaS API기업용 콘텐츠 검수
GET /ai/business/contents/review/{reviewId}/detail
검수 라운드 상세 조회
검수 라운드 상세 조회
검수 라운드의 모든 제출물과 각 제출물의 히스토리, 피드백을 포함하여 조회합니다.
HTTP 요청
GET /ai/business/contents/review/{reviewId}/detail
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
reviewId | long | 예 | 검수 라운드 ID |
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "검수 라운드 상세 조회가 완료되었습니다.",
"data": {
"reviewId": 1,
"applicationId": 100,
"reviewRound": 1,
"guidelineVersion": 2,
"status": "REVIEWING",
"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",
"feedbackCategory": null,
"feedbackItem": null,
"highlightedText": null,
"isResolved": false,
"isDraft": false,
"createdAt": "2024-01-17T10:00:00"
},
{
"id": 11,
"feedback": "제형 표현이 충분히 보이지 않습니다.",
"feedbackType": "GUIDELINE_UNREFLECTED",
"feedbackCategory": "필수 촬영 항목",
"feedbackItem": "제형 표현 샷",
"highlightedText": null,
"isResolved": false,
"isDraft": false,
"createdAt": "2024-01-17T10:00:00"
},
{
"id": 12,
"feedback": "작성 중인 피드백...",
"feedbackType": "FREE",
"feedbackCategory": null,
"feedbackItem": null,
"highlightedText": null,
"isResolved": false,
"isDraft": true,
"createdAt": "2024-01-17T11:00:00"
}
]
}
],
"unreflectedFeedbackIds": [1, 2, 3],
"previousReviewId": null,
"uploadDateType": "CANDIDATE",
"uploadDate": null,
"candidateDates": "[\"2026-04-10\",\"2026-04-13\",\"2026-04-15\"]"
}
}Response 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
reviewId | long | 검수 라운드 ID |
applicationId | long | CampaignApplication ID |
reviewRound | int | 검수 라운드 (1: 1차, 2: 2차) |
guidelineVersion | int | 가이드라인 버전 (1: v1, 2: v2) |
status | string | 검수 상태 |
uploadApproved | boolean | 업로드 승인 여부 |
feedbackDeadline | datetime | 피드백 마감일 |
createdAt | datetime | 생성일시 |
creatorName | string | 크리에이터명 |
creatorEmail | string | 크리에이터 이메일 |
submissionItems | array | 제출물 목록 (히스토리, 피드백 포함) |
unreflectedFeedbackIds | array<long> | 반영되지 않은 피드백 ID 목록 (nullable) |
previousReviewId | long | 이전 검수 라운드 ID (2차 검수인 경우 1차 검수 ID, 1차 검수이면 null) |
uploadDateType | string | 업로드일 선택 타입 (OPTIMAL / CANDIDATE / ASAP, nullable) |
uploadDate | datetime | 업로드 예정일 (OPTIMAL 타입인 경우, nullable) |
candidateDates | string | 후보 업로드 날짜 목록 (CANDIDATE 타입인 경우, JSON 배열 문자열, nullable) |
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으로 피드백 종류를 구분하여 렌더링하면 됩니다.
피드백의 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입니다.