Skip to content

Commit 2a4e450

Browse files
committed
[refactor] sceneNum pageNum으로 변경 및 title 필드 제거
1 parent c185756 commit 2a4e450

3 files changed

Lines changed: 38 additions & 44 deletions

File tree

src/main/java/everTale/everTale_be/domain/story/controller/StoryController.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class StoryController {
2929
@GetMapping("/{storyId}/scenes/{pageNum}")
3030
public ApiResponse<SceneResponseDTO> getSceneBySceneNum(
3131
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
32-
@Parameter(description = "장면 번호") @PathVariable int pageNum
32+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum
3333
) {
3434
SceneResponseDTO scene = storyService.getSceneBySceneNum(storyId, pageNum);
3535
return ApiResponse.onSuccess(scene);
@@ -53,13 +53,13 @@ public ApiResponse<String> updateStoryTitle(
5353
}
5454

5555
@Operation(summary = "줄거리 수정 API", description = "특정 장면의 줄거리를 사용자가 수정한 내용으로 업데이트한다.")
56-
@PatchMapping("/{storyId}/scenes/{sceneNum}")
56+
@PatchMapping("/{storyId}/scenes/{pageNum}")
5757
public ApiResponse<String> updateSceneContent(
5858
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
59-
@Parameter(description = "장면 번호") @PathVariable int sceneNum,
59+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum,
6060
@RequestBody StoryRequestDTO.StoryUpdateRequestDTO request
6161
) {
62-
String updatedContent = storyService.updateSceneContent(storyId, sceneNum, request.getUpdatedContent());
62+
String updatedContent = storyService.updateSceneContent(storyId, pageNum, request.getUpdatedContent());
6363
return ApiResponse.onSuccess(updatedContent);
6464
}
6565

@@ -101,55 +101,55 @@ public ApiResponse<String> createInitStory(
101101
}
102102

103103
@Operation(summary = "다음 줄거리 생성 API", description = "이전 줄거리를 기반으로 다음 줄거리를 생성한다.")
104-
@PostMapping("/{storyId}/scenes/{sceneNum}")
104+
@PostMapping("/{storyId}/scenes/{pageNum}")
105105
public ApiResponse<String> createNextStory(
106106
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
107-
@Parameter(description = "장면 번호") @PathVariable int sceneNum) {
108-
String nextStory = storyService.generateNextScene(storyId, sceneNum);
107+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum) {
108+
String nextStory = storyService.generateNextScene(storyId, pageNum);
109109
return ApiResponse.onSuccess(nextStory);
110110
}
111111

112112
@Operation(summary = "질문 생성 API", description = "이전 줄거리를 기반으로 아이에게 던질 질문을 생성한다.")
113-
@PostMapping("/{storyId}/scenes/{sceneNum}/question")
113+
@PostMapping("/{storyId}/scenes/{pageNum}/question")
114114
public ApiResponse<String> createQuestionFromPrevScene(
115115
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
116-
@Parameter(description = "장면 번호") @PathVariable int sceneNum) {
117-
String question = storyService.generateQuestionFromPreviousScene(storyId, sceneNum);
116+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum) {
117+
String question = storyService.generateQuestionFromPreviousScene(storyId, pageNum);
118118
return ApiResponse.onSuccess(question);
119119
}
120120

121121
@Operation(summary = "답변 기반 다음 줄거리 생성 API", description = "아이의 답변을 기반으로 다음 줄거리를 생성한다.")
122-
@PostMapping("/{storyId}/scenes/{sceneNum}/next-from-answer")
122+
@PostMapping("/{storyId}/scenes/{pageNum}/next-from-answer")
123123
public ApiResponse<String> createNextSceneFromAnswer(
124124
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
125-
@Parameter(description = "장면 번호") @PathVariable int sceneNum,
125+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum,
126126
@RequestBody StoryRequestDTO.StoryAnswerRequestDTO request
127127
) {
128-
String nextStory = storyService.generateNextSceneWithAnswer(storyId, sceneNum, request.getAnswer());
128+
String nextStory = storyService.generateNextSceneWithAnswer(storyId, pageNum, request.getAnswer());
129129
return ApiResponse.onSuccess(nextStory);
130130
}
131131
@Operation(summary = "스케치 기반 이미지 생성 API", description = "아이의 스케치 이미지와 줄거리를 기반으로 이미지를 생성합니다.")
132132
@PostMapping(
133-
value = "/{storyId}/scenes/{sceneNum}/controlnet",
133+
value = "/{storyId}/scenes/{pageNum}/controlnet",
134134
consumes = MediaType.MULTIPART_FORM_DATA_VALUE
135135
)
136136
public ApiResponse<String> createImageFromSketch(
137137
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
138-
@Parameter(description = "장면 번호") @PathVariable int sceneNum,
138+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum,
139139
@Parameter(description = "스케치 이미지 파일", content = @Content(mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE))
140140
@RequestPart("sketch") MultipartFile sketch
141141
) {
142-
String image = storyService.generateImageFromSketch(storyId, sceneNum, sketch);
142+
String image = storyService.generateImageFromSketch(storyId, pageNum, sketch);
143143
return ApiResponse.onSuccess(image);
144144
}
145145

146146
@Operation(summary = "줄거리 기반 이미지 생성 API", description = "줄거리 텍스트만을 기반으로 이미지를 생성합니다.")
147-
@PostMapping( "/{storyId}/scenes/{sceneNum}/dalle")
147+
@PostMapping( "/{storyId}/scenes/{pageNum}/dalle")
148148
public ApiResponse<String> createImageFromPrompt(
149149
@Parameter(description = "스토리 ID") @PathVariable Long storyId,
150-
@Parameter(description = "장면 번호") @PathVariable int sceneNum
150+
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum
151151
) {
152-
String image = storyService.generateImageFromPrompt(storyId, sceneNum);
152+
String image = storyService.generateImageFromPrompt(storyId, pageNum);
153153
return ApiResponse.onSuccess(image);
154154
}
155155

src/main/java/everTale/everTale_be/domain/story/dto/StoryRequestDTO.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,12 @@ public static class NextStoryGenerateRequestDTO {
3737
@Schema(description = "이전 줄거리", example = "여행을 좋아하는 토토로는 숲으로 향했어요. 숲에서는 신비한 친구가 기다리고 있었어요.")
3838
private String previous;
3939

40-
@Schema(description = "장면 번호", example = "2")
41-
private int sceneNum;
40+
@Schema(description = "페이지 번호(1~8)", example = "2")
41+
private int pageNum;
4242

4343
@Schema(description = "장르", example = "ADVENTURE")
4444
private String genre;
4545

46-
@Schema(description = "동화 제목", example = "토토로의 모험 여행")
47-
private String title;
48-
4946
@Schema(description = "주인공 이름", example = "토토로")
5047
private String name;
5148

@@ -90,7 +87,6 @@ public static class StoryUpdateRequestDTO {
9087
@Getter
9188
@Builder
9289
public static class FastApiInitStoryRequestDTO {
93-
private String title;
9490
private String genre;
9591
private String worldView;
9692
private String name;

src/main/java/everTale/everTale_be/domain/story/service/StoryService.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ public void updateStoryTitle(Long storyId, String title) {
7272

7373

7474
@Transactional
75-
public String updateSceneContent(Long storyId, int sceneNum, String updatedContent) {
76-
Scene scene = findMyScene(storyId, sceneNum);
75+
public String updateSceneContent(Long storyId, int pageNum, String updatedContent) {
76+
Scene scene = findMyScene(storyId, pageNum);
7777
scene.updateContent(updatedContent);
7878
return updatedContent;
7979
}
@@ -182,7 +182,6 @@ public String generateInitScene(Long storyId, StoryRequestDTO.StoryWorldViewRequ
182182

183183
// 3. FastAPI 요청용 JSON 만들기
184184
StoryRequestDTO.FastApiInitStoryRequestDTO requestDto = StoryRequestDTO.FastApiInitStoryRequestDTO.builder()
185-
.title(story.getTitle())
186185
.genre(request.getGenre().name())
187186
.worldView(request.getWorldView())
188187
.name(storyCharacter.getName())
@@ -214,9 +213,9 @@ public String generateInitScene(Long storyId, StoryRequestDTO.StoryWorldViewRequ
214213

215214
// 이전 장면 기반 다음 줄거리 생성
216215
@Transactional
217-
public String generateNextScene(Long storyId, int sceneNum) {
216+
public String generateNextScene(Long storyId, int pageNum) {
218217
// 1. 이전 줄거리 조회
219-
Scene prevScene = findMyScene(storyId, sceneNum-1);
218+
Scene prevScene = findMyScene(storyId, pageNum-1);
220219
String previousContent = prevScene.getContent();
221220

222221
// 2. Story & Character 조회
@@ -232,9 +231,8 @@ public String generateNextScene(Long storyId, int sceneNum) {
232231
StoryRequestDTO.NextStoryGenerateRequestDTO dto =
233232
StoryRequestDTO.NextStoryGenerateRequestDTO.builder()
234233
.previous(previousContent)
235-
.sceneNum(sceneNum)
234+
.pageNum(pageNum)
236235
.genre(story.getGenre().name())
237-
.title(story.getTitle())
238236
.name(character.getName())
239237
.age(character.getAge())
240238
.gender(character.getGender().name())
@@ -246,7 +244,7 @@ public String generateNextScene(Long storyId, int sceneNum) {
246244

247245
// 6. 새 Scene 저장
248246
Scene newScene = Scene.builder()
249-
.page(sceneNum)
247+
.page(pageNum)
250248
.content(nextContent)
251249
.build();
252250
story.addScene(newScene);
@@ -256,31 +254,31 @@ public String generateNextScene(Long storyId, int sceneNum) {
256254

257255
// 이전 장면 기반 질문 생성
258256
@Transactional(readOnly = true)
259-
public String generateQuestionFromPreviousScene(Long storyId, int sceneNum) {
260-
Scene prevScene = findMyScene(storyId, sceneNum - 1);
257+
public String generateQuestionFromPreviousScene(Long storyId, int pageNum) {
258+
Scene prevScene = findMyScene(storyId, pageNum - 1);
261259
return storyApiClient.callFastApiForQuestion(prevScene.getContent());
262260
}
263261

264262
// 아이의 대답 기반 다음 줄거리 생성
265263
@Transactional
266-
public String generateNextSceneWithAnswer(Long storyId, int sceneNum, String answer) {
267-
Scene prevScene = findMyScene(storyId, sceneNum - 1);
264+
public String generateNextSceneWithAnswer(Long storyId, int pageNum, String answer) {
265+
Scene prevScene = findMyScene(storyId, pageNum - 1);
268266

269267
String nextContent = storyApiClient.callFastApiForNextStoryWithAnswer(prevScene.getContent(), answer);
270268

271269
Story story = prevScene.getStory();
272270

273271
Scene newScene = Scene.builder()
274-
.page(sceneNum)
272+
.page(pageNum)
275273
.content(nextContent)
276274
.build();
277275
story.addScene(newScene);
278276
return nextContent;
279277
}
280278
// 줄거리 및 아이그림 기반 그림 생성
281279
@Transactional
282-
public String generateImageFromSketch(Long storyId, int sceneNum, MultipartFile sketch) {
283-
Scene scene = findMyScene(storyId, sceneNum);
280+
public String generateImageFromSketch(Long storyId, int pageNum, MultipartFile sketch) {
281+
Scene scene = findMyScene(storyId, pageNum);
284282

285283
String prompt = scene.getContent();
286284
String imageUrl = storyApiClient.callFastApiForImageFromSketch(sketch, prompt, scene.getStory().getGenre().name());
@@ -291,8 +289,8 @@ public String generateImageFromSketch(Long storyId, int sceneNum, MultipartFile
291289

292290
// 줄거리 기반 그림 생성
293291
@Transactional
294-
public String generateImageFromPrompt(Long storyId, int sceneNum) {
295-
Scene scene = findMyScene(storyId, sceneNum);
292+
public String generateImageFromPrompt(Long storyId, int pageNum) {
293+
Scene scene = findMyScene(storyId, pageNum);
296294

297295
String prompt = scene.getContent();
298296
String imageUrl = storyApiClient.callFastApiForImageFromPrompt(prompt, scene.getStory().getGenre().name());
@@ -301,9 +299,9 @@ public String generateImageFromPrompt(Long storyId, int sceneNum) {
301299
return imageUrl;
302300
}
303301

304-
private Scene findMyScene(Long storyId, int sceneNum){
302+
private Scene findMyScene(Long storyId, int pageNum){
305303
Long profileId = profileHelper.getAuthenticatedProfileId();
306-
return sceneRepository.findByStoryIdAndPageAndStoryProfileId(storyId, sceneNum, profileId)
304+
return sceneRepository.findByStoryIdAndPageAndStoryProfileId(storyId, pageNum, profileId)
307305
.orElseThrow(() -> new NotFoundHandler(ErrorStatus.SCENE_NOT_FOUND));
308306
}
309307
private Story findMyStory(Long storyId) {

0 commit comments

Comments
 (0)