Skip to content

Commit aefa5dd

Browse files
authored
Merge pull request #54 from DropThe8bit/feature/story
[refactor] 이미지 생성을 위한 프롬프트를 scene내용 -> 프롬프트 직접 입력으로 변경
2 parents f5408f4 + ff25b13 commit aefa5dd

4 files changed

Lines changed: 20 additions & 12 deletions

File tree

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
import everTale.everTale_be.global.apiPayload.ApiResponse;
99
import io.swagger.v3.oas.annotations.Operation;
1010
import io.swagger.v3.oas.annotations.Parameter;
11-
import io.swagger.v3.oas.annotations.media.Content;
1211
import io.swagger.v3.oas.annotations.tags.Tag;
1312
import lombok.RequiredArgsConstructor;
1413
import org.springframework.data.domain.Pageable;
1514
import org.springframework.data.web.PageableDefault;
1615
import org.springframework.http.MediaType;
16+
import org.springframework.validation.annotation.Validated;
1717
import org.springframework.web.bind.annotation.*;
1818
import org.springframework.web.multipart.MultipartFile;
1919

@@ -128,18 +128,17 @@ public ApiResponse<String> createNextSceneFromAnswer(
128128
String nextStory = storyService.generateNextSceneWithAnswer(storyId, pageNum, request.getAnswer());
129129
return ApiResponse.onSuccess(nextStory);
130130
}
131-
@Operation(summary = "스케치 기반 이미지 생성 API", description = "아이의 스케치 이미지와 줄거리를 기반으로 이미지를 생성합니다.")
131+
@Operation(summary = "스케치 기반 이미지 생성 API", description = "아이의 스케치 이미지와 장면 프롬프트를 기반으로 이미지를 생성합니다.")
132132
@PostMapping(
133133
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,
138138
@Parameter(description = "페이지 번호(1~8)") @PathVariable int pageNum,
139-
@Parameter(description = "스케치 이미지 파일", content = @Content(mediaType = MediaType.APPLICATION_OCTET_STREAM_VALUE))
140-
@RequestPart("sketch") MultipartFile sketch
141-
) {
142-
String image = storyService.generateImageFromSketch(storyId, pageNum, sketch);
139+
@Validated @ModelAttribute StoryRequestDTO.SketchImageRequestDTO request
140+
) {
141+
String image = storyService.generateImageFromSketch(storyId, pageNum, request);
143142
return ApiResponse.onSuccess(image);
144143
}
145144

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import everTale.everTale_be.domain.story.entity.enums.Genre;
44
import io.swagger.v3.oas.annotations.media.Schema;
55
import lombok.*;
6+
import org.springframework.web.multipart.MultipartFile;
67

78
import java.util.List;
89

@@ -83,6 +84,16 @@ public static class StoryUpdateRequestDTO {
8384
@Schema(description = "수정된 줄거리 내용", example = "주인공은 용기를 내어 드래곤에게 다가갔다.")
8485
private String updatedContent;
8586
}
87+
@Data
88+
@AllArgsConstructor
89+
public static class SketchImageRequestDTO {
90+
91+
@Schema(description = "장면 프롬프트", example = "A little girl holding a balloon")
92+
private String prompt;
93+
94+
@Schema(type = "string", format = "binary", description = "스케치 이미지 파일")
95+
private MultipartFile sketch;
96+
}
8697

8798
@Getter
8899
@Builder

src/main/java/everTale/everTale_be/domain/story/entity/Scene.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class Scene {
1616
@GeneratedValue(strategy = GenerationType.IDENTITY)
1717
private Long id;
1818

19+
@Column(columnDefinition = "TEXT")
1920
private String content;
2021

2122
private int page;

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

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,14 +295,11 @@ public String generateNextSceneWithAnswer(Long storyId, int pageNum, String answ
295295
story.addScene(newScene);
296296
return nextContent;
297297
}
298-
// 줄거리 및 아이그림 기반 그림 생성
298+
// 장면 프롬프트 및 아이그림 기반 그림 생성
299299
@Transactional
300-
public String generateImageFromSketch(Long storyId, int pageNum, MultipartFile sketch) {
300+
public String generateImageFromSketch(Long storyId, int pageNum, StoryRequestDTO.SketchImageRequestDTO request) {
301301
Scene scene = findMyScene(storyId, pageNum);
302-
303-
String prompt = scene.getContent();
304-
String imageUrl = storyApiClient.callFastApiForImageFromSketch(sketch, prompt, scene.getStory().getGenre().name());
305-
302+
String imageUrl = storyApiClient.callFastApiForImageFromSketch(request.getSketch(), request.getPrompt(), scene.getStory().getGenre().name());
306303
scene.updateImageUrl(imageUrl);
307304
return imageUrl;
308305
}

0 commit comments

Comments
 (0)