Skip to content

Comments

[feat/#22] 스터디 상세, 내 스터디 화면 일부 구현 완료#45

Merged
fredleeJH merged 19 commits intodevelopfrom
feat/#22-study-detail-screen
Feb 4, 2026
Merged

[feat/#22] 스터디 상세, 내 스터디 화면 일부 구현 완료#45
fredleeJH merged 19 commits intodevelopfrom
feat/#22-study-detail-screen

Conversation

@fredleeJH
Copy link
Contributor

@fredleeJH fredleeJH commented Feb 4, 2026

Related issue 🛠

Work Description 📝

  • 상세 스터디, 내 스터디 일부 구현 완료했습니다.

Screenshot 📸

Uncompleted Tasks 😅

  • 출석체크 화면
  • 일정 생성 모달

PR Point 📌

출석체크 화면이랑, 일정 생성 모달은 이번주내로 만들어볼게요

트러블 슈팅 💥

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 스터디 상세 페이지 추가 (홈, 플래너, 게시판, 회고록 탭)
    • 달력 및 일정 관리 기능 개선
    • 할일 생성, 완료, 삭제 기능
    • 회고록 작성 및 감정표현(불, 하트, 별, 웃음) 반응 추가
    • 스터디 멤버 및 일정 조회 기능
  • UI/UX 개선

    • 새로운 디자인 시스템 컴포넌트 및 아이콘 추가
    • 캘린더 컴포넌트 개선
    • 내 스터디 목록 네비게이션 최적화

@fredleeJH fredleeJH requested a review from starshape7 February 4, 2026 10:02
@fredleeJH fredleeJH self-assigned this Feb 4, 2026
@fredleeJH fredleeJH added 🐶 종훈 🍥 [UI] ui 작업 🍒 [FEAT] 새로운 기능 구현 labels Feb 4, 2026
@fredleeJH fredleeJH linked an issue Feb 4, 2026 that may be closed by this pull request
@fredleeJH fredleeJH merged commit fbce87f into develop Feb 4, 2026
1 check was pending
@coderabbitai
Copy link

coderabbitai bot commented Feb 4, 2026

Caution

Review failed

The pull request is closed.

스터디 디테일 화면 구현 (Study Detail Screen Implementation)

Walkthrough

학습 그룹의 상세 정보를 보여주는 스터디 디테일 스크린을 구현합니다. 홈, 플래너, 게시판, 회고록 탭으로 구성되며, 멤버 관리, 일정 조회, 투두 CRUD, 회고록 작성 및 반응 기능을 포함합니다. 기존 캘린더 컴포넌트를 제거하고 새로운 SpotPlannerCalendar를 도입합니다.

Changes

Cohort / File(s) Summary
캘린더 컴포넌트 교체
core/designsystem/.../component/Calender.kt, core/designsystem/.../component/DateHeader.kt
기존 SpotMonthCalendar 및 DateHeader 컴포넌트 제거 (총 462줄)
새 플래너 캘린더
core/designsystem/.../component/SpotPlannerCalendar.kt
CustomWeekRow 및 DayCell을 포함한 새로운 플래너 캘린더 컴포넌트 추가 (170줄)
디자인 시스템 확장
core/designsystem/.../theme/Color.kt, core/designsystem/src/main/res/drawable/ic_*.xml
B50 색상 추가 및 12개 신규 아이콘 리소스 추가 (fire, heart, hit_count, laugh, like_count, meetball, member, plus, plus_study, star, todo_check 등)
URI-파일 변환 유틸
core/ui/src/main/java/.../extension/GsonExt.kt
Uri.toFile(context) 확장함수 추가로 이미지 업로드 지원
데이터 소스 및 서비스 확장
data/study/src/main/java/.../datasource/StudyDataSource.kt, data/study/src/main/java/.../datasourceimpl/StudyDataSourceImpl.kt, data/study/src/main/java/.../service/StudyService.kt
스터디 상세, 멤버, 일정, 투두, 회고록 조회/생성/삭제 및 반응 관리 메서드 14개 추가
데이터 전송 객체
data/study/src/main/java/.../dto/request/MemoirCreateRequestDto.kt, data/study/src/main/java/.../dto/request/TodoCreateRequestDto.kt, data/study/src/main/java/.../dto/response/*.kt
12개의 요청/응답 DTO 추가 (MemoirCreateRequestDto, TodoCreateRequestDto, StudyDetailResponseDto, StudyMemberResponseDto, StudyMemoirResponseDto, StudyScheduleResponseDto 등)
데이터 매퍼
data/study/src/main/java/.../mapper/StudyMapper.kt
DTO↔도메인 모델 변환 확장함수 9개 추가로 데이터 매핑 구현
리포지토리 및 도메인 모델
data/study/src/main/java/.../repositoryimpl/StudyRepositoryImpl.kt, domain/study/src/main/java/.../repository/StudyRepository.kt, domain/study/src/main/java/.../model/*.kt
14개의 리포지토리 메서드 추가 및 StudyDetailModel, StudyMemberModel, MemoirModel, TodoModel 등 8개의 도메인 모델 추가
스터디 상세 화면 UI 상태 및 탭
feature/study/src/main/java/.../detail/model/StudyDetailState.kt, feature/study/src/main/java/.../detail/model/StudyDetailTab.kt
StudyDetailState, StudyHomeState, StudyPlannerState, StudyMemoirState 및 StudyDetailTab(HOME, PLANNER, BOARD, MEMOIR) 열거형 추가
스터디 상세 ViewModel
feature/study/src/main/java/.../detail/StudyDetailViewModel.kt
UI 상태 관리, 데이터 페칭, 투두/회고록/반응 CRUD 처리 로직 구현 (311줄)
스터디 상세 화면 컴포넌트
feature/study/src/main/java/.../detail/component/common/StudyDetailCategoryChip.kt, feature/study/src/main/java/.../detail/component/common/StudyDetail*.kt, feature/study/src/main/java/.../detail/component/memoir/EmojiOptionPopup.kt, feature/study/src/main/java/.../detail/component/memoir/MemoirImageSection.kt, feature/study/src/main/java/.../detail/component/planner/StudyDetail*.kt
스터디 정보 표시, 투두 아이템, 카테고리 칩, 멤버 아이템, 이모지 팝업, 회고록 입력 필드 등 15개의 재사용 가능한 UI 컴포넌트 추가
스터디 상세 화면 스크린
feature/study/src/main/java/.../detail/screen/StudyDetail*.kt, feature/study/src/main/java/.../detail/screen/StudyMemoirPostScreen.kt
HOME/PLANNER/BOARD/MEMOIR 탭 및 회고록 작성 화면 구현 (4개 스크린, 총 780줄)
스터디 상세 매퍼
feature/study/src/main/java/.../detail/mapper/StudyDetailMapper.kt
LocalDateTime→UI시간 포맷, 카테고리→문자열 변환, 조회수 포맷팅 유틸 추가
스터디 상세 네비게이션
feature/study/src/main/java/.../detail/navigation/StudyDetailNavigation.kt
StudyMemoirPost 라우트 추가 및 탭 변경 콜백 구현, StudyDetail @Serializable 제거
메인 네비게이션 통합
feature/main/src/main/java/.../MainNavHost.kt, feature/main/src/main/java/.../MainNavigator.kt, feature/main/src/main/java/.../MainScreen.kt
StudyDetailTab 상태 추가, 탭 변경 콜백 전달, 회고록 작성 화면 네비게이션 연결
마이 스터디 리팩토링
feature/study/src/main/java/.../my/MyStudyScreen.kt, feature/study/src/main/java/.../my/MyStudyViewModel.kt, feature/study/src/main/java/.../my/component/MyStudyListContent.kt, feature/study/src/main/java/.../my/model/MyStudyState.kt, feature/study/src/main/java/.../my/navigation/MyStudyNavigation.kt
무한 스크롤 구현, ViewModel 추가, 라우트 기반 구성 변경, 상태 관리 모델 추가
빌드 구성
feature/study/build.gradle.kts
kizitonwose calendar library 의존성 추가

Sequence Diagram(s)

sequenceDiagram
    participant UI as StudyDetailScreen
    participant VM as StudyDetailViewModel
    participant Repo as StudyRepository
    participant DS as StudyDataSource
    participant API as StudyService API

    UI->>VM: fetchStudyHomeDetail(studyId)
    VM->>Repo: getStudyDetail(studyId)
    Repo->>DS: getStudyDetail(studyId)
    DS->>API: GET /study/{studyId}
    API-->>DS: StudyDetailResponseDto
    DS-->>Repo: StudyDetailResponseDto
    Repo->>Repo: toDomain() 변환
    Repo-->>VM: StudyDetailModel

    par 병렬 요청
        VM->>Repo: getStudyMembers(studyId)
        VM->>Repo: getUpcomingSchedules(studyId)
        VM->>Repo: getStudyRecentMemoirs(studyId)
    end

    Repo->>DS: getStudyMembers/getUpcomingSchedules/getStudyRecentMemoirs
    DS->>API: 병렬 API 호출
    API-->>DS: 응답 DTOs
    DS-->>Repo: 응답 DTOs
    Repo->>Repo: toDomain() 변환
    Repo-->>VM: 도메인 모델들

    VM->>VM: uiState 업데이트
    VM-->>UI: 상태 변경 알림
    UI->>UI: 탭별 화면 렌더링 (HOME/PLANNER/BOARD/MEMOIR)
    
    alt 투두 생성
        UI->>VM: createTodo(studyId, content, dueDate)
        VM->>Repo: createTodo(studyId, content, dueDate)
        Repo->>DS: createTodo(...)
        DS->>API: POST /study/{studyId}/todo
        API-->>DS: TodoCreateResponseDto
        DS-->>Repo: TodoCreateResponseDto
        Repo-->>VM: Long (todoId)
        VM->>VM: todoList 업데이트
        VM-->>UI: 상태 변경 알림
    end

    alt 회고록 작성
        UI->>VM: postMemoir(studyId, activity, learned, encouragement, isPrivate, imageFiles)
        VM->>Repo: postMemoir(studyId, memoirCreateModel, imageFiles)
        Repo->>DS: postMemoir(...) with multipart
        DS->>API: POST /study/{studyId}/memoir (multipart)
        API-->>DS: MemoirCreateResponseDto
        DS-->>Repo: MemoirCreateResponseDto
        Repo-->>VM: Long (reviewId)
        VM->>VM: MemoirPostSuccess 사이드이펙트 발행
        VM-->>UI: 네비게이션 트리거
    end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • starshape7

Poem

🐰 달의 스터디 세상이 펼쳐졌네,
탭을 누르면 홈이 반짝여,
플래너, 게시판, 회고록까지,
투두를 체크하는 기쁨이여,
회고록엔 이모지 불꽃이 타올라 🔥💫

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#22-study-detail-screen

Important

Action Needed: IP Allowlist Update

If your organization protects your Git platform with IP whitelisting, please add the new CodeRabbit IP address to your allowlist:

  • 136.113.208.247/32 (new)
  • 34.170.211.100/32
  • 35.222.179.152/32

Reviews will stop working after February 8, 2026 if the new IP is not added to your allowlist.


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 and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🍒 [FEAT] 새로운 기능 구현 🍥 [UI] ui 작업 🐶 종훈

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT/#22] Study Detail Screen 구현

1 participant