Glowb Dev Docs
Main API비즈니스 API

POST /ai/business/contents/review-request

검수 추가 요청 (피드백 횟수 추가)

검수 추가 요청

콘텐츠 검수 라운드에 대해 추가 피드백 요청을 등록합니다. 요청 유형에 따라 크레딧이 즉시 차감됩니다.

기본 피드백 횟수: 1차/2차 검수 각각 기본 1회의 피드백만 가능합니다. 검수 추가 요청을 통해 해당 검수 라운드의 피드백 횟수를 증가시킬 수 있습니다.

크레딧 차감 조건

  • FEEDBACK_NOT_REFLECTED: 크레딧 차감 없음
  • OUTSIDE_GUIDELINE: 50,000 크레딧 즉시 차감 (잔액 부족 시 요청 실패)
항목
메서드POST
경로/ai/business/contents/review-request
인증필요 (기업/관리자 토큰)

요청 유형

유형설명크레딧 차감
FEEDBACK_NOT_REFLECTED요청한 피드백, 콘텐츠 가이드라인 항목이 반영되지 않음없음
OUTSIDE_GUIDELINE콘텐츠 가이드라인 외 추가 요청50,000

요청

POST /ai/business/contents/review-request HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json

{
  "reviewId": 123,
  "requestType": "FEEDBACK_NOT_REFLECTED",
  "unreflectedFeedbackIds": [1, 2, 3],
  "requestContent": "해당 피드백이 반영되지 않았습니다. 수정 요청드립니다."
}
curl -X POST "https://api.glowb.com/ai/business/contents/review-request" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "reviewId": 123,
    "requestType": "FEEDBACK_NOT_REFLECTED",
    "unreflectedFeedbackIds": [1, 2, 3],
    "requestContent": "해당 피드백이 반영되지 않았습니다. 수정 요청드립니다."
  }'
const response = await fetch('/ai/business/contents/review-request', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    reviewId: 123,
    requestType: 'FEEDBACK_NOT_REFLECTED',
    unreflectedFeedbackIds: [1, 2, 3],
    requestContent: '해당 피드백이 반영되지 않았습니다. 수정 요청드립니다.'
  })
});
const result = await response.json();

Request Body 스키마

Prop

Type

응답

성공 응답 (200 OK)

FEEDBACK_NOT_REFLECTED (크레딧 차감 없음)

{
  "status": 200,
  "code": null,
  "message": "검수 추가 요청이 완료되었습니다.",
  "data": {
    "id": 1,
    "reviewId": 123,
    "requestType": "FEEDBACK_NOT_REFLECTED",
    "creditDeducted": 0,
    "message": "검수 추가 요청이 등록되었습니다. (피드백 횟수: 2회)",
    "createdAt": "2024-12-30T14:30:00"
  }
}

OUTSIDE_GUIDELINE (50,000 크레딧 차감)

{
  "status": 200,
  "code": null,
  "message": "검수 추가 요청이 완료되었습니다.",
  "data": {
    "id": 2,
    "reviewId": 123,
    "requestType": "OUTSIDE_GUIDELINE",
    "creditDeducted": 50000,
    "message": "검수 추가 요청이 등록되었습니다. (크레딧 차감: 50,000원, 피드백 횟수: 3회)",
    "createdAt": "2024-12-30T15:00:00"
  }
}

응답 스키마

Prop

Type

에러 응답

상태 코드에러 코드설명
400INVALID_DATA검수 정보를 찾을 수 없음
400INVALID_DATA기업 정보를 찾을 수 없음
400INSUFFICIENT_CREDIT크레딧 잔액 부족 (OUTSIDE_GUIDELINE 시)
401UNAUTHORIZED인증 실패
500INTERNAL_SERVER_ERROR서버 오류

검수 정보 없음 예시:

{
  "status": 400,
  "code": "INVALID_DATA",
  "message": "검수 정보를 찾을 수 없습니다.",
  "data": null
}

크레딧 부족 예시:

{
  "status": 400,
  "code": "INSUFFICIENT_CREDIT",
  "message": "크레딧이 부족합니다. 현재 잔액: 30,000원, 필요 금액: 50,000원",
  "data": null
}

처리 흐름

API 호출

   ├─ 1. ContentReview 조회 (reviewId)

   ├─ 2. 캠페인의 기업 정보 조회

   ├─ 3. 요청 유형 확인
   │      ├─ FEEDBACK_NOT_REFLECTED → 크레딧 차감 없음
   │      └─ OUTSIDE_GUIDELINE → 50,000 크레딧 차감

   ├─ 4. ContentReview.maxFeedbackCount 증가 (+1)

   ├─ 5. AdditionalReviewRequest 엔티티 저장

   └─ 6. 응답 반환

피드백 횟수 관리

  • maxFeedbackCount: 해당 검수 라운드에서 허용된 최대 피드백 횟수 (기본값: 1)
  • currentFeedbackCount: 현재까지 진행된 피드백 횟수

검수 추가 요청이 승인되면 maxFeedbackCount가 1 증가하여 추가 피드백이 가능해집니다.

reviewId 조회 방법

reviewId는 검수 라운드 상세 조회 API에서 확인할 수 있습니다:

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

On this page