이슈 제목: [Feature] 마감일 없는 목표 생성 기능 추가 설명: 사용자가 특정 마감일 없이 지속적으로 진행할 수 있는 목표를 설정할 수 있는 기능 구현
주요 변경사항:
Goal엔티티의endDate필드를DateTime?로 변경하여 nullable 지원GoalModel과TodoModel에서 null 안전성 처리 추가- Goal 입력 화면에 "마감일 없이 할래요" 체크박스 추가
- 체크박스 상태에 따른 날짜 입력 필드 애니메이션 (SizeTransition, FadeTransition)
- 마감일 없는 목표에 대한 D-Day 계산 및 표시 로직 수정
- 서버 호환성을 위한 null endDate → 2099-12-31 변환 로직
관련 파일:
packages/domain/lib/entities/goal.dartpackages/data/lib/models/goal_model.dartpackages/presentation/lib/viewmodels/goal/goal_input_viewmodel.dartpackages/presentation/lib/views/goal/input/goal_input_body.dartpackages/data/lib/datasources/remote/goal_remote_datasource.dart
이슈 제목: [Enhancement] 메인화면 투두 표시 규칙을 아이젠하워 매트릭스 기반으로 개선 설명: 기존 showOnHome 플래그 의존 방식에서 우선순위 기반 자동 정렬 시스템으로 변경
주요 변경사항:
todayTop3Todos필터링 로직 개선:- 오늘 날짜 기준 필터링
- 완료되지 않은 투두만 선택
- 아이젠하워 매트릭스 기반 우선순위 정렬
- 진행률 및 마감일 고려한 2차, 3차 정렬
- 상세한 디버깅 로그 추가로 필터링 과정 추적 가능
관련 파일:
packages/presentation/lib/viewmodels/home/home_viewmodel.dart
이슈 제목: [UI] 메인화면 투두/목표 항목에 우선순위 배지 및 진행률 표시 추가 설명: 사용자가 한눈에 우선순위와 진행 상황을 파악할 수 있도록 시각적 요소 강화
주요 변경사항:
HomeListItem에 우선순위 배지 추가:- 🔴 긴급 (아이젠하워 0)
- 🟡 중요 (아이젠하워 1)
- 🔵 보통 (아이젠하워 2)
- ⚪ 낮음 (아이젠하워 3)
- 투두 진행률 퍼센트 표시
- 마감일 없는 목표/투두에 대한 "무제한" 표시
- 빈 상태 메시지 개선
관련 파일:
packages/presentation/lib/views/home/widget/home_list_item.dartpackages/presentation/lib/views/home/widget/home_todo_list_section.dart
이슈 제목: [Bug] 메인화면 노출 체크박스가 작동하지 않는 문제 수정 설명: 투두/목표 생성 시 "메인화면 노출" 체크박스를 클릭해도 메인화면에 표시되지 않는 문제
현재 분석 상황:
- 투두 필터링에서
showOnHome체크 로직이 일시적으로 제거됨 - 목표 필터링은 여전히
showOnHome체크를 사용 중 - 투두/목표 생성 시
showOnHome값은 정상적으로 전달되고 있음 - 디버깅 로그를 추가하여 데이터 흐름 추적 중
TODO 항목들:
// home_viewmodel.dart
// TODO: 메인화면 노출 문제 분석 - showOnHome 체크 로직 확인
// TODO: 메인화면 노출 문제 해결 - showOnHome 체크 복원
// todo_input_viewmodel.dart
// TODO: 메인화면 노출 문제 디버깅 - showOnHome 값 로깅
// goal_input_viewmodel.dart
// TODO: 메인화면 노출 문제 디버깅 - 목표 생성 시 showOnHome 값 로깅
// goal_management_viewmodel.dart
// TODO: 메인화면 노출 문제 분석 - 자동 완료 로직에서 showOnHome 확인다음 단계:
- 투두 필터링에
showOnHome체크 로직 복원 - 목표와 투두의 일관된 메인화면 노출 정책 수립
- 사용자 체크박스 상태와 실제 표시 여부 간 동기화 확인
- 로컬 저장소와 원격 서버 간
showOnHome값 동기화 검증
관련 파일:
packages/presentation/lib/viewmodels/home/home_viewmodel.dartpackages/presentation/lib/viewmodels/todo/todo_input_viewmodel.dartpackages/presentation/lib/viewmodels/goal/goal_input_viewmodel.dart
이슈 제목: [Enhancement] 마감일 없는 목표에 대한 서버 API 스펙 개선 요청 설명: 현재 클라이언트에서 2099-12-31 변환 처리하고 있는 부분을 서버에서 네이티브 지원하도록 개선
계획:
- 백엔드 팀과 협의하여
endDate: null허용하는 API 스펙 변경 - 클라이언트의 임시 변환 로직 제거
- 더 직관적인 데이터 모델 구조로 개선
이슈 제목: [UX] 마감일 없는 목표에 대한 진행률 및 성취도 측정 방식 개선 설명: 마감일이 없는 목표의 경우 시간 기반이 아닌 다른 성취도 측정 방식 도입
계획:
- 주기적 체크인 기능 (주간/월간 리뷰)
- 마일스톤 기반 진행률 측정
- 사용자 정의 성취 기준 설정 기능
이슈 제목: [Performance] 메인화면 필터링 로직 성능 최적화 설명: 투두/목표 개수가 많아질 때를 대비한 필터링 및 정렬 성능 개선
계획:
- 인덱싱 기반 필터링 최적화
- 메모이제이션을 통한 반복 계산 방지
- 가상화된 리스트 렌더링 고려
이슈 제목: [Testing] 새로 추가된 기능들에 대한 단위 테스트 및 통합 테스트 추가 설명: 마감일 없는 목표 기능과 우선순위 시스템에 대한 포괄적인 테스트 코드 작성
계획:
- nullable endDate 처리 로직 테스트
- 아이젠하워 매트릭스 정렬 알고리즘 테스트
- UI 애니메이션 상태 변화 테스트
- 서버 호환성 변환 로직 테스트
- 메인화면 노출 기능 비활성화: 현재 진행 중인 작업 항목 #4 참조
- 서버 API endDate null 비지원: 임시 해결책 적용됨, 향후 계획 #5에서 근본적 해결 예정
- 2099-12-31 변환 로직: 서버 호환성을 위한 임시 해결책으로 추후 제거 필요
- 중복된 필터링 로직: 투두와 목표에서 유사한 필터링 로직이 중복됨, 공통 유틸리티로 리팩토링 필요
- 하드코딩된 상수값들: 우선순위 색상, 애니메이션 duration 등 상수화 필요
Last Updated: 2025-09-21 Next Review: 2025-09-28