[feat] #30 - TODO 조회 기본/7일#49
Conversation
| DEFAULT는 기준 날짜 전후 7일, WEEK는 기준 날짜부터 7일을 반환합니다. | ||
| 각 날짜의 TODO는 미완료 먼저, 같은 완료 그룹 안에서는 sortOrder 오름차순으로 정렬됩니다. | ||
| """, | ||
| security = @SecurityRequirement(name = "bearerAuth") |
There was a problem hiding this comment.
P5) SwaggerSecurity에서 SecurityRequirement를 전역으로 설정해두어서 해당 어노테이션은 별도로 붙이지 않아도 동일하게 동작합니다!!
There was a problem hiding this comment.
아 그렇군요! 반영해서 수정 완료했습니다
There was a problem hiding this comment.
제가 timer를 구현하다가 알게 된 사실인데요,, todo 엔티티의 subtask 필드가 양방향 매핑으로 되어 있는 것 같습니다! 근데 제가 기억하기로는 세미나에서 양방향 매핑은 최대한 지양하는 것이 좋다고 들었던 기억이 있는데 양방향으로 구현하신 이유가 따로 있으실까요 ??
There was a problem hiding this comment.
subtask는 Todo가 생명주기를 소유하는 부분이라서 cascade/orphanRemoval로 일괄 관리하려고 양방향으로 두었습니다(TODO 없이는 어차피 사라져야하는 친구들이라서요!). 동기화는 addSubtask()에서 한쪽으로만 처리하고, getter도 불변 리스트로 막아둬서 양방향의 전형적인 부작용(순환 참조, 동기화 누락)은 차단돼 있습니다.
| @CreatedDate | ||
| @Column(name = "created_at", nullable = false, updatable = false) | ||
| @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") | ||
| @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'") |
There was a problem hiding this comment.
이거 형식 혹시 UTC 때문에 바꾸신걸까용,, 그냥 궁금해서,,
There was a problem hiding this comment.
네 맞습니다. UTC임을 명시할 필요가 있을 것 같아서 추가했습니다!
관련 이슈 🛠
작업 내용 요약 ✏️
홈화면에서 특정 기간의 투두를 날짜별로 조회하는 API를 구현했습니다. 반복 규칙(Todo)과 실제 발생 인스턴스(TodoInstance)를 조합해 날짜별 투두 목록을 내려주며, 사용자별 시간대(zoneId)를 기준으로 "오늘"과 조회
기간을 계산합니다. 이를 위해 사용자별 시간대 설정 기능과 서버 타임스탬프의 UTC 기준 통일, 투두 조회용 엔티티 보강을 함께 포함했습니다.
주요 변경 사항 🛠️
트러블 슈팅 ⚽️
기존 유저 zone_id 빈 값 문제: ddl-auto: update로 NOT NULL zone_id 컬럼 추가 시 기존 행이 ''로 채워져 ZoneId.of("") → DateTimeException. → 배포 시 백필 필요:
UPDATE user SET zone_id = 'Asia/Seoul' WHERE
zone_id IS NULL OR zone_id = '';
시간대 마이그레이션: UTC 통일 이전 KST 저장분이 있으면 별도 보정 필요.
스크린샷 📷
리뷰 요구사항 📢
없습니다 트러블 슈팅 내용 확인해서 에러 안나게 조심해주세요!
Summary by CodeRabbit
New Features
Bug Fixes