Skip to content

[#474] Todo 도메인 모델에서 옵셔널이 포함된 프로퍼티를 제거한다#520

Merged
opficdev merged 4 commits into
developfrom
refactor/#474-Todo-Number-Optional
Jun 2, 2026
Merged

[#474] Todo 도메인 모델에서 옵셔널이 포함된 프로퍼티를 제거한다#520
opficdev merged 4 commits into
developfrom
refactor/#474-Todo-Number-Optional

Conversation

@opficdev
Copy link
Copy Markdown
Owner

@opficdev opficdev commented Jun 2, 2026

🔗 연관된 이슈

🎯 의도

Todo 생성 전에는 서버에서 부여되는 번호가 없어 Todo.number가 optional로 유지되던 문제 해결

📝 작업 내용

📌 요약

  • 조회 완료된 도메인 모델 Todonumber non-optional 전환
  • 생성 입력 전용 도메인 모델 TodoDraft 추가
  • Todo 생성/수정 저장 흐름 분리
  • Editor 변경 감지 기준을 TodoDraft 기반으로 단순화

🔍 상세

  • Todo는 저장소에서 조회된 확정 모델로 정리하고 number를 필수 값으로 변경
  • 생성 요청에서만 사용하는 TodoDraft를 추가해 생성 전 상태 표현
  • UpsertTodoUseCase, TodoRepository, TodoRequest 매핑에서 TodoTodoDraft 입력을 분리
  • TodoEditorViewModel의 생성 side effect는 TodoDraft, 수정 side effect는 Todo를 사용하도록 분리
  • Todo 목록, Today, Heatmap 표시 모델에서 number optional guard 제거
  • 새 창 Todo editor submit 이벤트를 생성과 수정 이벤트로 분리
  • TodoDraft의 custom Equatable로 Editor 변경 감지 로직 단순화

📸 영상 / 이미지 (Optional)

@opficdev opficdev self-assigned this Jun 2, 2026
Copy link
Copy Markdown
Contributor

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

Choose a reason for hiding this comment

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

Code Review

이번 풀이 리퀘스트는 Todo 엔티티의 number 프로퍼티를 필수 값으로 변경하고, 신규 생성 시 사용할 TodoDraft 도메인 모델을 도입하여 생성(Create)과 수정(Update) 흐름을 명확히 분리하였습니다. 이에 따라 프레젠테이션 레이어의 뷰 모델 및 코디네이터 로직이 전반적으로 리팩토링되었습니다. 리뷰어 피드백으로는 도메인 모델의 일관성을 유지하기 위해 TodoDraft에 구현된 커스텀 Equatable을 제거하고 기본 구현을 사용할 것과, 뷰 모델 내 hasChanges 비교 로직을 직접 구현할 것을 권장하였습니다. 또한, state.tags.map { $0 } 대신 Array(state.tags)를 사용하여 가독성과 성능을 개선할 것을 제안했습니다.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread Application/DevLogDomain/Sources/Entity/TodoDraft.swift
Comment thread Application/DevLogPresentation/Sources/Home/TodoEditorViewModel.swift Outdated
@opficdev opficdev merged commit 5acab83 into develop Jun 2, 2026
1 check passed
@opficdev opficdev deleted the refactor/#474-Todo-Number-Optional branch June 2, 2026 15:33
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.

Todo 도메인 모델에서 옵셔널이 포함된 프로퍼티를 제거한다

1 participant