Skip to content

[feat] prod/dev API 키 분리 · 유저 일일 토큰 상한 · 대화방별 사용량 페이지 #60

Description

@theminjunchoi

배경 / 목표

  1. prod·dev가 같은 Gemini API 키를 쓰는데 분리한다.
  2. prod만 유저별 일일 토큰 상한을 두고(백오피스에서 조절), dev는 무제한.
  3. 백오피스에 대화방별 토큰 사용량 페이지 신설 — 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로 카드 여부.

범위 밖

  • 명시적 캐싱(별도), Cloudflare 등

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions