Admin API인플루언서 백필
구사스 instagram 신청자 PSQL 백필
레거시(구사스) instagram 캠페인 신청자 계정을 모아 PSQL에 없거나 오래된 것만 크롤링·저장을 트리거합니다.
구사스 instagram 신청자 PSQL 백필
레거시(구사스) instagram 캠페인 신청자(progress_table_items)의 계정 링크를 모아, PostgreSQL 인플루언서 프로필(influencer_profile)에 없거나 오래된(3일 초과) 계정만 Kafka(SEND_INFLUENCER)로 보내 크롤링·저장을 트리거합니다.
신사스는 신청 시점에 이 크롤을 자동으로 거는데, 구사스 시절 신청자는 PSQL 데이터가 없어 팔로워수·평균조회수·최근영상이 비어 있습니다. 이 API로 그 데이터를 일괄 적재합니다.
기본값 dryRun=true 입니다. 실제 발행 없이 대상/스킵 건수만 집계하므로, 먼저 숫자를 확인한 뒤 dryRun=false로 실제 실행하세요.
HTTP 요청
POST /ai/admin/influencer-backfill/legacy-instagram
Authorization: Bearer {access_token}Query Parameters
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
dryRun | Boolean | 아니오 | true | true면 enqueue 없이 집계만 |
limit | Integer | 아니오 | (없음) | 처리할 계정 수 상한 (단계적 롤아웃용) |
동작
progress_table_items에서 instagram(sns = 2) 신청자의creator_link를 중복 제거하여 수집- instagram 프로필 URL로 정규화 — 핸들을 못 뽑으면 제외(
skippedInvalid) - PSQL
influencer_profile일괄 조회 — 있고valid_from이 3일 이내면 스킵(skippedFresh), 그 외는 대상(eligible) limit적용dryRun=false면 대상 각각 KafkaSEND_INFLUENCER발행 → Python 크롤러가 프로필·최근영상을 PSQL에 저장
자동 단가협상은 트리거하지 않습니다(applicationId/influenceNo 미포함). 순수 크롤·저장만 수행합니다.
응답
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "백필 처리 완료",
"data": {
"totalDistinct": 1187,
"skippedInvalid": 12,
"skippedFresh": 240,
"eligible": 935,
"enqueued": 935,
"failed": 0,
"dryRun": false
}
}| 필드 | 타입 | 설명 |
|---|---|---|
totalDistinct | Integer | 쿼리로 모은 중복 제거된 링크 수 |
skippedInvalid | Integer | 정규화 실패(핸들 못 뽑음)로 제외된 수 |
skippedFresh | Integer | PSQL에 있고 신선(3일 이내)해서 스킵된 수 |
eligible | Integer | 백필 대상 수 (없거나 오래됨) |
enqueued | Integer | Kafka 발행 성공 수 (dryRun=true면 0) |
failed | Integer | Kafka 발행 실패 수 |
dryRun | Boolean | 미리보기 모드 여부 |
에러 응답
| 상태 코드 | 설명 |
|---|---|
401 | 인증 실패 |
403 | ADMIN 권한 필요 |