Skip to content

feat(ai): Ask Chat 예시 질문 10분 로테이션 적용 - #225

Merged
1Seob merged 2 commits into
developfrom
feat/ask-chat-question-rotation
Aug 15, 2026
Merged

feat(ai): Ask Chat 예시 질문 10분 로테이션 적용#225
1Seob merged 2 commits into
developfrom
feat/ask-chat-question-rotation

Conversation

@1Seob

@1Seob 1Seob commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

📝 요약(Summary)

  • 홈을 조회할 때마다 예시 질문이 바뀌던 UX 문제를 개선했습니다.
  • 사용자 ID와 10분 시간 슬롯을 기준으로 동일 구간에는 같은 질문을 제공하고, 다음 구간에는 질문을 결정적으로 갱신합니다.

주요 변경사항

  • 예시 질문 선택 정책
    • 관심사별 질문을 정렬하고 최대 3개 카테고리에서 하나씩 선택합니다.
    • 사용자별 기준 위치와 시간 슬롯 오프셋을 결합해 별도 캐시 없이 결정적으로 순환합니다.
    • 질문 부족과 빈 목록을 안전하게 처리하고 입력 순서에 따른 결과 차이를 제거합니다.
  • 홈 API 연동
    • AskChatSessionServiceCollections.shuffleThreadLocalRandom 기반 선택을 제거했습니다.
    • 예시 질문에만 로테이션을 적용해 대화권과 크리스탈 잔액은 계속 최신값을 반환합니다.
    • Swagger에 사용자별 10분 갱신 정책을 반영했습니다.
  • 테스트
    • 동일 슬롯 유지, 슬롯 경계 갱신, 사용자별 분산, 입력 순서 독립성 및 질문 부족 상황을 검증했습니다.
    • 홈 서비스가 선택기에 위임하고 반환 순서를 응답에 보존하는지 확인했습니다.

검증

  • .\gradlew.bat compileJava 통과
  • AskChatSampleQuestionSelectorTest 6개 통과
  • AskChatSessionServiceTest 5개 통과
  • AskChatSessionControllerTest 5개 통과
  • git diff --check origin/develop...HEAD 통과

🔗 Related Issue

  • Closes:

💬 공유사항

✅ PR Checklist

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

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

1Seob added 2 commits August 15, 2026 20:27
사용자 ID와 10분 시간 슬롯을 기준으로 예시 질문을 순환 선택하고 동일 슬롯 안정성 및 경계 동작을 단위 테스트로 검증함
AskChatSessionService의 요청별 랜덤 선택을 사용자별 10분 결정적 로테이션으로 교체함
@coldsunn

Copy link
Copy Markdown
Collaborator

LGTM!

@1Seob
1Seob merged commit 6e7c448 into develop Aug 15, 2026
1 check passed
@1Seob
1Seob deleted the feat/ask-chat-question-rotation branch August 15, 2026 12:44
1Seob added a commit that referenced this pull request Aug 22, 2026
* feat(ai): Ask Chat 예시 질문 10분 로테이션 적용 (#225)

* feat: Ask Chat 예시 질문 결정적 로테이션 추가

사용자 ID와 10분 시간 슬롯을 기준으로 예시 질문을 순환 선택하고 동일 슬롯 안정성 및 경계 동작을 단위 테스트로 검증함

* feat: Ask Chat 홈에 질문 로테이션 적용

AskChatSessionService의 요청별 랜덤 선택을 사용자별 10분 결정적 로테이션으로 교체함

* feat(stats): 통계 기간 선택과 유형 리포트 차트 확장 (#226)

* feat(stats): 유형 리포트 관심사별 일간 집계 추가

soft delete된 COMPLETED 이력을 누적·일별 통계에 포함하고 최근 7일의 빈 날짜·관심사를 0으로 보정함

* feat(stats): 유형 리포트 관심사별 추이 차트 추가

* feat(stats): 통계 조회 기준 기간 선택 지원

date·week·month 쿼리 파라미터를 ISO 형식으로 해석하고 미래 기간을 차단함. 선택 기간을 끝점으로 일간 7일·주간 5주·월간 5개월 시계열과 요약값을 구성하고 실제
현재 기간을 기준으로 최고 기록 상태를 유지함

* feat(stats): 통계 기간 선택 UI와 요약 카드 추가

일·주·월 통계 페이지 하단에 기간 선택 폼과 현재 기간 복귀 링크를 추가함

* feat(stats): 유형 리포트 활성·누적 통계 분리

현재 활성 COMPLETED 리포트와 재생성 이력을 포함한 전체 누적 생성 수를 별도 집계·ViewModel·차트로 분리함

* fix(infra): 테스트 DB 커넥션 풀 연결 한도 초과 수정

* fix(infra): 개발 배포 Secret 파일 전송 방식 적용 (#227)

대용량 Secret을 개별 Base64 파일로 생성해 SCP로 전달하도록 변경함. 원격 복원·권한 제한·임시 파일 정리와 Secret 검증 후 기존 프로세스 종료 순서를 적용함

* fix(report): 유형 리포트 persona 마크업 노출 방지 (#228)

persona 문자열의 비지원 <marks> 태그를 생성·리라이트·저장 단계에서 검증하고, 기존 레거시 데이터는 조회 응답에서 일반 텍스트로 복원함

* feat(admin): 관리자 페이지에 로그 탭과 필터 화면 추가 (#229)

* feat(admin): 로그 조회 공통 기반과 사용자 필터 추가

관리자 로그 조회에 사용할 페이지 응답 DTO와 닉네임·이메일 검색 조건 정규화 및 최신순 정렬 규칙을 추가함. report_generation_logs, crystal_logs,
ask_chat_wallet_logs의 전체 최신순 조회를 지원하도록 created_at·id 복합 인덱스를 Flyway migration으로 추가함

* feat(admin): 리포트 생성 로그 조회 API 추가

report_generation_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): 크리스탈 로그 조회 API 추가

crystal_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): Ask Chat 대화권 로그 조회 API 추가

ask_chat_wallet_logs를 사용자 닉네임·이메일로 검색하고 최신순 페이지네이션으로 조회하는 관리자 API를 추가함

* feat(admin): 관리자 로그 탭과 필터 화면 추가

/admin/tabs/logs에 주요 로그 하위 탭과 닉네임·이메일 필터, 페이지네이션을 연결하고 Ask Chat Wallet 표는 sessionId만 표시하도록 단순화함
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