Admin APIAdmin Dashboard API
POST /ai/admin/dashboard/{campaignNo}/applicants/bulk
신청자 일괄 등록
신청자 일괄 등록
인플루언서 번호 목록을 받아 현재 캠페인에 신청자로 일괄 등록합니다.
sourceType=ADMIN_ADDED로 생성됩니다. 타 캠페인 신청자 불러오기(GET cross-campaign-applicants)에서 선택한 인플루언서를 등록할 때 사용합니다.
HTTP 요청
POST /ai/admin/dashboard/{campaignNo}/applicants/bulk
Authorization: Bearer {access_token}
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
campaignNo | Long | 예 | 캠페인 번호 |
Request Body
{
"influenceNos": [123, 456, 789]
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
influenceNos | List<Integer> | 예 | 등록할 인플루언서 번호 목록 |
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "2건 성공, 1건 실패",
"data": {
"successCount": 2,
"failedCount": 1,
"successInfluenceNos": [123, 456],
"failedInfluenceNos": [789],
"message": "2건 성공, 1건 실패"
}
}전체 성공 시
{
"status": 200,
"code": null,
"message": "3건 등록 완료",
"data": {
"successCount": 3,
"failedCount": 0,
"successInfluenceNos": [123, 456, 789],
"failedInfluenceNos": [],
"message": "3건 등록 완료"
}
}응답 필드 설명
| 필드 | 타입 | 설명 |
|---|---|---|
successCount | Integer | 등록 성공 건수 |
failedCount | Integer | 등록 실패 건수 |
successInfluenceNos | List<Integer> | 등록 성공한 인플루언서 번호 목록 |
failedInfluenceNos | List<Integer> | 등록 실패한 인플루언서 번호 목록 |
message | String | 결과 메시지 |
등록 후 AI 자동 처리
등록 성공한 인플루언서에 대해 트랜잭션 커밋 후 비동기로 아래 두 가지가 자동 실행됩니다.
- 추천사(recommendReason): 인플루언서-캠페인 적합도 평가 텍스트 생성
- 적합도 점수(matchScore): 벡터 코사인 유사도 계산
단, SNS 계정 링크(snsAccountLink)가 없는 인플루언서는 AI 처리가 생략됩니다.
인플루언서 데이터가 부족한 경우 Python AI가 matchScore: null을 반환할 수 있습니다.
실패 케이스
아래 경우 해당 인플루언서는 failedInfluenceNos에 포함됩니다.
- 이미 해당 캠페인에 등록된 인플루언서 (
alreadyRegistered=true인 항목) - 존재하지 않는 인플루언서 번호