Admin APIAdmin Dashboard API
GET /ai/admin/dashboard/{campaignNo}/cross-campaign-applicants
타 캠페인 신청자 불러오기
타 캠페인 신청자 불러오기
여러 소스 캠페인의 신청자를 합산 조회합니다. 동일 인플루언서 중복 제거 후 기협업자 → 기노출자 → 일반 → 기등록자 순으로 정렬하여 반환합니다.
HTTP 요청
GET /ai/admin/dashboard/{campaignNo}/cross-campaign-applicants
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
campaignNo | Long | 예 | 현재 캠페인 번호 |
Query Parameters
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
sourceCampaignNos | List<Integer> | 예 | - | 소스 캠페인 번호 목록 (쉼표 구분, 예: 100,200,300) |
excludeExposed | Boolean | 아니오 | false | true이면 기노출자 제외 (기등록자는 항상 포함) |
excludeCollaborated | Boolean | 아니오 | false | true이면 기협업자 제외 (기등록자는 항상 포함) |
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "타 캠페인 신청자 조회 성공",
"data": {
"items": [
{
"influenceNo": 123,
"influenceName": "크리에이터A",
"influenceProfileImage": "https://...",
"influenceTel": "010-1234-5678",
"influenceEmail": "creator@email.com",
"followerCount": "15200",
"averageViewCount": "3500",
"influenceRankScore": "A",
"creatorCategories": ["BEAUTY", "FASHION"],
"flags": [
{ "flagId": 1, "flagName": "우수 크리에이터", "color": "#FF0000" }
],
"applicantStatus": "COLLABORATED",
"alreadyRegistered": false
},
{
"influenceNo": 456,
"influenceName": "크리에이터B",
"influenceProfileImage": "https://...",
"influenceTel": "010-9876-5432",
"influenceEmail": "creator2@email.com",
"followerCount": "8500",
"averageViewCount": null,
"influenceRankScore": "B",
"creatorCategories": [],
"flags": [],
"applicantStatus": "GENERAL",
"alreadyRegistered": true
}
],
"totalCount": 2
}
}응답 필드 설명
data 객체
| 필드 | 타입 | 설명 |
|---|---|---|
items | Array | 신청자 목록 |
totalCount | Integer | 전체 항목 수 |
items 배열 내 각 항목
| 필드 | 타입 | 설명 |
|---|---|---|
influenceNo | Integer | 인플루언서 번호 |
influenceName | String | 인플루언서 이름 |
influenceProfileImage | String | 프로필 이미지 URL |
influenceTel | String | 전화번호 |
influenceEmail | String | 이메일 |
followerCount | String | 팔로워 수 |
averageViewCount | String | 평균 조회수 |
influenceRankScore | String | 랭크 점수 (priceTier) |
creatorCategories | Array<String> | 크리에이터 카테고리 (SNS 자동분류 auto_category_categories, CategoryType 코드 다중값). 프로필 미매칭·미분류 시 빈 배열 |
flags | Array | 플래그 목록. 전역·캠페인을 모두 합친 값 |
globalFlags | Array | 전 캠페인 공통 비고. 여러 캠페인을 가로지르는 목록이라 캠페인 전용 비고는 내려가지 않는다 |
applicantStatus | String | 소스 캠페인 이력 상태 (아래 참고) |
alreadyRegistered | Boolean | 현재 캠페인에 이미 등록된 신청자 여부 |
applicantStatus 값
| 값 | 설명 |
|---|---|
COLLABORATED | 기협업자 — 소스 캠페인에서 selectionStatus=SELECTED |
EXPOSED | 기노출자 — 소스 캠페인에서 adminVisible=true (미선정) |
GENERAL | 일반 — 위 해당 없음 |
정렬 순서
기협업자 → 기노출자 → 일반 → 기등록자 (alreadyRegistered=true) 순으로 정렬됩니다. 기등록자는 항상 목록 맨 뒤에 위치합니다.
제외 필터 동작
excludeExposed=true 또는 excludeCollaborated=true 필터는 alreadyRegistered=false인 신청자에게만 적용됩니다. 기등록자는 필터 설정과 무관하게 항상 포함됩니다.
중복 제거 로직
동일 인플루언서가 여러 소스 캠페인에 신청했을 경우 1개 항목만 표시됩니다. applicantStatus는 OR 조건으로 병합됩니다 (예: 한 캠페인에서 SELECTED, 다른 캠페인에서 일반이면 → COLLABORATED).
크리에이터 카테고리 필터
이 응답은 페이지네이션 없이 전체 신청자를 반환하므로, 크리에이터 카테고리(creatorCategories) 필터는 별도 서버 파라미터 없이 프론트엔드에서 클라이언트 사이드로 처리합니다. 서버는 필터 재료가 되는 creatorCategories 값만 내려줍니다. (캠페인 카테고리 필터는 소스 캠페인 목록이 페이지네이션되므로 GET /source-campaigns의 category 서버 파라미터로 처리합니다.)