📊 개발 단계 및 우선순위
해당하는 우선순위에 체크해 주세요.
🎯 도메인 연관 관계 및 완료 조건 (Definition of Done)
이 이슈가 완료되기 위해 충족해야 하는 조건들을 나열해 주세요.
💻 상세 작업 내용
클린 아키텍처(Clean Architecture) 구조에 맞춰 작업이 발생하는 계층에 체크하고 세부 내용을 작성해 주세요.
🔔 이벤트 처리
🕒 스케줄러 / 보정 작업
🚨 검증 및 예외 처리 (TestCode)
정상 작동뿐만 아니라, 잘못된 값이나 예외 상황에 대한 처리를 꼼꼼히 확인해 주세요.
🔗 참고 자료
📊 개발 단계 및 우선순위
P0: 서비스 핵심 동작P1: 운영 및 확장 기능P2: 부가적인 고도화 기능🎯 도메인 연관 관계 및 완료 조건 (Definition of Done)
연관 도메인: study_timer, ranking설명: 순공시간 세션 종료 시 누적 학습 시간을 일별 통계에 반영하고, 트랜잭션 커밋 이후 랭킹 점수에 반영한다.daily_study_stats에 회원/날짜 기준으로 학습 시간이 upsert 된다.StudySessionEndedEvent가 발행된다.💻 상세 작업 내용
Model/Policy: 세션 종료 시 누적 학습 시간 및 delta 계산 규칙 확인UseCase/Command: 기존 세션 종료 유스케이스 흐름에서 종료 결과와 학습 시간 delta를 다룰 수 있도록 정리Service:EndStudyTimerSessionService에서 세션 종료 저장,daily_study_statsupsert,StudySessionEndedEvent발행 처리Port/Adapter: 랭킹 점수 증가를 위한 Redis adapter 또는 ranking port 연동Repository:daily_study_stats회원/날짜 기준 조회 및 upsert 처리Controller: 기존 세션 종료 API 응답 형태 유지 여부 확인response/request: API 응답값 변경이 없다면 기존 DTO 유지🔔 이벤트 처리
StudySessionEndedEvent정의memberIdstudyDatedeltaStudySecondsendedAtRankingScoreUpdater에서AFTER_COMMIT이벤트로 수신🕒 스케줄러 / 보정 작업
RankingRebuildScheduler추가 검토daily_study_stats기준으로 Redis 랭킹 점수 재계산🚨 검증 및 예외 처리 (TestCode)
daily_study_stats가 정상 upsert 되는지 테스트StudySessionEndedEvent가 발행되는지 테스트🔗 참고 자료