@@ -54,7 +54,7 @@ public RsData<List<PlanListResponse>> getPlanList() {
5454 * @return 계획 상세 정보 (200 OK)
5555 */
5656 @ GetMapping ("/{planId}" )
57- @ Operation (summary = "계획 상세 조회" , description = "특정 계획의 상세 정보를 조회합니다." )
57+ @ Operation (summary = "계획 상세 조회" , description = "특정 계획의 상세 정보를 조회합니다. 계획에 대한 모든 세부 정보와 참가자 목록, 일정 목록을 포함합니다. " )
5858 public RsData <PlanDetailResponse > getPlanDetail (@ PathVariable Long planId ) {
5959 User user = rq .getUser ();
6060 PlanDetailResponse planDetail = planService .getPlanDetail (planId , user );
@@ -84,7 +84,7 @@ public RsData<PlanResponse> createPlan(
8484 * @return 수정된 계획 정보 (200 OK)
8585 */
8686 @ PatchMapping ("/update/{planId}" )
87- @ Operation (summary = "계획 수정" , description = "기존 계획의 정보를 수정합니다." )
87+ @ Operation (summary = "계획 수정" , description = "기존 계획의 제목, 날짜 등의 정보를 수정합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 수정할 수 있습니다 ." )
8888 public RsData <PlanResponse > updatePlan (
8989 @ PathVariable Long planId ,
9090 @ Valid @ RequestBody PlanUpdateRequest request ) {
@@ -100,9 +100,8 @@ public RsData<PlanResponse> updatePlan(
100100 * @return 삭제된 계획 ID (200 OK)
101101 */
102102 @ DeleteMapping ("/delete/{planId}" )
103- @ Operation (summary = "계획 삭제" , description = "기존 계획을 삭제합니다." )
104- public RsData <PlanDeleteResponse > deletePlan (
105- @ PathVariable Long planId ) {
103+ @ Operation (summary = "계획 삭제" , description = "기존 계획을 삭제합니다. 계획의 소유자만 삭제할 수 있으며, 삭제 시 관련된 모든 일정과 참가자 정보도 함께 삭제됩니다." )
104+ public RsData <PlanDeleteResponse > deletePlan (@ PathVariable Long planId ) {
106105 User user = rq .getUser ();
107106 PlanDeleteResponse deleteResponse = planService .deletePlan (planId , user );
108107 return RsData .success ("계획 삭제 성공" , deleteResponse );
@@ -117,7 +116,7 @@ public RsData<PlanDeleteResponse> deletePlan(
117116 * @return 생성된 일정 정보 (201 Created)
118117 */
119118 @ PostMapping ("/{planId}/schedules" )
120- @ Operation (summary = "일정 추가" , description = "계획에 새로운 일정을 추가합니다." )
119+ @ Operation (summary = "일정 추가" , description = "계획에 새로운 일정을 추가합니다. 일정 타입(이동수단, 식사, 대기, 활동)에 따라 필요한 정보가 다릅니다. 이동수단 타입의 경우 출발지/도착지 좌표와 이동수단 종류가 필수입니다. " )
121120 public RsData <ScheduleResponse > addSchedule (
122121 @ PathVariable Long planId ,
123122 @ Valid @ RequestBody ScheduleAddRequest request ) {
@@ -133,9 +132,8 @@ public RsData<ScheduleResponse> addSchedule(
133132 * @return 일정 목록 (200 OK)
134133 */
135134 @ GetMapping ("/{planId}/schedules" )
136- @ Operation (summary = "일정 목록 조회" , description = "계획의 일정 목록을 타임라인 형태로 조회합니다." )
137- public RsData <ScheduleListResponse > getSchedules (
138- @ PathVariable Long planId ) {
135+ @ Operation (summary = "일정 목록 조회" , description = "계획의 일정 목록을 타임라인 형태로 조회합니다. 시작 시간 순으로 정렬된 일정 목록을 반환합니다." )
136+ public RsData <ScheduleListResponse > getSchedules (@ PathVariable Long planId ) {
139137 User user = rq .getUser ();
140138 ScheduleListResponse response = planService .getSchedules (planId , user );
141139 return RsData .success ("일정 목록 조회 성공" , response );
@@ -149,7 +147,7 @@ public RsData<ScheduleListResponse> getSchedules(
149147 * @return 일정 상세 정보 (200 OK)
150148 */
151149 @ GetMapping ("/{planId}/schedules/{scheduleId}" )
152- @ Operation (summary = "일정 상세 조회" , description = "특정 일정의 상세 정보를 조회합니다." )
150+ @ Operation (summary = "일정 상세 조회" , description = "특정 일정의 상세 정보를 조회합니다. 일정의 모든 속성과 위치 정보를 포함합니다. " )
153151 public RsData <ScheduleResponse > getSchedule (
154152 @ PathVariable Long planId ,
155153 @ PathVariable Long scheduleId ) {
@@ -167,7 +165,7 @@ public RsData<ScheduleResponse> getSchedule(
167165 * @return 수정된 일정 정보 (200 OK)
168166 */
169167 @ PatchMapping ("/{planId}/schedules/{scheduleId}" )
170- @ Operation (summary = "일정 수정" , description = "기존 일정의 정보를 수정합니다." )
168+ @ Operation (summary = "일정 수정" , description = "기존 일정의 정보를 수정합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 수정할 수 있습니다. " )
171169 public RsData <ScheduleResponse > updateSchedule (
172170 @ PathVariable Long planId ,
173171 @ PathVariable Long scheduleId ,
@@ -185,7 +183,7 @@ public RsData<ScheduleResponse> updateSchedule(
185183 * @return 삭제된 일정 ID (200 OK)
186184 */
187185 @ DeleteMapping ("/{planId}/schedules/{scheduleId}" )
188- @ Operation (summary = "일정 삭제" , description = "기존 일정을 삭제합니다." )
186+ @ Operation (summary = "일정 삭제" , description = "기존 일정을 삭제합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 삭제할 수 있습니다. " )
189187 public RsData <ScheduleDeleteResponse > deleteSchedule (
190188 @ PathVariable Long planId ,
191189 @ PathVariable Long scheduleId ) {
@@ -203,7 +201,7 @@ public RsData<ScheduleDeleteResponse> deleteSchedule(
203201 * @return 성공 메시지 (200 OK)
204202 */
205203 @ PatchMapping ("/{planId}/participants/{participantId}/role" )
206- @ Operation (summary = "참가자 역할 수정" , description = "참가자의 역할을 수정합니다. ( Owner, Editor, Viewer) " )
204+ @ Operation (summary = "참가자 역할 수정" , description = "참가자의 역할을 수정합니다. Owner(소유자) , Editor(편집자) , Viewer(조회자) 중 하나로 설정할 수 있습니다. 계획의 소유자만 다른 참가자의 역할을 수정할 수 있습니다. " )
207205 public RsData <Void > updateParticipantRole (
208206 @ PathVariable Long planId ,
209207 @ PathVariable Long participantId ,
@@ -213,9 +211,76 @@ public RsData<Void> updateParticipantRole(
213211 return RsData .success ("참가자 역할 수정 성공" , null );
214212 }
215213
216- // POST /api/v1/plans/invite/{planID} - 계획 공유 초대
217- // POST /api/v1/plans/accept/{planID} - 계획 공유 수락
218- // POST /api/v1/plans/deny/{planID} - 계획 공유 거절
219- // DELETE /api/v1/plans/kick/{planID} - 계획 공유 인원 추방
220- // DELETE /api/v1/plans/quit/{planID} - 계획 공유 나가기
214+ /**
215+ * 계획 공유 초대
216+ *
217+ * @param planId 계획 ID
218+ * @return 성공 메시지 (200 OK)
219+ */
220+ @ PostMapping ("/invite/{planId}" )
221+ @ Operation (summary = "계획 공유 초대" , description = "다른 사용자에게 계획 공유를 초대합니다. 계획의 소유자 또는 편집 권한이 있는 사용자만 초대할 수 있습니다. 초대된 사용자는 수락 또는 거절할 수 있습니다." )
222+ public RsData <Void > invitePlan (@ PathVariable Long planId ) {
223+ User user = rq .getUser ();
224+ // TODO: 구현 필요
225+ return RsData .success ("계획 공유 초대 성공" , null );
226+ }
227+
228+ /**
229+ * 계획 공유 수락
230+ *
231+ * @param planId 계획 ID
232+ * @return 성공 메시지 (200 OK)
233+ */
234+ @ PostMapping ("/accept/{planId}" )
235+ @ Operation (summary = "계획 공유 수락" , description = "받은 계획 공유 초대를 수락합니다. 수락 시 해당 계획에 참가자로 추가되며, 초대 시 설정된 역할(Editor 또는 Viewer)로 참여하게 됩니다." )
236+ public RsData <Void > acceptPlanInvite (@ PathVariable Long planId ) {
237+ User user = rq .getUser ();
238+ // TODO: 구현 필요
239+ return RsData .success ("계획 공유 수락 성공" , null );
240+ }
241+
242+ /**
243+ * 계획 공유 거절
244+ *
245+ * @param planId 계획 ID
246+ * @return 성공 메시지 (200 OK)
247+ */
248+ @ PostMapping ("/deny/{planId}" )
249+ @ Operation (summary = "계획 공유 거절" , description = "받은 계획 공유 초대를 거절합니다. 거절 시 해당 계획에 참가자로 추가되지 않으며, 초대 상태가 거절로 변경됩니다." )
250+ public RsData <Void > denyPlanInvite (@ PathVariable Long planId ) {
251+ User user = rq .getUser ();
252+ // TODO: 구현 필요
253+ return RsData .success ("계획 공유 거절 성공" , null );
254+ }
255+
256+ /**
257+ * 계획 공유 인원 추방
258+ *
259+ * @param planId 계획 ID
260+ * @param participantId 참가자 ID
261+ * @return 성공 메시지 (200 OK)
262+ */
263+ @ DeleteMapping ("/kick/{planId}/{participantId}" )
264+ @ Operation (summary = "계획 공유 인원 추방" , description = "계획에 참여 중인 사용자를 추방합니다. 계획의 소유자만 다른 참가자를 추방할 수 있으며, 소유자 자신은 추방할 수 없습니다." )
265+ public RsData <Void > kickParticipant (
266+ @ PathVariable Long planId ,
267+ @ PathVariable Long participantId ) {
268+ User user = rq .getUser ();
269+ // TODO: 구현 필요
270+ return RsData .success ("참가자 추방 성공" , null );
271+ }
272+
273+ /**
274+ * 계획 공유 나가기
275+ *
276+ * @param planId 계획 ID
277+ * @return 성공 메시지 (200 OK)
278+ */
279+ @ DeleteMapping ("/quit/{planId}" )
280+ @ Operation (summary = "계획 공유 나가기" , description = "공유된 계획에서 나갑니다. 계획의 소유자가 아닌 참가자만 사용할 수 있으며, 나가기 시 해당 계획의 참가자 목록에서 제거됩니다." )
281+ public RsData <Void > quitPlan (@ PathVariable Long planId ) {
282+ User user = rq .getUser ();
283+ // TODO: 구현 필요
284+ return RsData .success ("계획 나가기 성공" , null );
285+ }
221286}
0 commit comments