Skip to content

[리팩토링] ChatMessage.category 필드 타입 안전성 확보 (String → Enum 또는 수신 경계 정규화) #135

Description

@coderabbitai

배경

PR #134 (feat/chat-category) 리뷰 중 ChatMessage.category 필드가 자유 문자열(String)로 관리되고 있어, 오타·대소문자·공백 차이 등으로 통계 버킷이 오염될 수 있다는 문제가 제기되었습니다.


문제 상황

현재 category 필드는 String 타입으로, FastAPI가 어떤 문자열을 전달하느냐에 따라 DB에 그대로 저장됩니다.
통계 집계 시 DIRECTION / direction / Direction 등이 서로 다른 버킷으로 취급될 위험이 있습니다.


선택지

Case 1: FastAPI에서 카테고리를 고정적으로 전달하는 경우

  • Java 쪽: enum ChatCategory { DIRECTION, INFORMATION, OPERATION, SMALLTALK, GENERAL, ERROR } 생성 후 @Enumerated(EnumType.STRING) 적용
  • FastAPI 쪽: 동일한 값 집합을 Enum으로 관리
  • 카테고리 추가·변경 시 양쪽 동기화 필요

Case 2: FastAPI에서 카테고리를 동적으로 전달하는 경우

  • String 필드 유지
  • 저장 경계에서 normalizeCategory() 정규화 로직 적용 (알 수 없는 값 → GENERAL fallback)

액션 아이템

  • FastAPI 카테고리 전달 방식 확정 (고정 vs. 동적)
  • 확정 방식에 따라 위 두 가지 선택지 중 하나 적용
  • DB 마이그레이션 또는 저장 로직 정규화 코드 추가

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions