Skip to content

[feat] #71 - 하위 태스크 완료/미완료#77

Merged
laura-jung merged 7 commits into
developfrom
feat/#71-subtaskComplete
Jul 9, 2026
Merged

[feat] #71 - 하위 태스크 완료/미완료#77
laura-jung merged 7 commits into
developfrom
feat/#71-subtaskComplete

Conversation

@laura-jung

@laura-jung laura-jung commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

관련 이슈 🛠

작업 내용 요약 ✏️

하위 태스크의 완료 여부를 변환하는 api

주요 변경 사항 🛠️

  • 클라에서 isCompleted값 전달시 true/false로 변환
  • 이외의 값 전달시 예외 발생

트러블 슈팅 ⚽️

없었습니당

스크린샷 📷

스크린샷 2026-07-09 오후 7 33 17 스크린샷 2026-07-09 오후 7 33 10

리뷰 요구사항 📢

나의 하위태스크들을 봐주세용

Summary by CodeRabbit

  • 새 기능
    • 할 일의 하위 태스크를 개별적으로 완료/미완료로 변경하는 PATCH 엔드포인트가 추가되었습니다.
    • 변경 결과로 하위 태스크 ID와 완료 여부가 포함된 응답을 제공합니다.
    • 성공 시 하위 태스크 상태 변경 코드로 응답합니다.
  • 버그 수정
    • 태스크 상태 변경 요청의 isCompleted 값에 대한 필수 검증이 반영되어 요청 누락 시 오류 처리가 더 일관됩니다.
    • 존재하지 않는 하위 태스크에 대해 명확한 오류가 반환됩니다.

@laura-jung laura-jung requested review from Jy000n and aneykrap July 9, 2026 10:36
@laura-jung laura-jung linked an issue Jul 9, 2026 that may be closed by this pull request
1 task
@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: d7462f09-b72e-4617-9e37-e7161ec4dc89

📥 Commits

Reviewing files that changed from the base of the PR and between be3ba02 and 8a0ec85.

⛔ Files ignored due to path filters (1)
  • src/main/java/com/Timo/Timo/domain/todo/docs/TodoControllerDocs.java is excluded by !**/docs/**
📒 Files selected for processing (5)
  • src/main/java/com/Timo/Timo/domain/todo/controller/TodoController.java
  • src/main/java/com/Timo/Timo/domain/todo/entity/Subtask.java
  • src/main/java/com/Timo/Timo/domain/todo/exception/TodoErrorCode.java
  • src/main/java/com/Timo/Timo/domain/todo/exception/TodoSuccessCode.java
  • src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/main/java/com/Timo/Timo/domain/todo/entity/Subtask.java
  • src/main/java/com/Timo/Timo/domain/todo/exception/TodoSuccessCode.java
  • src/main/java/com/Timo/Timo/domain/todo/controller/TodoController.java
  • src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java

Walkthrough

하위 태스크 완료 상태를 변경하는 PATCH 엔드포인트가 추가되었습니다. 관련 요청/응답 DTO, 서비스 메서드, 엔티티 갱신 메서드가 도입되었고, 성공/오류 코드가 조정되었습니다. 기존 todo 완료 처리의 null 검증은 제거되었고, todo 완료 요청에는 null 금지 검증이 추가되었습니다.

Changes

하위 태스크 상태 변경 기능

Layer / File(s) Summary
요청/응답 DTO 및 엔티티 업데이트
src/main/java/com/Timo/Timo/domain/todo/dto/request/SubtaskStatusUpdateRequest.java, src/main/java/com/Timo/Timo/domain/todo/dto/response/SubtaskStatusChangeResponse.java, src/main/java/com/Timo/Timo/domain/todo/entity/Subtask.java
서브태스크 상태 변경 요청 레코드, 응답 레코드, 완료 상태 갱신 메서드가 추가됨.
에러/성공 코드 변경
src/main/java/com/Timo/Timo/domain/todo/exception/TodoErrorCode.java, src/main/java/com/Timo/Timo/domain/todo/exception/TodoSuccessCode.java
IS_COMPLETED_REQUIRED가 제거되고 SUBTASK_STATUS_CHANGED가 추가됨.
서비스에서 서브태스크 상태 갱신
src/main/java/com/Timo/Timo/domain/todo/service/TodoService.java
서브태스크를 찾아 완료 상태를 갱신하고 응답을 반환하는 메서드가 추가되고, 기존 완료 처리의 null 검증이 제거됨.
컨트롤러 엔드포인트와 요청 검증
src/main/java/com/Timo/Timo/domain/todo/controller/TodoController.java, src/main/java/com/Timo/Timo/domain/todo/dto/request/TodoStatusUpdateRequest.java
서브태스크 상태 변경 PATCH 엔드포인트가 추가되고, todo 완료 요청에 @NotNull 검증이 추가됨.

Estimated code review effort: 2 (Simple) | ~12 minutes

Possibly related PRs

  • Team-Timo/Timo-Server#38: TodoErrorCodeTodoSuccessCode의 기본 구성을 도입한 PR로, 이번 변경이 같은 열거형을 확장·조정합니다.
  • Team-Timo/Timo-Server#49: Subtaskcompleted 상태를 도입한 PR로, 이번 변경이 해당 값을 갱신합니다.
  • Team-Timo/Timo-Server#67: changeCompletion(...)IS_COMPLETED_REQUIRED 검증 흐름과 직접 겹치는 PR로, 이번 변경이 그 검증을 제거합니다.

Suggested reviewers: aneykrap, Jy000n

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 하위 태스크의 완료/미완료 처리라는 핵심 변경을 간결하게 요약합니다.
Linked Issues check ✅ Passed 서브태스크 완료 상태 변경 API, DTO, 서비스, 엔티티 반영으로 #71의 완료 처리 요구를 충족합니다.
Out of Scope Changes check ✅ Passed 서브태스크 완료 처리에 필요한 범위 내 변경만 보이며, 명확한 무관한 수정은 보이지 않습니다.
✨ 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 feat/#71-subtaskComplete

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.

@Jy000n Jy000n 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.

궁금한 점만 달아봤습니다-! 요것도 깔꿈해용 고생하셧습니다
(+ 하위 태스크 잘 봤습니다^^ 데이식스 굿즈 두둥탁-)

import com.fasterxml.jackson.annotation.JsonProperty;

public record SubtaskStatusUpdateRequest(
@JsonProperty("isCompleted")

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.

@NotNull, @Valid를 사용하면 컨트롤러 진입 전에 걸러질 수 있을 것 같은데 Service 레이어에서 isCompleted가 null인 경우를 체크하는 이유가 따로 있을까용

@aneykrap aneykrap 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.

p3 내용 한번 확인해주시면 감사하겟습니다.

.findFirst()
.orElseThrow(() -> new CustomException(TodoErrorCode.SUBTASK_NOT_FOUND));

subtask.updateCompleted(request.isCompleted());

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.

p3) 현재 Subtask 엔티티의 completed 값을 직접 변경하고 있어서, daily TODO의 오늘 하위 태스크를 완료하면 다른 날짜에서도 같은 하위 태스크가 완료 상태로 보일 수 있을 것 같아요. 하위 태스크 완료 상태도 날짜별로 관리되어야 하지 않을까용

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

입코리해드렸습니다

throw new CustomException(TodoErrorCode.IS_COMPLETED_REQUIRED);
}

Todo todo = todoRepository.findByIdAndUser_Id(todoId, userId)

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.

소유한 TODO를 먼저 조회한 뒤 그 안에서 하위 태스크를 찾는 흐름이라 권한 확인과 소속 검증이 같이 처리되네용 짱짱쓴

@github-actions github-actions Bot added ✨ feat and removed ✨ feat labels Jul 9, 2026
@laura-jung laura-jung requested a review from aneykrap July 9, 2026 17:47
하위 태스크 완료 여부 브랜치와 develop의 TODO 상세 조회/수정/삭제/순서 정렬
기능 간 충돌을 해소했습니다.

- TodoController/TodoService: changeSubtaskCompletion과 develop의
  getTodoDetail/updateTodo/deleteTodo/reorderTodo 양쪽 유지
- TodoControllerDocs: develop 문서를 기준으로 하위 태스크 완료 상태 변경 문서 추가
- TodoSuccessCode: SUBTASK_STATUS_CHANGED 포함 전체 통합
- TodoErrorCode: 이 브랜치의 의도(@NotNull 검증으로 대체)에 따라
  IS_COMPLETED_REQUIRED 제거, SUBTASK_NOT_FOUND는 develop 정의(SUBTASK_404) 채택

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added ✨ feat and removed ✨ feat labels Jul 9, 2026
@github-actions github-actions Bot added the slack-approval-notified Slack 승인 완료 알림 중복 방지용 라벨 label Jul 9, 2026
@laura-jung laura-jung merged commit c5c4048 into develop Jul 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ feat slack-approval-notified Slack 승인 완료 알림 중복 방지용 라벨 🍀 윤아

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 하위 태스크 완료 처리

3 participants