Skip to content

fix: wire notifications, dashboards, and exam-room creation to real data - #40

Merged
jaejo merged 2 commits into
developfrom
feature/problem-refactor
Jul 23, 2026
Merged

jaejo merged 2 commits into
developfrom
feature/problem-refactor

Conversation

@Junkov0

@Junkov0 Junkov0 commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

작업 내용

알림/대시보드/시험방 생성 전반에 실제 데이터 연동 및 버그 수정

변경 사항

  • 알림 미저장 버그 수정: @TransactionalEventListener가 커밋 타이밍 문제로 알림을 저장하는 척만 하고 실제로는 DB에 반영이 안 되던 문제 수정 (REQUIRES_NEW 트랜잭션 적용)
  • 알림 실시간 수신(SSE) 연동: 프론트에 SSE 연결 로직이 아예 없던 것 추가
  • 메인 대시보드 / 성적 대시보드 실제 데이터 연동: 하드코딩·localStorage 목데이터 제거하고 실제 API로 교체 (오늘 맞춘 퀴즈, 이번 주 정답률, 참여 시험, 랭킹, 풀이 이력 등)
  • 공간(Space) 데이터 격리 버그 수정: 유저가 공간을 옮겨도 예전 공간의 문제 풀이/시험 이력이 새 공간 대시보드에 섞여 보이던 문제 수정
  • 시험방 생성 UX 개선: 1단계(기본정보) → 2단계(문제 출제)로 분리한 마법사 형태로 변경, 일정/응시자 선택 UI 현대화, 응시자 목록에서 관리자 본인 제외
  • 시험방 문제에 카테고리 추가 + AI 자동 출제 지원: 문제은행의 AI 출제 기능을 재사용해 수동 출제와 섞어서 사용 가능 (DB 스키마 변경 포함)

체크리스트

  • 테스트 코드 작성 완료
  • 리뷰어 지정 완료

참고 사항

관련 이슈

Summary by CodeRabbit

  • 새 기능
    • 대시보드에 오늘 풀이 수, 주간 정답률, 완료 시험 수와 공간 주간 랭킹을 표시합니다.
    • 풀이 이력 및 응시 시험 목록·상세 결과를 확인할 수 있습니다.
    • 시험방 생성 마법사와 AI 문제 미리보기 기능을 제공합니다.
    • 문제에 카테고리를 지정하고 조회할 수 있습니다.
    • 실시간 알림 수신과 공간 사용자 목록 조회를 지원합니다.
  • 개선
    • 소셜 로그인 실패 및 계정 정지 상황을 안내하는 모달을 추가했습니다.
    • 사용자 정지 상태를 토글로 관리할 수 있습니다.
    • 문제 풀이와 시험 채점 결과를 서버와 안정적으로 연동합니다.

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1ffce34b-4caf-42ec-90fc-19475b32877f

📥 Commits

Reviewing files that changed from the base of the PR and between c034116 and d5353a0.

📒 Files selected for processing (36)
  • db/schema.sql
  • momogo-api/src/main/java/com/momogo/api/report/ReportController.java
  • momogo-api/src/main/java/com/momogo/api/room/RoomController.java
  • momogo-api/src/main/java/com/momogo/api/user/UserController.java
  • momogo-core/src/main/java/com/momogo/core/domain/notification/listener/NotificationEventListener.java
  • momogo-core/src/main/java/com/momogo/core/domain/problem/service/ProblemServiceImpl.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/DashboardSummaryResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/MyExamDetailResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/MyExamListItemResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/MyExamProblemResultResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/SingleModeHistoryResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/dto/response/SingleModeSummaryResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/service/ReportService.java
  • momogo-core/src/main/java/com/momogo/core/domain/report/service/ReportServiceImpl.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/dto/request/RoomProblemAiCreateRequest.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/dto/request/RoomProblemCreatedRequest.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/dto/request/RoomProblemDraftAiRequest.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/dto/request/RoomProblemUpdateRequest.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/dto/response/RoomProblemResponse.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/entity/RoomProblem.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/mapper/RoomProblemMapper.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/repository/RoomProblemRepository.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/repository/RoomUserRepository.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/repository/UserRoomAnswerRepository.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/service/RoomProblemPersister.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/service/RoomProblemServiceImpl.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/service/RoomService.java
  • momogo-core/src/main/java/com/momogo/core/domain/room/service/RoomServiceImpl.java
  • momogo-core/src/main/java/com/momogo/core/domain/user/entity/UserProblem.java
  • momogo-core/src/main/java/com/momogo/core/domain/user/repository/UserProblemRepository.java
  • momogo-core/src/main/java/com/momogo/core/domain/user/service/UserService.java
  • momogo-core/src/main/java/com/momogo/core/domain/user/service/UserServiceImpl.java
  • momogo-frontend/src/App.tsx
  • momogo-frontend/src/pages/DashboardPage.tsx
  • momogo-frontend/src/pages/SpacePage.tsx
  • momogo-frontend/src/services/api.ts

📝 Walkthrough

Walkthrough

시험방 문제에 카테고리 필수 연결, AI 문제 초안 생성, 풀이 이력 기반 리포트 API, 공간 랭킹, 실시간 알림 SSE, OAuth 오류 모달 및 관리자 사용자 정지 UI가 추가되었습니다.

Changes

시험방 카테고리 및 생성 마법사

Layer / File(s) Summary
카테고리 계약 및 매핑
db/schema.sql, momogo-core/.../room/dto/*, momogo-core/.../RoomProblem.java, momogo-core/.../RoomProblemMapper.java
시험방 문제에 필수 category_id와 외래키를 추가하고, 요청·응답 DTO 및 엔티티 매핑에 카테고리를 반영했습니다.
시험방 생성 및 AI 초안 생성
momogo-core/.../room/service/*, momogo-api/.../room/RoomController.java
시험방 생성 시 카테고리를 검증하고, 관리자 전용 AI 문제 초안 생성 API를 추가했습니다.
시험방 마법사 및 응시자 선택
momogo-frontend/src/pages/SpacePage.tsx, momogo-core/.../user/*, momogo-api/.../user/UserController.java
2단계 시험방 생성, 응시자 다중 선택, 문제 편집 및 AI 미리보기 UI를 구현했습니다.

풀이 이력 및 리포트

Layer / File(s) Summary
리포트 응답 계약과 API
momogo-core/.../report/dto/*, momogo-core/.../report/service/ReportService.java, momogo-api/.../report/ReportController.java
대시보드 요약, 싱글모드 이력, 응시 시험 목록·상세 조회용 DTO와 엔드포인트를 추가했습니다.
풀이 이력 저장 및 조회 기반
momogo-core/.../problem/service/ProblemServiceImpl.java, momogo-core/.../user/*, momogo-core/.../room/repository/*
풀이 결과를 사용자·문제별로 upsert하고, 기간별 집계 및 시험 답안 조회 저장소를 추가했습니다.
리포트 집계 및 공간 랭킹
momogo-core/.../report/service/ReportServiceImpl.java, momogo-frontend/src/pages/SpacePage.tsx
현재 공간 기준 통계와 시험 결과를 조립하고, 공간 주간 랭킹을 조회·표시하도록 변경했습니다.

실시간 알림 및 관리자 화면

Layer / File(s) Summary
알림 트랜잭션과 SSE 클라이언트
momogo-core/.../NotificationEventListener.java, momogo-frontend/src/services/api.ts
알림 후처리를 새 트랜잭션으로 분리하고, SSE 스트림 파싱·토큰 갱신·재연결을 구현했습니다.
대시보드 및 OAuth 오류 UI
momogo-frontend/src/pages/DashboardPage.tsx, momogo-frontend/src/App.tsx
실시간 알림과 서버 통계를 반영하고, 사용자 정지 토글 및 OAuth 오류 모달을 추가했습니다.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant SpacePage
  participant RoomController
  participant RoomServiceImpl
  participant ProblemGenerationService
  SpacePage->>RoomController: AI 초안 요청
  RoomController->>RoomServiceImpl: generateDraftProblems
  RoomServiceImpl->>ProblemGenerationService: 문제 생성 요청
  ProblemGenerationService-->>SpacePage: 미리보기 문제 목록
Loading
sequenceDiagram
  participant DashboardPage
  participant api.ts
  participant ReportController
  participant ReportServiceImpl
  DashboardPage->>api.ts: 대시보드 요약 요청
  api.ts->>ReportController: GET /api/dashboards/summary
  ReportController->>ReportServiceImpl: 사용자 요약 조회
  ReportServiceImpl-->>DashboardPage: 요약 통계 응답
Loading

Possibly related PRs

Suggested reviewers: sunghuii

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/problem-refactor

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@idktomorrow idktomorrow left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM ❤️

@jaejo jaejo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

승인 완료

@jaejo
jaejo merged commit a488d39 into develop Jul 23, 2026
1 of 2 checks passed
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.

3 participants