Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.*;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.util.Deque;
import java.util.List;

Expand All @@ -36,10 +39,10 @@ public Schedule getSchedule(Long memberId, Long scheduleId) {
}

@Transactional(readOnly = true)
public List<Schedule> getScheduleList(Long memberId, LocalDate date) {
public List<Schedule> getScheduleList(Long memberId, ZonedDateTime dateTime) {
ZoneId memberZoneById = memberService.findZoneIdOfMember(memberId);
Instant startOfDay = date.atStartOfDay(memberZoneById).toInstant();
Instant endExclusive = date.plusDays(1).atStartOfDay(memberZoneById).toInstant();
Instant startOfDay = dateTime.toLocalDate().atStartOfDay(memberZoneById).toInstant();
Instant endExclusive = dateTime.toLocalDate().plusDays(1).atStartOfDay(memberZoneById).toInstant();
Comment on lines +42 to +45
Copy link

Copilot AI Jan 1, 2026

Choose a reason for hiding this comment

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

문제점: getScheduleList 메서드가 클라이언트로부터 받은 ZonedDateTime의 시간대를 무시하고, DB에서 조회한 사용자의 시간대(memberZoneById)를 사용하여 날짜 범위를 계산하고 있습니다.

영향: 클라이언트가 전달한 시간대 정보가 무시되어, 서로 다른 시간대에서 같은 날짜를 요청해도 동일한 결과가 반환됩니다. 예를 들어, 사용자가 여행 중 다른 시간대에 있을 때 의도한 날짜의 일정을 조회하지 못할 수 있습니다.

수정 제안: dateTime 파라미터의 시간대를 사용하여 날짜 범위를 계산하거나, memberZoneById만 사용할 것이라면 파라미터로 LocalDate만 받도록 변경하는 것이 좋습니다.

Copilot uses AI. Check for mistakes.

return scheduleRepository.findAllByOwnerIdAndDesignatedStartTimeInstantBetween(
memberId,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package me.gg.pinit.pinittask.interfaces.web;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
Expand All @@ -25,7 +26,7 @@ public MemberControllerV0(MemberService memberService) {

@GetMapping("/now")
@Operation(summary = "현재 진행 중인 일정 ID 조회", description = "사용자의 현재 진행 중인 일정 ID를 조회합니다.")
public ResponseEntity<Long> getNowInProgressScheduleId(@MemberId Long memberId) {
public ResponseEntity<Long> getNowInProgressScheduleId(@Parameter(hidden = true) @MemberId Long memberId) {
Long scheduleId = memberService.getNowInProgressScheduleId(memberId);
return ResponseEntity.ok(scheduleId);
}
Expand All @@ -35,7 +36,7 @@ public ResponseEntity<Long> getNowInProgressScheduleId(@MemberId Long memberId)
@ApiResponses({
@ApiResponse(responseCode = "200", description = "사용자 시간대 조회 성공", content = @Content(schema = @Schema(implementation = String.class, example = "+09:00"))),
})
public ResponseEntity<String> getMemberZoneOffset(@MemberId Long memberId) {
public ResponseEntity<String> getMemberZoneOffset(@Parameter(hidden = true) @MemberId Long memberId) {
String zoneOffset = memberService.findZoneOffsetOfMember(memberId).toString();
return ResponseEntity.ok(zoneOffset);
}
Expand Down

This file was deleted.

Loading