Admin APIDM 자동화
프로필 수집 시작
계정 URL 엑셀을 업로드해 Instagram 프로필 수집과 추천금액 계산을 시작합니다.
프로필 수집 시작
계정 URL 엑셀을 업로드해 Instagram 프로필 정보 수집과 팔로워수 기준 추천금액 계산을 시작합니다.
비동기 API입니다. 응답은 jobId만 즉시 돌려주고, 실제 수집은 파이썬 RQ 워커가 백그라운드에서 진행합니다.
계정 수가 많으면 수 시간이 걸리므로(수천~수만 계정이면 2시간 이상) 잡 상세 조회로 폴링해야 합니다.
HTTP 요청
POST /ai/admin/dm-automation/collect
Authorization: Bearer {access_token}
Content-Type: multipart/form-dataForm Data
| 파라미터 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
file | File | 예 | - | 계정 URL이 담긴 .xlsx 또는 .xls |
sheetName | String | 아니오 | 첫 번째 시트 | 소스 시트명 |
urlColumn | String | 아니오 | 자동 탐지 | 계정 URL 컬럼명 |
startRow | Integer | 아니오 | 전체 | 시작 행 (Excel 행 번호 기준) |
maxWorkers | Integer | 아니오 | 4 | 동시 호출 수. 서버에서 1~8로 보정 |
선택 파라미터를 비워두면 스프링이 파이썬에 아예 전달하지 않아 파이썬 기본값이 적용됩니다. 빈 문자열로 보내 기본값을 덮어쓰는 일은 없습니다.
계정 URL 컬럼 자동 탐지
urlColumn을 지정하지 않으면 아래 후보 컬럼명과 instagram.com 포함 비율을 기준으로 자동 탐지합니다.
| 후보 컬럼명 |
|---|
계정url / 계정 URL |
계정 링크 / 계정링크 |
계정 |
instagram_url / instagram |
인스타그램 링크 / 인스타 링크 |
응답
성공 응답
{
"status": 200,
"code": null,
"message": "수집 작업을 시작했습니다.",
"data": {
"jobId": 42
}
}| 필드 | 타입 | 설명 |
|---|---|---|
jobId | Long | 생성된 잡 번호. 폴링에 사용 |
이 응답을 받은 시점에 잡은 이미 파이썬 큐에 등록되어 RUNNING 상태입니다. 이어서 잡 상세 조회로 폴링하세요.
에러 응답
HTTP 상태는 항상 200이며, 아래 코드는 응답 본문의 status 값입니다.
collect는 잡을 만들고 → 입력 파일을 올리고 → 파이썬 큐에 등록하는 데까지를 요청 스레드에서 동기로 처리합니다. 이 구간에서 실패하면 아래처럼 즉시 에러로 돌아옵니다(잡은 FAILED로 남습니다).
본문 status | code | 설명 |
|---|---|---|
400 | NO_FILE_UPLOADED | 파일이 비어 있음 |
400 | UNSUPPORTED_FILE_FORMAT | 확장자가 xlsx/xls가 아님 |
400 | INVALID_REQUEST | 업로드 파일을 읽을 수 없음 / 서버에 콜백 주소(DM_AUTOMATION_CALLBACK_BASE_URL) 미설정 |
500 | S3_UPLOAD_FAILED | 입력 엑셀을 GCS에 보관하지 못함 (파이썬이 내려받을 수 없어 시작 불가) |
500 | PYTHON_SERVER_ERROR | 파이썬 큐 등록 요청 실패 |
401 | - | 인증 실패 |
403 | - | ADMIN 권한 필요 |
두 종류의 실패를 구분하세요.
- 등록 실패 (위 표): 큐에 넣기 전에 터지므로
collect응답에 즉시 나타납니다. 잡이 생성됐다면FAILED로 남습니다. - 수집 실패 (시트명 오류, URL 컬럼 탐지 실패 등): 워커가 수 시간 뒤 처리 중 겪는 실패라
collect응답에는 나타나지 않습니다. 폴링으로 잡 상태가FAILED가 되고errorMessage에 사유가 담기는 것으로 확인합니다.
처리 규칙
- Instagram URL의
?igsh=...,utm_source=...등 query string 제거 후 표준 계정 링크로 정규화 instagram-looter2 /profile호출, 실패 시/profile2fallback- 둘 다 실패하면 팔로워수
0, 프로필 필드는 빈 값 - 업로드한 원본 엑셀은 GCS에 보관되며, 파이썬 워커가 이 파일을 직접 내려받아 처리합니다 (보관 실패 시
500 S3_UPLOAD_FAILED)
결과 엑셀 컬럼
| 컬럼 | 설명 |
|---|---|
계정 링크 | 정규화된 Instagram 계정 URL |
크리에이터명 | 수작업 입력용 공란 |
팔로워수 | 수집한 follower count |
full_name | Instagram 프로필 full name |
text | Instagram 프로필 bio |
business_email | Instagram business email |
금액 | 팔로워수 기준 추천금액 |