@@ -32,10 +32,36 @@ public interface ChallengeApi {
3232 content = @ Content (schema = @ Schema (implementation = CommonResponse .class ),
3333 examples = @ ExampleObject (value = """
3434 {
35- "status": 201,
36- "code": "201 OK",
37- "message": "챌린지 등록 성공",
38- "data": true
35+ "status": 200,
36+ "code": "200 OK",
37+ "message": "챌린지 등록 완료",
38+ "data": {
39+ "id": 6,
40+ "name": "챌린지 명",
41+ "description": "챌린지 설명",
42+ "purpose": "챌린지 목적",
43+ "month": 5,
44+ "year": 2025,
45+ "step1Goal1Type": "DIET_SEASONAL_ONCE",
46+ "step1Goal2Type": "DIET_LUNCH",
47+ "step2Goal1Type": "DIET_SEASONAL_ONCE",
48+ "step2Goal2Type": "DIET_BREAKFAST",
49+ "step3Goal1Type": "DIET_SEASONAL_ONCE",
50+ "step3Goal2Type": "DIET_THREE_MEALS",
51+ "step4Goal1Type": "RECIPE_SEASONAL_ONCE",
52+ "step4Goal2Type": "DIET_60_A_MONTH",
53+ "step1Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
54+ "step1Goal2Desc": "점심 챙겨 먹기",
55+ "step2Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
56+ "step2Goal2Desc": "아침 챙겨 먹기",
57+ "step3Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
58+ "step3Goal2Desc": "하루 3끼 식단 기록",
59+ "step4Goal1Desc": "재철 식재료를 활용한 레시피 작성",
60+ "step4Goal2Desc": "1달 동안 누적 60끼 식단 기록",
61+ "achievementName": "업적 명",
62+ "achievementImageUrl": "업적 달성 이미지",
63+ "grayAchievementImageUrl": "업적 미달성 이미지"
64+ }
3965 }
4066 """ ))),
4167 @ ApiResponse (responseCode = "500" , description = "챌린지 등록 실패" ,
@@ -57,8 +83,44 @@ ResponseEntity<CommonResponse<ChallengeResponseDTO>> registerAchievement(
5783 {
5884 "status": 200,
5985 "code": "200 OK",
60- "message": "연도 별 챌린지 조회 성공",
61- "data": true
86+ "message": "2025년도 챌린지 목록 조회 성공",
87+ "data": [
88+ {
89+ "id": 1,
90+ "name": "2월 챌린지",
91+ "month": 2,
92+ "year": 2025,
93+ "achievementName": "비타민 수호자"
94+ },
95+ {
96+ "id": 2,
97+ "name": "3월 챌린지",
98+ "month": 3,
99+ "year": 2025,
100+ "achievementName": "비타민 수호자"
101+ },
102+ {
103+ "id": 3,
104+ "name": "4월 챌린지",
105+ "month": 4,
106+ "year": 2025,
107+ "achievementName": "비타민 수호자"
108+ },
109+ {
110+ "id": 4,
111+ "name": "5월 봄맞이 챌린지",
112+ "month": 5,
113+ "year": 2025,
114+ "achievementName": "비타민 수호자"
115+ },
116+ {
117+ "id": 5,
118+ "name": "6월 챌린지",
119+ "month": 6,
120+ "year": 2025,
121+ "achievementName": "비타민 수호자"
122+ }
123+ ]
62124 }
63125 """ ))),
64126 @ ApiResponse (responseCode = "500" , description = "연도 별 챌린지 조회 실패" ,
@@ -79,8 +141,27 @@ ResponseEntity<CommonResponse<List<ChallengeListResponseDTO>>> getChallengesByYe
79141 {
80142 "status": 200,
81143 "code": "200 OK",
82- "message": "특정 챌린지 조회 성공",
83- "data": true
144+ "message": "챌린지 상세 조회 성공",
145+ "data": {
146+ "ingredients": [
147+ "냉이",
148+ "달래",
149+ "쑥"
150+ ],
151+ "name": "3월 챌린지",
152+ "period": "3월 1일 ~ 3월 31일",
153+ "description": "설명- 3월 챌린지입니다.(식재료: 쑥 id: 1142)",
154+ "purpose": "목적- 3월 챌린지입니다.",
155+ "step1Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
156+ "step1Goal2Desc": "점심 챙겨 먹기",
157+ "step2Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
158+ "step2Goal2Desc": "아침 챙겨 먹기",
159+ "step3Goal1Desc": "하루 한 끼 재철 식재료를 포함한 식사",
160+ "step3Goal2Desc": "하루 3끼 식단 기록",
161+ "step4Goal1Desc": "재철 식재료를 활용한 레시피 작성",
162+ "step4Goal2Desc": "1달 동안 누적 60끼 식단 기록",
163+ "achievementName": "비타민 수호자"
164+ }
84165 }
85166 """ ))),
86167 @ ApiResponse (responseCode = "500" , description = "특정 챌린지 조회 실패" ,
@@ -100,8 +181,28 @@ ResponseEntity<CommonResponse<ChallengeDetailResponseDTO>> getChallengeDetail(
100181 {
101182 "status": 200,
102183 "code": "200 OK",
103- "message": "사용자의 현재 진행 상황 조회 성공",
104- "data": true
184+ "message": "A@example.com 사용자의 현재 진행 상황 조회 성공",
185+ "data": {
186+ "challengeId": 5,
187+ "name": "6월 챌린지",
188+ "year": 2025,
189+ "month": 6,
190+ "step1Goal1Achieved": false,
191+ "step1Goal2Achieved": false,
192+ "step2Goal1Active": false,
193+ "step2Goal2Active": false,
194+ "step2Goal1Achieved": false,
195+ "step2Goal2Achieved": false,
196+ "step3Goal1Active": false,
197+ "step3Goal2Active": false,
198+ "step3Goal1Achieved": false,
199+ "step3Goal2Achieved": false,
200+ "step4Goal1Active": false,
201+ "step4Goal2Active": false,
202+ "step4Goal1Achieved": false,
203+ "step4Goal2Achieved": false,
204+ "challengeCompleted": false
205+ }
105206 }
106207 """ ))),
107208 @ ApiResponse (responseCode = "500" , description = "사용자의 현재 진행 상황 조회 실패" ,
@@ -122,7 +223,12 @@ ResponseEntity<CommonResponse<ChallengeProgressResponseDTO>> getProgress(
122223 "status": 200,
123224 "code": "200 OK",
124225 "message": "챌린지 최종 완료 여부 조회 성공",
125- "data": true
226+ "data": {
227+ "achievementName": "비타민 수호자",
228+ "message": "아직 챌린지를 달성하지 못했습니다.",
229+ "achievementImageUrl": null,
230+ "challengeCompleted": false
231+ }
126232 }
127233 """ ))),
128234 @ ApiResponse (responseCode = "500" , description = "챌린지 최종 완료 여부 조회 실패" ,
@@ -143,8 +249,28 @@ ResponseEntity<CommonResponse<ChallengeCompletedResponseDTO>> getChallengeComple
143249 {
144250 "status": 200,
145251 "code": "200 OK",
146- "message": "사용자의 이전 챌린지 진행 상황 조회 성공",
147- "data": true
252+ "message": "A@example.com 사용자의 이전 챌린지 진행 상황 조회 성공",
253+ "data": {
254+ "challengeId": 2,
255+ "name": "3월 챌린지",
256+ "year": 2025,
257+ "month": 3,
258+ "step1Goal1Achieved": true,
259+ "step1Goal2Achieved": true,
260+ "step2Goal1Active": true,
261+ "step2Goal2Active": true,
262+ "step2Goal1Achieved": true,
263+ "step2Goal2Achieved": true,
264+ "step3Goal1Active": true,
265+ "step3Goal2Active": true,
266+ "step3Goal1Achieved": true,
267+ "step3Goal2Achieved": true,
268+ "step4Goal1Active": true,
269+ "step4Goal2Active": true,
270+ "step4Goal1Achieved": true,
271+ "step4Goal2Achieved": true,
272+ "challengeCompleted": true
273+ }
148274 }
149275 """ ))),
150276 @ ApiResponse (responseCode = "500" , description = "사용자의 이전 챌린지 진행 상황 조회 실패" ,
0 commit comments