From d951c842e175ee93baeea3ae564ce64d81aff5e7 Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 4 Jun 2026 21:36:14 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EA=B0=9C=EC=9D=B8=20=EC=9D=BC?= =?UTF-8?q?=EC=A0=95=EC=97=90=20=EC=83=89=EC=83=81(color)=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - MemberSchedule 엔티티에 color 컬럼 추가 (HEX 형식, 최대 7자) - ScheduleDetails 응답 DTO에 color 필드 포함 - 일정 생성/수정 요청 DTO에 color 필드 및 HEX 형식 유효성 검사 추가 Co-Authored-By: Claude Sonnet 4.6 --- .../calendar/dto/CreateMemberScheduleRequest.java | 5 +++++ .../calendar/dto/MemberScheduleUpdateRequest.java | 4 ++++ .../dongsoop/dongsoop/calendar/dto/ScheduleDetails.java | 2 ++ .../dongsoop/dongsoop/calendar/entity/MemberSchedule.java | 8 ++++++++ 4 files changed, 19 insertions(+) diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java b/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java index 609bbb1a1..6316cb8d1 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java @@ -2,6 +2,7 @@ import com.dongsoop.dongsoop.calendar.entity.MemberSchedule; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; import java.time.LocalDateTime; import lombok.AllArgsConstructor; import lombok.Getter; @@ -27,12 +28,16 @@ public class CreateMemberScheduleRequest { @NotNull private LocalDateTime endAt; + @Pattern(regexp = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", message = "색상은 유효한 HEX 형식이어야 합니다 (예: #FFFFFF)") + private String color; + public MemberSchedule toEntity() { return MemberSchedule.builder() .title(title) .location(location) .startAt(startAt) .endAt(endAt) + .color(color) .build(); } } diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java b/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java index a58da9177..69a7a6213 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java @@ -1,5 +1,6 @@ package com.dongsoop.dongsoop.calendar.dto; +import jakarta.validation.constraints.Pattern; import java.time.LocalDateTime; import lombok.AllArgsConstructor; import lombok.Getter; @@ -20,4 +21,7 @@ public class MemberScheduleUpdateRequest { private LocalDateTime startAt; private LocalDateTime endAt; + + @Pattern(regexp = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", message = "색상은 유효한 HEX 형식이어야 합니다 (예: #FFFFFF)") + private String color; } diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/dto/ScheduleDetails.java b/src/main/java/com/dongsoop/dongsoop/calendar/dto/ScheduleDetails.java index 8c5b8e93f..c82ab2f5f 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/dto/ScheduleDetails.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/dto/ScheduleDetails.java @@ -24,4 +24,6 @@ public class ScheduleDetails { private LocalDateTime endAt; private ScheduleType type; + + private String color; } diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java b/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java index 05eb76f17..5edbe6979 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java @@ -50,6 +50,9 @@ public class MemberSchedule extends BaseEntity { @Column(name = "end_at", nullable = false) private LocalDateTime endAt; + @Column(name = "color", length = 7) + private String color; + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id", nullable = false) @Getter @@ -72,6 +75,7 @@ public ScheduleDetails toDetails() { .startAt(startAt) .endAt(endAt) .type(ScheduleType.MEMBER) + .color(color) .build(); } @@ -91,5 +95,9 @@ public void update(MemberScheduleUpdateRequest request) { if (request.getEndAt() != null) { this.endAt = request.getEndAt(); } + + if (request.getColor() != null) { + this.color = request.getColor(); + } } } From 4622ee349c76cb6a53a9c80b0ff7bb788ac305f4 Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 4 Jun 2026 21:40:45 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20MemberSchedule=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=EC=9E=90=EC=97=90=20color=20=EC=9D=B8=EC=88=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EB=A1=9C=20=EC=9D=B8=ED=95=9C=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BB=B4=ED=8C=8C=EC=9D=BC=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../notification/CalendarNotificationSettingTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/dongsoop/dongsoop/notification/CalendarNotificationSettingTest.java b/src/test/java/com/dongsoop/dongsoop/notification/CalendarNotificationSettingTest.java index 358ca8bbd..fb8ba226a 100644 --- a/src/test/java/com/dongsoop/dongsoop/notification/CalendarNotificationSettingTest.java +++ b/src/test/java/com/dongsoop/dongsoop/notification/CalendarNotificationSettingTest.java @@ -110,11 +110,11 @@ void setUp() { // 회원 일정 추가 MemberSchedule memberSchedule1 = new MemberSchedule(null, "title", "content", LocalDateTime.now(), - LocalDateTime.now(), member1); + LocalDateTime.now(), null, member1); MemberSchedule memberSchedule2 = new MemberSchedule(null, "title", "content", LocalDateTime.now(), - LocalDateTime.now(), member2); + LocalDateTime.now(), null, member2); MemberSchedule memberSchedule3 = new MemberSchedule(null, "title", "content", LocalDateTime.now(), - LocalDateTime.now(), member3); + LocalDateTime.now(), null, member3); memberScheduleRepository.saveAll(List.of(memberSchedule1, memberSchedule2, memberSchedule3)); From e90646063d31d420384fe99f7ce7dc0277b99dab Mon Sep 17 00:00:00 2001 From: autocommit Date: Thu, 4 Jun 2026 21:48:20 +0900 Subject: [PATCH 3/3] =?UTF-8?q?refactor:=20color=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=EC=97=90=EC=84=9C=20#=20=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=206?= =?UTF-8?q?=EC=9E=90=EB=A6=AC=20HEX=20=ED=98=95=EC=8B=9D=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- .../dongsoop/calendar/dto/CreateMemberScheduleRequest.java | 2 +- .../dongsoop/calendar/dto/MemberScheduleUpdateRequest.java | 2 +- .../com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java b/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java index 6316cb8d1..9b55bac5d 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/dto/CreateMemberScheduleRequest.java @@ -28,7 +28,7 @@ public class CreateMemberScheduleRequest { @NotNull private LocalDateTime endAt; - @Pattern(regexp = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", message = "색상은 유효한 HEX 형식이어야 합니다 (예: #FFFFFF)") + @Pattern(regexp = "^[A-Fa-f0-9]{6}$", message = "색상은 # 없이 6자리 HEX 형식이어야 합니다 (예: FFFFFF)") private String color; public MemberSchedule toEntity() { diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java b/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java index 69a7a6213..ddf24dbec 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/dto/MemberScheduleUpdateRequest.java @@ -22,6 +22,6 @@ public class MemberScheduleUpdateRequest { private LocalDateTime endAt; - @Pattern(regexp = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", message = "색상은 유효한 HEX 형식이어야 합니다 (예: #FFFFFF)") + @Pattern(regexp = "^[A-Fa-f0-9]{6}$", message = "색상은 # 없이 6자리 HEX 형식이어야 합니다 (예: FFFFFF)") private String color; } diff --git a/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java b/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java index 5edbe6979..7771ab2c1 100644 --- a/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java +++ b/src/main/java/com/dongsoop/dongsoop/calendar/entity/MemberSchedule.java @@ -50,7 +50,7 @@ public class MemberSchedule extends BaseEntity { @Column(name = "end_at", nullable = false) private LocalDateTime endAt; - @Column(name = "color", length = 7) + @Column(name = "color", length = 6) private String color; @ManyToOne(fetch = FetchType.LAZY)