지금까지 실제로 진행한 내용을 반영하면, 기존 계획을 조금 업데이트하는 게 좋습니다. **P1의 Credit 관련 기반은 거의 완료되었고, 이제 P1-B 이미지 정책부터 시작하는 단계**입니다.

### 전체 진행 상태

```text
P1 — 플랫폼 / Credit 기반
│
├─ P1-A Credit 기반                         ✅ 완료
│  ├─ Credit 정책 / 단위
│  ├─ USD → Credit 계산
│  ├─ Markup
│  ├─ Provider/Model 가격 관리
│  ├─ Cached Input 가격
│  ├─ 환율 관리
│  ├─ 월 Credit
│  ├─ 충전 Credit
│  ├─ 월 → 충전 Credit 순차 차감
│  ├─ Credit transaction
│  ├─ AI usage log
│  ├─ 관리자 Credit 현황/조정
│  ├─ AI 사용내역
│  ├─ 월 Credit 기간 snapshot
│  └─ 요청별 Pricing snapshot
│
├─ P1-A1 Credit 충전                       ✅ 완료
│  ├─ Credit 상품
│  ├─ 충전 주문
│  ├─ 계좌입금
│  ├─ 입금자명
│  ├─ 관리자 승인/취소
│  ├─ 중복 지급 방지
│  ├─ 사용자 충전 UI
│  └─ 관리자 충전 요청 관리
│
└─ P1-B 이미지 AI 플랫폼 설정              ← 다음
```

## P1-B — 이미지 AI 정책/플랜 관리

여기부터 진행하면 됩니다. 저는 두 단계 정도로 나누는 걸 추천합니다.

**P1-B1 — 이미지 모델/정책 기반**

```text
AI 이미지 기능 ON/OFF 정책
이미지 Provider/Model 관리 구조
모델 활성/비활성
모델별 Pricing 방식 준비
기본 이미지 모델
향후 BFL 외 Provider 확장 가능한 구조
```

**P1-B2 — 플랜 연결**

```text
플랜별 AI 이미지 사용 ON/OFF
플랜별 허용 이미지 모델
플랜별 기본 이미지 모델
관리자 설정 UI
권한 검증 구조
```

여기까지 끝나면 P1 완료입니다.

---

## P2 — Image Core / BFL

P1-B의 설정 구조를 실제 BFL API에 연결합니다.

```text
BFL API Key / config

ImageProvider interface
ImageProviderManager
FluxProvider

BFL 모델 연결
├─ FLUX Klein 계열
├─ Pro
└─ Flex
   ※ 실제 사용할 최신 모델명 기준으로 설정

모델별 사용량
↓
USD provider cost
↓
billable cost
↓
기존 AiCreditCalculator
↓
Credit 차감

Image usage log
Credit transaction 연결

Tenant 이미지 생성 endpoint

플랜 검증
├─ 이미지 사용 가능 여부
├─ 허용 Provider/Model
└─ 기본 모델
```

여기서 **새로운 Credit 시스템을 만들 필요는 없습니다.**

OpenAI와 똑같이:

```text
OpenAI ─┐
        ├→ 공통 Credit
BFL ────┘
```

으로 연결하면 됩니다.

---

## P3 — 테넌트 AI 이미지 UI

백엔드가 완성되면 실제 사용자 기능입니다.

```text
AI 이미지 생성 버튼
        ↓
AI 이미지 모달
├─ Prompt / 채팅형 입력
├─ 허용 모델 선택
├─ 생성
├─ Preview
├─ Prompt 수정
└─ 재생성
        ↓
이미지 저장
        ↓
기존 image_url → uploadImage()
        ↓
에디터 삽입
```

기존에 만들어둔 이미지 생성/업로드 모달 구조는 최대한 재사용합니다.

---

## P4 — 안정화

마지막으로 전체 AI 시스템을 같이 테스트합니다.

```text
[Credit]
월 → 충전 Credit 차감
Credit 부족
충전 Credit 이월
월 기간 변경
플랜 변경

[Pricing]
Markup 변경
모델 가격 변경
Pricing snapshot
과거 usage 가격 유지

[OpenAI]
Input
Cached Input
Output
Reasoning

[Image]
모델 권한 우회
이미지 ON/OFF
허용되지 않은 모델 요청
기본 모델
API 실패 시 미차감

[동시성]
동시 AI 요청
잔액 race condition
중복 transaction

[통합]
OpenAI 글쓰기
        ↓
       같은
    Credit 잔액
        ↑
BFL 이미지 생성

Free + 충전 Credit

Starter
월 Credit + 충전 Credit
혼합 차감
```

### 그 이후

P4까지 끝나면 AI 시스템의 기본 골격은 상당히 완성됩니다. 이후에는 별도 단계로 두는 게 좋습니다.

```text
P5 — 결제 확장
├─ 카드 PG
├─ 결제 webhook
├─ 환불
└─ Credit 자동 지급

P6 — 구독
├─ 유료 플랜
├─ 정기결제
├─ 플랜 변경
├─ 결제 실패
└─ 월 Credit 갱신

P7 — 추가 AI
├─ Video
├─ Audio
└─ 다른 AI Provider
```

따라서 **지금 정확한 다음 작업은 `P1-B1 — 이미지 Provider/Model 정책 기반`**으로 잡으면 됩니다.

그리고 P1-A에서 Credit 구조를 상당히 탄탄하게 만들어놨기 때문에, 앞으로는 **이미지용 Credit 시스템을 새로 만드는 게 아니라 기존 Credit 시스템에 Image usage를 연결하는 작업**이 핵심입니다.
