Skip to content

refactor(ai): Ask Chat 화면 계약 및 집계 로직 정리 - #206

Merged
1Seob merged 10 commits into
developfrom
refactor/ask-chat
Jul 28, 2026
Merged

refactor(ai): Ask Chat 화면 계약 및 집계 로직 정리#206
1Seob merged 10 commits into
developfrom
refactor/ask-chat

Conversation

@1Seob

@1Seob 1Seob commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

📝 요약(Summary)

  • 최종 기획에 맞춰 Ask Chat 홈, 세션 시작, 충전, 히스토리 응답 계약을 정리했습니다.
  • 홈 화면 예시 질문 저장소와 마이그레이션을 추가하고, 프론트에서 필요한 값만 내려주도록 응답을 축소했습니다.
  • 성공 답변 수(answered_turn_count)가 실제 DB에 반영되지 않던 문제를 보정했습니다.

주요 변경사항

  • Ask Chat 홈/세션 API

    • GET /ask-chat/home 응답을 남은 메시지 수, 닉네임, 크리스탈 수, 예시 질문 중심으로 재구성
    • POST /ask-chat/sessions에서 최초 질문 입력과 세션 생성을 함께 처리하도록 변경
    • 세션/충전 응답에서 화면에 불필요한 필드 제거
  • 예시 질문 저장소

    • ask_chat_sample_questions 테이블 및 Flyway 마이그레이션 추가
    • 관심사 코드 기반 예시 질문 조회 repository 추가
    • 예시 질문 응답 DTO 추가
  • 히스토리 응답 정리

    • 히스토리 목록 응답에서 불필요한 empty, answeredTurnCount, createdAt 필드 제거
    • 최근 대화한 세션이 우선 노출되도록 정렬 기준 정리
    • 상세 조회의 readOnly 값을 세션 상태와 15회 제한 기준으로 계산
  • 대화권/크리스탈 응답

    • Ask Chat 충전 비용을 200 크리스탈로 변경
    • 충전 응답을 crystalBalance, remainingMessageCount 중심으로 축소
  • 집계 안정성

    • 성공 답변 후 answered_turn_count를 명시적 update query로 갱신
    • 15회 도달 시 세션 종료 상태가 함께 반영되도록 보정
    • 기존 mock 기반 테스트가 놓친 DB 최종 상태를 repository 테스트로 보강
  • 테스트

    • 홈/세션/충전/히스토리 API 및 서비스 테스트 수정
    • 예시 질문 repository 테스트 추가
    • 성공 답변 수 갱신 repository 테스트 추가

🔗 Related Issue

  • Closes:

💬 공유사항

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • PR 제목을 커밋 메시지 컨벤션에 맞게 작성했습니다.

1Seob added 10 commits July 28, 2026 19:45
Ask Chat 대화권 10회 충전에 필요한 크리스탈 비용을 30에서 200으로 변경하고, Swagger 설명과 응답 예시 및 관련 테스트 기대값을 함께 갱신
GET /ask-chat/home 응답을 홈 화면에 필요한 remainingMessageCount, nickname, crystalBalance, sampleQuestions
중심으로 재구성하고, 예시 질문을 ask_chat_sample_questions 테이블과 interests.code 기반 category 응답으로 관리하도록 정리
AskChatTurnChargeResponse에서 충전 수량, 차감 크리스탈, 무료/유료 대화권 세부 잔액을 제거하고 crystalBalance와
remainingMessageCount만 반환하도록 정리
POST /ask-chat/sessions에서 첫 질문 content를 함께 받아 새 세션 생성 후 AskChatMessageCommandService.sendQuestion
흐름을 재사용하도록 변경하고, AskChatSessionResponse에서 createdAt과 endedAt 제거
GET /ask-chat/histories/{sessionId} 응답의 readOnly를 고정값이 아닌 세션 상태와 answeredTurnCount 기준으로 계산하도록 수정
누적 답변 20개 이상 조건을 POST /ask-chat/sessions가 아닌 GET /ask-chat/home에서 검증하도록 이동하고 Swagger 설명과 서비스 테스트를 갱신
성공 답변 후 answeredTurnCount 갱신을 엔티티 dirty checking이 아닌 명시적 update query로 처리하고, 갱신된 세션을 재조회하도록 수정해 bulk
update 이후 세션 집계가 누락되는 문제를 보정
@coldsunn

Copy link
Copy Markdown
Collaborator

코드 보니까 노력의 흔적이 보입니다! 진짜 고생하셨어요!!!! 머지 고고~

@1Seob
1Seob merged commit fbe4883 into develop Jul 28, 2026
1 check passed
@1Seob
1Seob deleted the refactor/ask-chat branch July 28, 2026 17:12
@1Seob 1Seob mentioned this pull request Jul 28, 2026
1 task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants