Admin APIAdmin Finance API
Admin Finance API
기업/캠페인 단위 크레딧·예산·결제 통합 관리 API
Admin Finance API
관리자가 기업·캠페인 단위로 크레딧 잔액, 캠페인 예산(LOCK 금액), 카드결제를 통합 조회하고 어드민 권한으로 크레딧/예산을 조정할 수 있는 API입니다.
Base URL: /ai/admin/finance
이 API는 관리자 권한이 필요합니다. (현재 게이트 미적용 — Phase 추가 시 보완 예정)
모델 개요
| 개념 | 저장 위치 | 설명 |
|---|---|---|
| 글로벌 크레딧 | Business.remainCredit | 기업 단위 잔액 |
| 글로벌 거래 이력 | CreditTransaction WHERE collab_no IS NULL | 기업 단위 거래 (결제 충전 / 관리자 충전·차감 등) |
| 캠페인 거래 이력 | CreditTransaction WHERE collab_no IS NOT NULL | 캠페인 단위 거래 (캠페인 입금 / 환급 / BUDGET_ADJUST audit) |
| 캠페인 LOCK 예산 | CampaignBudget | 크리에이터 제안별 LOCK 금액 (status=LOCKED/UNLOCKED) |
엔드포인트 목록
조회
| 메서드 | 경로 | 설명 |
|---|---|---|
GET | /ai/admin/finance/search?q={keyword} | 기업·캠페인 통합 검색 (각 max 20) |
GET | /ai/admin/finance/business/{businessAccountId} | 기업 상세 (요약 + 캠페인 리스트 + 글로벌 타임라인) |
GET | /ai/admin/finance/collab/{collabNo} | 캠페인 상세 (요약 + CreditTransaction + lock/unlock 통합 타임라인) |
변경 (ledger 패턴)
| 메서드 | 경로 | 설명 |
|---|---|---|
POST | /ai/admin/finance/collab/{collabNo}/credit | 기업 잔액 → 캠페인 입금 |
PUT | /ai/admin/finance/credit-tx/{txId} | 크레딧 트랜잭션 수정 (reverse + 새 행) |
DELETE | /ai/admin/finance/credit-tx/{txId} | 크레딧 트랜잭션 삭제 (reverse only) |
PATCH | /ai/admin/finance/budget/{budgetId}/amount | LOCK 예산 금액 수정 (audit row 생성) |
Ledger 규약
수정/삭제는 원본을 변경하지 않고 reverse 행을 추가합니다.
- 원본
CreditTransaction(id=X, amount=A)를 삭제하면:- 새 행
CreditTransaction(transactionType=동일, amount=-A, reverseOfTxId=X)추가 BUDGET_ADJUST가 아니면Business.remainCredit도 같이 보정
- 새 행
- 수정은 위 reverse + 새 본 행 = 두 row 추가 (트랜잭션 1개로 묶임)
- 이미 reverse 된 원본 또는 reverse 행 자체 는 재수정·재삭제 불가 (
IllegalStateException) - UI 에서는
reversed=true인 row 를 strike-through 처리
CreditTransactionReason (어드민 수동 거래 사유)
| 값 | 라벨 |
|---|---|
META_AD_FEE | 메타/페북 광고비 |
GUIDELINE_ADDITIONAL | 가이드라인 추가금 |
RESHOOT_ADDITIONAL | 재촬영/제작 요청 추가금 |
ETC | 기타 (memo 필수) |
시스템 자동 거래(결제 충전·캠페인 자동 입금 등)는 reason=null 로 남습니다.
CreditTransactionType ↔ Timeline Type 매핑
CreditTransactionType | Timeline Type | 비고 |
|---|---|---|
PAYMENT (with candyPaymentId) | CARD_PAYMENT | 카드결제 충전 |
PAYMENT (no candyPaymentId) | CREDIT_ADD | 시스템 충전 |
REFUND | CARD_REFUND | |
CREDIT_ADD | CREDIT_ADD | 관리자 추가 |
CREDIT_DEDUCT | CREDIT_DEDUCT | 관리자 차감 |
CREDIT_USE | CREDIT_USE | 일반 사용 |
CAMPAIGN_DEPOSIT | CAMPAIGN_DEPOSIT | 캠페인 입금 |
CAMPAIGN_REFUND | CAMPAIGN_REFUND | 캠페인 환급 |
CAMPAIGN_LOCK | BUDGET_LOCK | (현재 미사용) |
CAMPAIGN_UNLOCK | BUDGET_UNLOCK | (현재 미사용) |
BUDGET_ADJUST | BUDGET_ADJUST | LOCK 금액 수정 audit |
CampaignBudget 의 LOCK/UNLOCK 은 entity 그대로(createdAt, updatedAt) timeline 에 합쳐집니다.