Admin APIAdmin Dashboard API
POST /ai/admin/dashboard/{campaignNo}/demo-applicants/bulk-links
데모(목업) 후보 벌크 링크 등록 — 링크만으로 자동 채움
데모(목업) 후보 벌크 링크 등록
인스타그램 링크만 벌크로 넣으면, 각 링크마다 데모 후보 행을 즉시 만들고
프로필·팔로워·카테고리·적합도(matchScore)·추천사(recommendReason)를 백그라운드로 자동 채웁니다.
수기 등록처럼 값을 손으로 넣지 않아도 됩니다.
개념·렌더 규칙·ID 규칙은 데모(목업) 후보 연동 가이드를 참고하세요.
동작 방식 (중요 — 동기 응답이 아닙니다)
이 API는 두 단계로 나뉩니다.
- 즉시(동기): 링크마다 데모 후보 셸 행을 만들어
createdDisplayIds로 바로 돌려줍니다. 이 시점엔accountLink·username만 채워져 있고 나머지는null입니다. - 백그라운드(비동기): 크롤 → 프로필·게시물 리드백 → 적합도(
matchScore) → 추천사(recommendReason) 순서로 채워집니다. 한 건당 수십 초 걸릴 수 있습니다.
따라서 응답을 받은 뒤 진행테이블/리스트 조회를 폴링하면
값이 null에서 실제 값으로 차오르는 것을 볼 수 있습니다.
matchScore와 recommendReason이 모두 채워지면 그 후보의 채움이 완료된 것입니다.
HTTP 요청
POST /ai/admin/dashboard/{campaignNo}/demo-applicants/bulk-links
Authorization: Bearer {access_token}
Content-Type: application/jsonPath Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
campaignNo | Long | 예 | 캠페인 번호 |
Request Body
{
"instagramLinks": [
"https://www.instagram.com/somoon_smm/",
"@jay.pm.ai",
"example_handle"
],
"forceCrawl": false
}| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
instagramLinks | String[] | 예 | 인스타그램 링크 목록. URL·@username·username 모두 지원. 최대 30개. |
forceCrawl | Boolean | 아니오 | true면 3일 이내 크롤 캐시가 있어도 강제 재크롤(유료). 기본 false. |
링크는 서버가 정규화합니다. @ 제거·소문자화·쿼리스트링/슬래시 제거 후 첫 경로 세그먼트를
핸들로 뽑아 https://www.instagram.com/{handle} 형태로 저장합니다. 같은 계정을 형식만 달리해
중복 입력하면 하나로 수렴합니다.
응답
성공 응답 (200 OK)
{
"status": 200,
"message": "2건 생성, 채움 발사 2건",
"data": {
"createdDisplayIds": [100000123, 100000124],
"invalid": 0,
"duplicateSkipped": 1,
"enqueued": 2
}
}| 필드 | 타입 | 설명 |
|---|---|---|
createdDisplayIds | Long[] | 생성된 데모 후보의 응답용 ID 목록. dummyItems[].applicationId와 같은 값 |
invalid | int | 인스타 링크로 인식되지 않아 건너뛴 수(예약 경로 p/reel/stories/... 포함) |
duplicateSkipped | int | 이미 담긴 계정이라 건너뛴 수 |
enqueued | int | 백그라운드 채움 파이프라인에 실제로 실린 수 |
무엇이 채워지나
| 필드 | 소스 | 비고 |
|---|---|---|
followerCount·reelsAvgViews·categoryTags·최근 게시물 | 크롤 + 프로필/게시물 리드백 | |
matchScore (적합도) | vectorize-and-score | 데모 대시보드 점수는 이 값입니다(fitScore 아님) |
recommendReason (추천사) | influencer-evaluation | 캠페인에 상품 상세(image_analysis)가 있을 때만 |
추천사는 원래 "적합/부적합 스크리닝 평가"입니다. 캠페인과 결이 맞지 않는 크리에이터에는 "적합하지 않다 / 연관성이 낮다"류 문장이 나올 수 있습니다(의도된 정상 동작). 쇼케이스 품질이 중요하면 캠페인에 잘 맞는 계정을 골라 넣으세요. 추천사는 한국어로 생성됩니다.
한계·주의
- 한 번에 최대 30개. 링크당 유료 크롤이 유발되므로 상한을 둡니다.
- 게시물이 충분한 실계정을 넣어야 정상 동작합니다. 최근 게시물이 3개 미만이면 적합도(
matchScore)가 산정되지 않고null로 남습니다(정상). 비공개·삭제·존재하지 않는 계정은 채워지지 않습니다. - 캠페인에 상품 상세(image_analysis)가 없으면 추천사(
recommendReason)는 비어 있습니다. - 채움은 값이
null인지 여부로 진행 상태를 판단합니다(별도 상태 필드 없음). 실패로 비어 있는 것과 아직 채우는 중인 것은 화면상 같게 보일 수 있습니다. - 등록된 후보는 기본적으로 광고주에게 노출되지 않습니다. 채움 확인 후 노출 토글로 공개하세요.