Skip to content

[FEAT] chat 기록 redis에 저장 #120

@hwangtae123

Description

@hwangtae123

📝 Description

책임 분리를 위해 저는 Core를 선택하겠습니다.
Core = 데이터 오너 (DB 저장 + Redis 저장 + 세션 관리)
FastAPI = AI 워커 (Redis 읽기 + LLM 호출 + 답변 생성)

  1. 현재 Core에서 DB에 ChatMessage를 저장하고 있음. DB에 저장할 때 같은 시점에 Redis에도 저장 ! -> 정합성 보장

  2. 세션 생명주기가 Core에 있음
    세션 생성/종료 = Core
    메시지 카운트 = Core
    Redis TTL 관리도 Core에서 해야 세션 상태랑 일치함

  3. 실패 처리 간편

  • Core 저장 방식:
    FastAPI 응답 받음 → DB 저장 + Redis 저장 (한 트랜잭션)
    FastAPI 실패 → fallback 응답 → fallback도 Redis에 저장

  • FastAPI 저장 방식:
    FastAPI가 Redis 저장 → Core에 응답 → Core가 DB 저장
    근데 Core → DB 저장 실패하면? Redis에는 있고 DB에는 없는 유령 데이터 발생

Redis (하나의 인스턴스)
├── refresh:admin-001 → 리프레시 토큰 (TTL: 7일)
├── refresh:admin-002 → 리프레시 토큰
├── chat:550e8400-... → 대화 내역 (TTL: 30분) <- 안전장치, 키오스크 종료 시 redis 삭제
├── chat:661f9500-... → 대화 내역
└── ...

채팅관리용 Redis를 하나 더 파면 오히려 관리하기 복잡할 것.

To-Reviwer

@yyuneu

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions