Bugfix/#38 반복 일정 수정 오류 해결#39
Open
yeonjin719 wants to merge 17 commits intodevelopfrom
Hidden character warning
The head ref may contain hidden characters: "bugfix/#38-\ubc18\ubcf5-\uc77c\uc815-\uc218\uc815-\uc624\ub958-\ud574\uacb0"
Open
Conversation
1 task
There was a problem hiding this comment.
Pull request overview
반복 일정/할 일 수정·드래그앤드롭 시 전송되는 recurrenceGroup/patch scope 처리를 보강하고, 캘린더 월/주간 이벤트 제목 overflow 시 툴팁을 노출하며, Todo/모달 폼 로직을 공통 훅으로 리팩터링한 PR입니다.
Changes:
- 반복 일정/할 일의 patch 요청에서 occurrence/scope/recurrenceGroup 정규화 및 “이후 항목” 처리 로직 보강
- 월간/주간 캘린더 이벤트 제목 overflow 감지 기반 포털 툴팁 추가 및 관련 스타일 보강
- AddTodo/AddSchedule 폼의 제출/닫기 가드 로직 공통화 및 Todo feature 유틸·상태/액션 훅 분리
Reviewed changes
Copilot reviewed 34 out of 34 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/shared/utils/timeUtils.ts | 시간 문자열↔분 변환 유틸에 주석 보강 |
| src/shared/utils/repeatConfig.ts | 반복 설정 동등성 비교 로직(직렬화 기반) 및 주석 보강 |
| src/shared/utils/recurrencePattern.ts | recurrenceGroup 정규화/요일·주차 계산 등 반복 패턴 유틸 신규 추가 |
| src/shared/utils/recurrenceGroup.ts | recurrenceGroup↔RepeatConfig 매핑 함수 주석 보강 |
| src/shared/utils/priority.ts | 우선순위 라벨/색상 변환 유틸 주석 보강 |
| src/shared/utils/date.ts | 날짜 포맷/라벨 유틸 주석 보강 |
| src/shared/ui/modal/AddTodo/components/AddTodoForm.tsx | 상세 hydrate/제출 흐름/unsaved guard 공통 훅 적용 및 반복 할 일 제출 플로우 반영 |
| src/shared/ui/modal/AddSchedule/form/AddScheduleFormContent.tsx | unsaved guard 공통 훅 적용 및 반복 이벤트 토글 패치 범위 보강 |
| src/shared/schemas/schedule.ts | 종료 시간 검증 로직에 안전 분기 추가 |
| src/shared/hooks/query/useTodoMutations.ts | Todo mutation 훅을 개별 훅 + 호환 래퍼로 리팩터링, invalidate 공통화 |
| src/shared/hooks/form/useAddTodoForm.ts | Todo patch 시 occurrenceDate/scope 옵션 지원 및 월간 패턴 보정 로직 추가 |
| src/shared/hooks/common/useUnsavedCloseGuard.ts | dirty 상태 닫기 가드 공통 훅 신규 추가 |
| src/shared/hooks/addTodo/useTodoSubmitFlow.ts | Todo 제출(반복 범위/반복 변경 확인) 플로우 공통 훅 신규 추가 |
| src/shared/hooks/addSchedule/useScheduleSubmitFlow.ts | Schedule 제출 플로우를 공통 submit 경로로 정리(에러 처리 일원화) |
| src/shared/hooks/addSchedule/useSchedulePatch.ts | 반복 일정 patch 시 recurrenceGroup 정규화/범위 결정 및 월간 패턴 보정 추가 |
| src/pages/main/TodoListPage/TodoListPage.tsx | 주차 타이틀/진행률 날짜 파라미터 계산을 feature 유틸로 분리 |
| src/features/Todo/utils/todoPage.ts | Todo 페이지용 주차 타이틀/진행률 파라미터 유틸 신규 추가 |
| src/features/Todo/utils/todoDate.ts | Todo 날짜 라벨/마감 시간 계산 유틸 신규 추가(기존 로직 이동) |
| src/features/Todo/utils/colorPalette.ts | Todo 색상 팔레트 유틸 주석 보강 |
| src/features/Todo/hooks/useTodoSectionState.ts | Todo 섹션 상태/모달 상태를 훅으로 분리(occurrenceDate 기반 editing key 포함) |
| src/features/Todo/hooks/useTodoCardActions.ts | Todo 카드 액션(삭제/완료 토글) 훅으로 분리 및 낙관적 업데이트 정리 |
| src/features/Todo/components/TodoSection/TodoSection.tsx | 섹션 UI를 훅/유틸로 정리하고 필터 탭 컴포넌트 분리 |
| src/features/Todo/components/TodoSection/TodoFilterTabs.tsx | Todo 필터 탭 컴포넌트 신규 추가 |
| src/features/Todo/components/TodoCard/TodoCard.tsx | 카드 내부 mutation/상태 로직을 훅으로 분리 |
| src/features/Calendar/utils/viewConfig.ts | 캘린더 view 설정 관련 주석 보강 |
| src/features/Calendar/utils/helpers/dayViewHelpers.ts | day view 헬퍼 주석 보강 및 occurrence 키/날짜 처리 가독성 개선 |
| src/features/Calendar/utils/helpers/calendarPageHelpers.ts | 로컬 임시 이벤트 id 생성 주석 보강 |
| src/features/Calendar/utils/formatters.ts | 요일/헤더/날짜 포맷터 주석 보강 |
| src/features/Calendar/utils/colorPalette.ts | 일정 색상 키→테마 팔레트 매핑 주석 보강 |
| src/features/Calendar/hooks/useCalendarDragDrop.ts | 반복 이벤트 “이후 항목” 드롭 시 recurrenceGroup 재계산 빌더 추가 |
| src/features/Calendar/components/CustomEvent/CustomWeekEvent.tsx | 주간 이벤트 제목 overflow 시 포털 툴팁 노출 추가 |
| src/features/Calendar/components/CustomEvent/CustomMonthEvent.tsx | 월간 이벤트 제목 overflow 시 포털 툴팁 노출 추가 |
| src/features/Calendar/components/CustomEvent/CustomEvent.style.ts | 툴팁 스타일 및 제목/메타 스타일 조정 |
| src/features/Calendar/components/CustomCalendar/CustomCalendar.tsx | 반복 할 일 드롭 “이후 항목” 처리 시 상세 조회 기반 recurrenceGroup 보정 및 race 방지 |
Comments suppressed due to low confidence (1)
src/features/Calendar/components/CustomEvent/CustomEvent.style.ts:105
- EventTitle에 width: 45px 고정값이 들어가면서 월/주간 뷰에서 제목이 실제로는 충분히 공간이 있어도 항상 과도하게 잘리고(툴팁 노출 빈도도 증가) 레이아웃이 화면/셀 너비에 반응하지 않게 됩니다. 제목 말줄임을 유지하려면 고정 width 대신 flex 아이템으로 동작하도록 설정(예: flex: 1 + min-width: 0 + max-width: 100% 등)해서 컨테이너의 실제 가용폭을 기준으로 overflow가 결정되게 조정해주세요.
export const EventTitle = styled.div`
font-weight: 400;
font-size: 12px;
width: 45px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔗 관련 이슈
🧩 작업 요약 (TL;DR)
🔄 변경 유형
해당되는 항목에 체크해주세요.
📌 주요 변경 사항
src/features/Calendar/components/CustomEvent/CustomMonthEvent.tsxcreatePortal로document.body에 렌더링해 셀 잘림 문제 해결src/features/Calendar/components/CustomEvent/CustomWeekEvent.tsxsrc/features/Calendar/components/CustomEvent/CustomEvent.style.tsMonthEventTooltip) 추가src/features/Calendar/utils/*,src/features/Todo/utils/*,src/shared/utils/*🖼️ 스크린샷 / 영상 (선택)
🧠 리뷰 요청 포인트
🚧 미완 / 후속 작업
💬 기타 참고 사항
eslint/build기준으로 검증 완료했습니다.@copilot 이 PR을 아래 기준으로 검토해주세요:
.github/instructions/capstone.instructions.md 파일을 지침으로 삼으세요.
폴더/파일 위치가 프로젝트 구조 규칙과 일치하는지
컴포넌트가 단일 책임 원칙(SRP)을 지키는지
import 방향이 올바른지 (shared → features 역방향 없음)
명명/케이스가 일관적인지 (PascalCase vs camelCase)
배럴(index.ts) 사용이 현 패턴을 따르는지
응답은 한국어로, 발견된 위반 항목과 추천 구조를 포함해주세요.
리뷰를 달아주세요