Admin APIAdmin Finance API
GET /ai/admin/finance/collab/{collabNo}
캠페인 파이낸스 상세 (요약 + 통합 타임라인)
캠페인 파이낸스 상세
캠페인의 누적 입금·LOCK 요약과, CreditTransaction + CampaignBudget lock/unlock 이벤트를
시간순으로 머지한 통합 타임라인을 반환합니다.
HTTP 요청
GET /ai/admin/finance/collab/{collabNo}
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
collabNo | Integer | 예 | 캠페인 번호 (Collab.no) |
응답 (200 OK)
{
"status": 200,
"code": null,
"message": "캠페인 상세 조회 완료",
"data": {
"summary": {
"collabNo": 482,
"title": "여름 신상 캠페인",
"productName": "선크림 50ml",
"businessAccountId": 12,
"businessName": "A브랜드",
"totalDeposited": 500000,
"totalLocked": 300000
},
"timeline": [
{
"sourceKey": "creditTx:2071",
"type": "BUDGET_ADJUST",
"amount": -50000,
"balanceAfter": 1500000,
"collabNo": 482,
"candyPaymentId": null,
"occurredAt": "2026-05-28T13:20:00",
"description": "CampaignBudget#88 금액 350000 → 300000",
"reason": "RESHOOT_ADDITIONAL",
"memo": "재촬영 1회 추가",
"reverseOfTxId": null,
"reversed": false,
"createdBy": "admin01"
},
{
"sourceKey": "budgetLock:88",
"type": "BUDGET_LOCK",
"amount": -300000,
"balanceAfter": null,
"collabNo": 482,
"candyPaymentId": null,
"occurredAt": "2026-05-25T16:00:00",
"description": "예산 LOCK (NORMAL)",
"reason": null,
"memo": null,
"reverseOfTxId": null,
"reversed": null,
"createdBy": "system"
},
{
"sourceKey": "creditTx:1985",
"type": "CAMPAIGN_DEPOSIT",
"amount": -500000,
"balanceAfter": 2500000,
"collabNo": 482,
"candyPaymentId": null,
"occurredAt": "2026-05-20T09:00:00",
"description": "어드민 캠페인 입금",
"reason": "META_AD_FEE",
"memo": null,
"reverseOfTxId": null,
"reversed": false,
"createdBy": "admin01"
}
]
}
}타임라인은 occurredAt 내림차순(최신 → 과거) 으로 정렬됩니다.
budgetLock:{id} row 의 amount 는 LOCK 금액의 음수(예약 표시) 입니다.
budgetUnlock:{id} row 는 status=UNLOCKED 인 budget 에만 추가됩니다.
Response 스키마
summary = CollabFinanceSummaryDto (search 응답 참조)
timeline[] = FinanceTimelineEntryDto[] (get-business 응답 참조)
에러
| 상태 | 설명 |
|---|---|
404 | 캠페인을 찾을 수 없음 |