Skip to content

리스트페이지 개발#86

Merged
Jieunsse merged 1 commit into
mainfrom
feature/list-page-v2
Feb 25, 2026
Merged

리스트페이지 개발#86
Jieunsse merged 1 commit into
mainfrom
feature/list-page-v2

Conversation

@HWAN0218

@HWAN0218 HWAN0218 commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • 리스트 페이지 개발

Issue

Scope

  • 포함

    • 변경한 내용
  • 특이사항

@HWAN0218 HWAN0218 added this to the 페이지 milestone Feb 24, 2026
@HWAN0218 HWAN0218 requested review from a team, Jieunsse, jungwon123 and yooolleee February 24, 2026 17:56
@HWAN0218 HWAN0218 self-assigned this Feb 24, 2026
@HWAN0218 HWAN0218 added the 기능추가 기능개발 및 추가할 때 사용해주세요. label Feb 24, 2026
@HWAN0218 HWAN0218 added this to workers Feb 24, 2026
@github-project-automation github-project-automation Bot moved this to 개발 대기중 in workers Feb 24, 2026
@HWAN0218 HWAN0218 moved this from 개발 대기중 to 개발 진행중 in workers Feb 24, 2026
@HWAN0218 HWAN0218 moved this from 개발 진행중 to PR 리뷰중 in workers Feb 24, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @HWAN0218, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 리스트 페이지의 핵심 기능을 리팩토링하여 teamid 기반의 동적 라우팅을 지원하도록 개선합니다. 이를 통해 팀별 할 일 목록 관리가 더욱 유연해지며, 반복 태스크 처리 로직을 최신 API 명세에 맞춰 업데이트하여 기능의 안정성과 확장성을 높였습니다. 또한, 불필요한 UI 로직을 제거하고 데이터 요청 방식을 일관되게 변경하여 코드베이스를 정리했습니다.

Highlights

  • 리스트 페이지 리팩토링 및 동적 라우팅 적용: 기존 리스트 페이지 컴포넌트와 관련 CSS, 쿼리 파일을 [teamid] 동적 라우팅 경로에 맞춰 재구성했습니다. src/app/(root)/list/page.tsxsrc/app/(root)/list/list.module.csssrc/app/(root)/[teamid]/_domain/components/TaskList/TaskList.tsxTaskList.module.css로 각각 이름이 변경되고 이동되었습니다. 또한, src/app/(root)/[teamid]/tasklist/page.tsx 파일이 추가되어 teamid 파라미터를 기반으로 TaskList 컴포넌트를 동적으로 로드합니다.
  • 반복 태스크 API 연동 로직 개선: 반복 태스크(recurring task) 생성, 수정, 삭제 로직이 새로운 API 명세에 맞춰 업데이트되었습니다. useCreateTask는 이제 /recurring 엔드포인트를 사용하며, usePatchTaskuseDeleteTaskrecurringId의 유무에 따라 반복 태스크와 일반 태스크를 구분하여 처리합니다. ApiWeekDay 타입이 문자열 요일에서 숫자 배열로 변경되었습니다.
  • 데이터 쿼리 및 뮤테이션에 teamId 파라미터 추가: useMe, useGroupDetail, useTaskListByDate, useTaskComments, useCreateTaskList, useUpdateTaskList, useDeleteTaskList, useCreateTask, usePatchTask, useDeleteTask, useCreateTaskComment 등 대부분의 데이터 관련 훅에 teamId 파라미터가 추가되어 API 요청 경로와 쿼리 키에 반영되었습니다.
  • UI/UX 개선 및 불필요한 코드 제거: 데스크톱/모바일 사이드바 관련 로직 및 상태(예: isPc, isMobileUi, drawerOpen)가 TaskList.tsx에서 제거되어 컴포넌트가 간소화되었습니다. 캘린더 및 주 단위 날짜 선택 시 viewDateselectedDate와 동기화되도록 로직이 추가되었으며, html 높이 설정 및 특정 패딩 스타일이 제거되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • src/app/(root)/[teamid]/tasklist/page.tsx
    • 새로운 파일이 추가되었습니다.
    • next/dynamic을 사용하여 TaskList 컴포넌트를 SSR 없이 동적으로 로드합니다.
    • useParams를 통해 teamid를 가져와 TaskList 컴포넌트의 key로 전달합니다.
  • src/app/(root)/list/hooks/queries.ts
    • 파일 이름이 src/app/(root)/[teamid]/_domain/components/TaskList/queries.ts로 변경되었습니다.
    • fetchJsonfetchVoid 함수에 teamId 파라미터가 추가되어 API 경로 구성에 사용됩니다.
    • ApiWeekDay 타입 정의가 제거되었습니다.
    • Task 타입에 recurringId?: number 속성이 추가되었고, weekDaysrepeatWeekDays 타입이 number[]로 변경되었습니다.
    • useMe, useGroupDetail, useTaskListByDate, useTaskComments 훅의 queryKeyteamId가 추가되었고 enabled 조건에 !!teamId가 포함되었습니다.
    • useCreateTaskList, useUpdateTaskList, useDeleteTaskList, useCreateTask, usePatchTask, useDeleteTask, useCreateTaskComment 훅이 teamId를 인자로 받도록 변경되었고, 내부 fetchJson/fetchVoid 호출 시 teamId를 전달합니다.
    • useCreateTask는 이제 /recurring 엔드포인트로 요청을 보냅니다.
    • usePatchTaskdoneAt만 변경하는 경우, recurringId가 있는 경우, 일반 태스크 수정의 세 가지 케이스를 구분하여 다른 API 엔드포인트로 요청을 보냅니다.
    • useDeleteTaskrecurringId가 있는 경우와 없는 경우를 구분하여 다른 API 엔드포인트로 요청을 보냅니다.
    • 모든 뮤테이션의 onSuccess 콜백에서 invalidateQueriesqueryKeyteamId가 추가되었습니다.
  • src/app/(root)/list/list.module.css
    • 파일 이름이 src/app/(root)/[teamid]/_domain/components/TaskList/TaskList.module.css로 변경되었습니다.
    • :global(html)height: 100% 스타일이 제거되었습니다.
    • 모바일/태블릿용 TeamHeaderPad 주석에서 ✅ 표시가 제거되었습니다.
    • .mainContentspadding 속성에서 padding-top이 제거되었습니다.
    • .todoCard 스타일에 cursor: pointer가 추가되었습니다.
  • src/app/(root)/list/page.tsx
    • 파일 이름이 src/app/(root)/[teamid]/_domain/components/TaskList/TaskList.tsx로 변경되었습니다.
    • useParams 훅을 사용하여 URL에서 teamid를 가져오도록 변경되었습니다.
    • 사이드바, 모바일 헤더, 모바일 드로어 관련 import 및 UI 로직(예: desktopSidebarRef, isPc, isMobileUi, drawerOpen, handleSelectGroup, setSidebarCollapsedByClick)이 제거되었습니다.
    • useInitialGroupId 훅 사용이 제거되고 activeGroupIdgroups[0]?.id로 초기화됩니다.
    • addMonths 함수가 addDaysaddWeeks로 대체되어 주 단위 이동을 지원합니다.
    • toApiWeekDays 함수가 toApiWeekDayNums로 변경되어 ApiWeekDay 타입이 문자열에서 숫자 배열(number[])로 처리됩니다.
    • weekDayKor 함수가 weekDayKorNum으로 변경되어 숫자 요일을 한글로 변환합니다.
    • useMe, useGroupDetail, useTaskListByDate, useCreateTaskList, useUpdateTaskList, useDeleteTaskList, useCreateTask, usePatchTask, useDeleteTask, useTaskComments, useCreateTaskComment 훅 호출 시 teamId 파라미터가 추가되었습니다.
    • 태스크 생성(createTask) 시 새로운 /recurring API 엔드포인트를 사용하도록 변경되었습니다.
    • 태스크 수정(patchTask) 시 recurringId 유무에 따라 반복 태스크와 일반 태스크를 구분하여 처리하도록 로직이 추가되었습니다.
    • 태스크 삭제(deleteTask) 시 recurringId를 함께 전달하도록 변경되었습니다.
    • calendarInitialValues 객체 초기화 로직이 간소화되었습니다.
    • teamId가 없을 경우 'teamId 경로가 비어있습니다.' 메시지를 표시하는 로직이 추가되었습니다.
    • 캘린더 및 주 단위 날짜 바 선택 시 viewDateselectedDate와 동기화되도록 로직이 추가되었습니다.
    • handleDeleteTask 함수가 taskId 대신 task 객체를 인자로 받도록 변경되었습니다.
    • TaskDetailCard에 data-done 속성이 추가되었습니다.
    • ListPageRoot 컴포넌트와 Suspense 사용이 제거되었습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

리스트 페이지 개발과 관련된 전반적인 리팩토링이 인상적입니다. 동적 라우팅 [teamid] 도입, API 훅 구조 개선, 반복 작업(recurring task) API 연동 등 많은 부분이 개선되었습니다. 특히 teamIdkey로 사용하여 TaskList 컴포넌트를 재마운트하는 방식은 상태 관리를 깔끔하게 처리하는 좋은 방법입니다. 코드 리뷰에서는 두 가지 개선점을 제안했습니다. 하나는 코드 스타일 일관성을 위한 것이고, 다른 하나는 반복 작업 수정 시 발생할 수 있는 잠재적 버그를 방지하기 위한 것입니다. 전반적으로 훌륭한 작업입니다.

Comment on lines +411 to +418
if (vars.recurringId) {
return fetchJson<unknown>(
teamId,
`groups/${vars.groupId}/task-lists/${vars.taskListId}/recurring/${vars.recurringId}`,
{ method: 'PATCH', body: JSON.stringify(vars.body) },
'할 일 수정에 실패했습니다.',
);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

high

usePatchTask 훅에서 반복(recurring) 작업을 수정할 때, bodydoneAt 프로퍼티가 포함될 수 있습니다. doneAt은 단일 작업 인스턴스의 완료 상태를 나타내므로, 반복 작업의 템플릿을 수정하는 API로 전달되어서는 안 됩니다. 이로 인해 예기치 않은 오류가 발생할 수 있으므로, recurring 엔드포인트로 요청을 보내기 전에 doneAt 프로퍼티를 body에서 제외하는 것이 안전합니다.

Suggested change
if (vars.recurringId) {
return fetchJson<unknown>(
teamId,
`groups/${vars.groupId}/task-lists/${vars.taskListId}/recurring/${vars.recurringId}`,
{ method: 'PATCH', body: JSON.stringify(vars.body) },
'할 일 수정에 실패했습니다.',
);
}
if (vars.recurringId) {
const { doneAt, ...recurringBody } = vars.body;
return fetchJson<unknown>(
teamId,
`groups/${vars.groupId}/task-lists/${vars.taskListId}/recurring/${vars.recurringId}`,
{ method: 'PATCH', body: JSON.stringify(recurringBody) },
'할 일 수정에 실패했습니다.',
);
}

Comment on lines +62 to 63
)
return true;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

코드 스타일의 일관성과 잠재적인 오류 방지를 위해 if 문에 중괄호 {}를 사용하는 것을 권장합니다. 현재 코드베이스의 다른 부분에서는 중괄호를 사용하고 있으므로, 일관성을 유지하는 것이 좋습니다.

    ) {
      return true;
    }

@Jieunsse Jieunsse merged commit 01d9da1 into main Feb 25, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from PR 리뷰중 to 개발 완료 in workers Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

기능추가 기능개발 및 추가할 때 사용해주세요.

Projects

Status: 개발 완료

Development

Successfully merging this pull request may close these issues.

2 participants