배경 / 목표
- prod·dev가 같은 Gemini API 키를 쓰는데 분리한다.
- prod만 유저별 일일 토큰 상한을 두고(백오피스에서 조절), dev는 무제한.
- 백오피스에 대화방별 토큰 사용량 페이지 신설 — prod·dev 둘 다.
전제 (스키마 선행)
generation_log에 지금 member_id·conversation_id가 없어 유저별·대화방별 집계가 불가.
→ generation_log에 member_id + conversation_id 추가(마이그레이션)하고, 생성 기록 시 채운다.
작업
Part 1 — API 키 분리 (ops, 코드 변경 없음)
GEMINI_API_KEY는 이미 dev/prod GitHub Environment secret으로 주입됨. prod secret만 새 키로 교체하면 분리 완료.
- 새 prod 키는 팀이 Google AI Studio에서 발급 → prod Environment secret 갱신.
Part 2 — prod 유저별 일일 토큰 상한 (백오피스 조절)
- 상한값을 DB에 저장(LlmSettings처럼) + 백오피스에서 수정.
- prod에서만 활성(dev는 무제한) — Spring profile 기준.
- 생성 전에 유저의 오늘(KST) 누적 토큰 확인 → 초과면 Gemini 호출 전 차단.
- 어떤 토큰을 셀지: 총 토큰(used_tokens) 기준.
Part 3 — 대화방별 토큰 사용량 페이지 (prod·dev)
- 새 백오피스 페이지. 대화방 목록에 대화방별로:
- 유저 메시지 수 / 감정에이전트 메시지 수
- 카드 생성 여부
- 소모 토큰 수 / 캐시 토큰 수
- generation_log(conversation_id)로 토큰 합산, messages(sender_type)로 메시지 수, cards로 카드 여부.
범위 밖
배경 / 목표
전제 (스키마 선행)
generation_log에 지금member_id·conversation_id가 없어 유저별·대화방별 집계가 불가.→ generation_log에 member_id + conversation_id 추가(마이그레이션)하고, 생성 기록 시 채운다.
작업
Part 1 — API 키 분리 (ops, 코드 변경 없음)
GEMINI_API_KEY는 이미 dev/prod GitHub Environment secret으로 주입됨. prod secret만 새 키로 교체하면 분리 완료.Part 2 — prod 유저별 일일 토큰 상한 (백오피스 조절)
Part 3 — 대화방별 토큰 사용량 페이지 (prod·dev)
범위 밖