오늘 학습 내용 ✅
오늘의 목표
테이블 명세서 작성
ERD 작성
API 명세서 작성
테이블 명세서

ai 사용 최적화
- 모델에 프론트엔드가 사용하기 위한 특정 컬럼을 추가하여 API 호출을 줄인다.
status와 error_message가 없으면 생기는 문제
-
DB에 상태 저장을 하지 않는 경우
- AI가 리뷰에 욕설이 많아서 요약 못 하는 경우
-
DB에 상태 저장을 안 한다면?
- A 유저가 접속 -> AI 요청 -> AI: "욕설을 감지하여 거부"
- B 유저가 접속 -> DB에 요약본이 없을 경우 -> AI 요청 -> AI: "욕설을 감지하여 거부"
-
결과
- 페이지가 새로고침 될 때마다 계속 유료 API를 호출, 돈은 돈대로 나가고 결과는 계속 실패함
-
DB에 status='BLOCKED'라고 저장한다면
- A 유저 접속 -> AI 요청 -> AI 거부 -> DB에 'BLOCKED' 저장
- B 유저 접속 -> DB 확인 -> status 확인 -> API 호출 없이 바로 에러 메시지 노출
-
결과
- API 호출이 없기 때문에 API 비용이 발생하지 않음
FE 사용 방법
status
- COMPLETED
- DB에 저장된 game_riview_summaries테이블의 text를 보여줌
- PROCESSING
- 스켈레톤 UI 또는 "AI가 읽고 있어요..." 애니메이션 노출
- BLOCKED
- 자동 재요약 시도 X
- error_message("부적절한 내용...")를 붉은 박스로 보여줌
- FAILED
- 일시적 오류이므로, 사용자가 누를 수 있는
[새로고침] 버튼을 보여줌
[status & error_message?]
1. status = 'BLOCKED' (부적절 콘텐츠)
- 중요: 이 상태일 경우, 프론트엔드는 절대 재요약 API를 자동 호출하면 안 됨.
- 이유: 호출해봤자 AI가 또 거부하므로 비용만 낭비됨. 즉시 저장된 에러 메시지 노출.
2. status = 'FAILED' (타임아웃, 네트워크 오류)
- 프론트엔드는 사용자에게 [재시도 버튼]을 노출하여 수동으로 다시 요청하게 유도.
ai 테이블이 필요한 이유
- AI 모델 자체를 위한 테이블은 필요 없지만, AI가 만든 결과물을 저장할 테이블은 반드시 필요
- 한 번 생성된 요약본을 DB에 저장(캐싱)해두고
- 다음 접속 시에는 DB에서 바로 꺼내 보여주는 전략을 사용하기 위해서 테이블 추가
[Table: GAME_REVIEW_SUMMARIES]
1. text (요약 내용)
- Gemini API의 응답 결과(Response)를 그대로 저장
- 프론트엔드에서 불렛 포인트 처리를 하기 위해 원문 텍스트를 유지
2. status (처리 상태) - REQ-AI-005, 009 대응
- 'COMPLETED': 정상 요약 완료. 화면에 노출.
- 'BLOCKED': 욕설/비방 등으로 인해 AI가 거부함. 화면에 "요약 불가" 메시지 노출.
- 'FAILED': 타임아웃/네트워크 오류. 재시도 버튼 노출 대상.
- 'PROCESSING': 스켈레톤 UI 또는 "AI가 읽고 있어요..." 애니메이션 노출
3. count (기준 리뷰 수) & created_at (생성일시)
- 재요약 로직을 위한 판단 기준
- ex. [ 현재 게임의 총 리뷰 수 != count]
- ex. [ created_at이 24시간 후 ] -> 다시 Gemini API 호출 후 Update
- 위의 조건 충족X -> DB에 있는 text 반환 (비용/속도 절약)
ERD 작성

API 명세

- 댓글 투표 테이블 (comment_votes)
- 중복 투표 방지를 위해 별도 테이블로 분리, vote_type 컬럼을 두어 'LIKE', 'DISLIKE'를 관리
- 댓글 투표 API
- 투표 생성(POST)과 취소(DELETE)를 구분
- 프론트엔드의 UX를 고려하기 위해서 취소 시에는 변경된 총 좋아요 수를 반환
- AI 요약 API
- 타임아웃(15초) 규정을 명세서에 추가
- 사용자가 보고 있는 페이지의 리뷰만 요약하기 위해 Query Parameter로 page 정보를 받도록 설계
- ex.
POST /api/v1/communitys/{game_id}/reviews/summary?page=1
새롭게 알게된 내용 ✅
플로우차트란?
- 일의 순서를 알기 쉽게 그림으로 그린 지도
- 어떤 문제 해결이나 업무 처리가 진행되는 과정을 약속된 기호(도형)와 화살표로 연결해 놓은 그림
- 네모: 해야 할 행동이나 처리
- 마름모: 판단이나 질문
- 화살표: 일의 진행 방향
오늘 발생한 문제(발생 했다면) ✅