Glowb Dev Docs
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

파라미터타입필수기본값설명
dryRunBoolean아니오truetrue면 enqueue 없이 집계만
limitInteger아니오(없음)처리할 계정 수 상한 (단계적 롤아웃용)

동작

  1. progress_table_items에서 instagram(sns = 2) 신청자의 creator_link를 중복 제거하여 수집
  2. instagram 프로필 URL로 정규화 — 핸들을 못 뽑으면 제외(skippedInvalid)
  3. PSQL influencer_profile 일괄 조회 — 있고 valid_from이 3일 이내면 스킵(skippedFresh), 그 외는 대상(eligible)
  4. limit 적용
  5. dryRun=false면 대상 각각 Kafka SEND_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
  }
}
필드타입설명
totalDistinctInteger쿼리로 모은 중복 제거된 링크 수
skippedInvalidInteger정규화 실패(핸들 못 뽑음)로 제외된 수
skippedFreshIntegerPSQL에 있고 신선(3일 이내)해서 스킵된 수
eligibleInteger백필 대상 수 (없거나 오래됨)
enqueuedIntegerKafka 발행 성공 수 (dryRun=true면 0)
failedIntegerKafka 발행 실패 수
dryRunBoolean미리보기 모드 여부

에러 응답

상태 코드설명
401인증 실패
403ADMIN 권한 필요

API 테스트

On this page