Glowb Dev Docs
Admin API모집·랭킹 에이전트 API

GET /ai/admin/recruit-agent/campaign/{collabNo}/progress

캠페인 모집 진행 상태 폴링

모집 진행 상태 조회

진행바·"모집 중…" 표시용. 실행 상태 / 이번 실행 확보 인원 / 최근 iteration을 반환합니다.

2026-07-08 변경: 응답 생성이 에이전트 프록시에서 백엔드 직접 조회(에이전트 PG)로 전환됐습니다. 스키마는 기존과 동일하되 ①collected(이번 실행 확보 인원, 아래 참조) 추가 ②rankings_stored(캠페인 역대 누적치 — 진행 표시 오염원) 제거. 진행률 계산 필드는 제공하지 않습니다(계산은 프론트 몫).

HTTP 요청

GET /ai/admin/recruit-agent/campaign/{collabNo}/progress
Authorization: Bearer {access_token}

응답 (200 OK)

running 예시 (2026-07-07 실측):

{
  "status": 200,
  "code": null,
  "message": "진행 상태 조회 완료",
  "data": {
    "campaign_id": 3115,
    "run_id": "9d0d115c",
    "started_at": "2026-07-07 03:16:06.460851",
    "status": "running",
    "params": { "existing_target": 20, "new_target": 80, "api_budget": 50, "min_followers": 5000 },
    "collected": { "existing": 0, "new": 1, "total": 1 },
    "recent_iterations": [
      { "iteration": 1, "discovered": 7, "passed": 1, "decision": "need_more" },
      { "iteration": 0, "discovered": 0, "passed": 0, "decision": "run_started" }
    ]
  }
}

completed 예시:

{
  "data": {
    "campaign_id": 3127,
    "run_id": "9b43dbc3",
    "started_at": "2026-07-07 09:28:26.435178",
    "params": { "existing_target": 1, "new_target": 1, "api_budget": 50, "min_followers": 5000 },
    "status": "completed",
    "stored_count": 12,
    "error": null,
    "finished_at": "2026-07-07 11:49:30.541331",
    "elapsed_sec": 8464,
    "collected": { "existing": 0, "new": 12, "total": 12 },
    "result": { "existing_fit": 0, "newly_found": 12, "total_candidates": 12, "iterations": 1 },
    "recent_iterations": [ "..." ]
  }
}

result는 완료 시 항상 내려갑니다 — 기존 프록시는 에이전트 프로세스 메모리가 살아있을 때만 제공(Job 모드 누락)했지만, 직접 조회는 DB에서 재구성하므로 누락이 없습니다.

collected — 이번 실행 확보 인원 (진행 표시는 이 값 사용)

필드의미
existing기존 풀(글로우비) 크리에이터 확보 수 — 실행 중에는 집계가 없어 0, 완료 후 정확값
new인스타그램 추천(신규 발굴) 확보 수 — 실행 중 실시간 누적, 완료 후 저장분 기준 정본
totalexisting + new 합산

rankings_stored는 제거됐습니다 — 캠페인 역대 실행 누적치라 새 실행 시작 직후에도 과거 값이 그대로 잡혀 "시작하자마자 99%" 오표시의 원인이었습니다. 수집 인원 표시는 collected만 사용하세요 (candidates API의 totalCount도 같은 누적치이므로 진행 표시에 쓰면 안 됩니다).

paramsrunning 시작 시점(iteration 0)부터 항상 포함됩니다 (2026-07-07 에이전트 반영). 목표 인원 키는 모집 시작 응답과 동일한 existing_target(글로우비 풀) + new_target(인스타그램 후보군) 분리형입니다 — 구키 target_count(단일형)는 07-01 개편으로 폐기됐습니다.

진행률 계산 (프론트 가이드)

  • 수집 인원 = collected.total (또는 신규만이면 collected.new), 목표 = params.existing_target + new_target — 진행률은 프론트에서 계산
  • recent_iterations는 진행 로그 표시용 참고: decision 값 = run_started(시작) / in_progress(발굴 중간 기록 — 해시태그 단위) / need_more(한 바퀴 완료, 계속) / goal_reached(목표 달성) / stalled(풀 소진 종료) / run_completed(완료). 행의 passed는 run 내 누적, discovered는 행 종류에 따라 단위가 달라(중간 기록=원시 탐색 풀) 표시용으로 부적합 — 인원 표시는 collected만 사용
  • 참고 소요: 신규 발굴 1 iteration ≈ 1시간 내외. new_target: 0(글로우비 풀만)이면 수 분 내 완료

data.status 폴링 처리

status의미처리
not_started모집 이력 없음
running진행 중계속 폴링 (params+recent_iterations로 진행률 표시)
completed완료폴링 종료 → rankings/candidates 조회
failed실패폴링 종료 → error 표시

result·elapsed_sec는 완료 단계부터 채워집니다. 완료 판정은 status로 하세요. running인데 시작 후 2시간 동안 완료 이벤트가 없으면 죽은 실행으로 간주되어 재트리거가 허용됩니다(stale 가드).

API 테스트

On this page