-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #275 from tipi-tapi/develop
Release 1.2.1
- Loading branch information
Showing
30 changed files
with
964 additions
and
182 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 68 additions & 0 deletions
68
src/main/java/tipitapi/drawmytoday/domain/diary/controller/TestDiaryController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package tipitapi.drawmytoday.domain.diary.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.Parameter; | ||
import io.swagger.v3.oas.annotations.media.Content; | ||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import io.swagger.v3.oas.annotations.security.SecurityRequirement; | ||
import javax.validation.Valid; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.context.annotation.Profile; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.PostMapping; | ||
import org.springframework.web.bind.annotation.RequestBody; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
import tipitapi.drawmytoday.common.resolver.AuthUser; | ||
import tipitapi.drawmytoday.common.response.SuccessResponse; | ||
import tipitapi.drawmytoday.common.security.jwt.JwtTokenInfo; | ||
import tipitapi.drawmytoday.domain.diary.dto.CreateDiaryResponse; | ||
import tipitapi.drawmytoday.domain.diary.dto.CreateTestDiaryRequest; | ||
import tipitapi.drawmytoday.domain.diary.service.CreateDiaryService; | ||
import tipitapi.drawmytoday.domain.generator.exception.ImageGeneratorException; | ||
|
||
@Profile("!prod") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/diary") | ||
@SecurityRequirement(name = "Bearer Authentication") | ||
public class TestDiaryController { | ||
|
||
private final CreateDiaryService createDiaryService; | ||
|
||
@Operation(summary = "테스트 일기 생성", description = "테스트 일기를 생성합니다.(티켓 소모 x)") | ||
@ApiResponses(value = { | ||
@ApiResponse( | ||
responseCode = "201", | ||
description = "테스트 일기 생성 성공"), | ||
@ApiResponse( | ||
responseCode = "400", | ||
description = "U004 : 이미 그림일기를 그린 유저입니다.", | ||
content = @Content(schema = @Schema(hidden = true))), | ||
@ApiResponse( | ||
responseCode = "404", | ||
description = "E001 : 감정을 찾을 수 없습니다.", | ||
content = @Content(schema = @Schema(hidden = true))), | ||
@ApiResponse( | ||
responseCode = "409", | ||
description = "D001 : 이미 일기를 그린 날짜입니다.", | ||
content = @Content(schema = @Schema(hidden = true))), | ||
@ApiResponse( | ||
responseCode = "500", | ||
description = "DE001 : DALL-E 이미지 생성에 실패하였습니다. \r\n " | ||
+ "IIS001 : 이미지 스트림을 가져오는데 실패하였습니다.", | ||
content = @Content(schema = @Schema(hidden = true))), | ||
}) | ||
@PostMapping("/test") | ||
public ResponseEntity<SuccessResponse<CreateDiaryResponse>> createTestDiary( | ||
@RequestBody @Valid CreateTestDiaryRequest createTestDiaryRequest, | ||
@AuthUser @Parameter(hidden = true) JwtTokenInfo tokenInfo) throws ImageGeneratorException { | ||
return SuccessResponse.of(createDiaryService.createTestDiary( | ||
tokenInfo.getUserId(), createTestDiaryRequest | ||
)).asHttp(HttpStatus.CREATED); | ||
} | ||
|
||
} |
107 changes: 107 additions & 0 deletions
107
src/main/java/tipitapi/drawmytoday/domain/diary/dto/CreateTestDiaryRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package tipitapi.drawmytoday.domain.diary.dto; | ||
|
||
import com.fasterxml.jackson.annotation.JsonFormat; | ||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | ||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; | ||
import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; | ||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import java.time.LocalDate; | ||
import java.time.LocalTime; | ||
import java.util.Objects; | ||
import javax.validation.Valid; | ||
import javax.validation.constraints.NotBlank; | ||
import javax.validation.constraints.NotNull; | ||
import javax.validation.constraints.Positive; | ||
import javax.validation.constraints.Size; | ||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import tipitapi.drawmytoday.common.validator.ValidDiaryDate; | ||
|
||
@Getter | ||
@Schema(description = "태스트 일기 생성 Request") | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@AllArgsConstructor | ||
public class CreateTestDiaryRequest { | ||
|
||
@NotNull | ||
@Schema(description = "감정 ID") | ||
private Long emotionId; | ||
|
||
@Size(max = 6010) | ||
@Schema(description = "일기 내용", nullable = true) | ||
private String notes; | ||
|
||
@NotNull | ||
@ValidDiaryDate | ||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") | ||
@JsonDeserialize(using = LocalDateDeserializer.class) | ||
@Schema(description = "일기 날짜") | ||
private LocalDate diaryDate; | ||
|
||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") | ||
@JsonDeserialize(using = LocalTimeDeserializer.class) | ||
@Schema(description = "현재 유저 시간", nullable = true, example = "12:00:00") | ||
private LocalTime userTime; | ||
|
||
@Valid | ||
private KarloParameter karloParameter; | ||
|
||
@Getter | ||
@NoArgsConstructor | ||
@AllArgsConstructor | ||
public static class KarloParameter { | ||
|
||
@NotBlank | ||
@Schema(description = "프롬프트", nullable = false) | ||
private String prompt; | ||
|
||
@Schema(description = "부정 프롬프트", nullable = true) | ||
private String negativePrompt; | ||
|
||
@Positive | ||
@NotNull | ||
@Schema(description = "이미지 개수. (양수여야 한다)", nullable = false) | ||
private Integer samples; | ||
|
||
@Schema(description = "이미지 생성 과정의 노이즈 제거 단계 수 (기본값: 25, 최소: 10, 최대 100)", | ||
nullable = true) | ||
private Integer priorNumInferenceSteps; | ||
|
||
@Schema(description = "이미지 생성 과정의 노이즈 제거 척도 (기본값: 5.0, 최소: 1.0, 최대: 20.0)", | ||
nullable = true) | ||
private Double priorGuidanceScale; | ||
|
||
@Schema(description = "디코더를 통한 노이즈 제거 단계 (기본값: 50, 최소: 10, 최대: 100)", | ||
nullable = true) | ||
private Integer numInferenceSteps; | ||
|
||
@Schema(description = "디코더를 통한 노이즈 제거 척도 (기본값: 5.0, 최소: 1.0, 최대: 20.0)", | ||
nullable = true) | ||
private Double guidanceScale; | ||
|
||
@Schema(description = "디코더를 통한 노이즈 제거 단계에서 사용할 스케줄러(Scheduler), 다음 중 하나" | ||
+ "decoder_ddim_v_prediction, decoder_ddpm_v_prediction " | ||
+ "(기본값: decoder_ddim_v_prediction)", nullable = true) | ||
private String scheduler; | ||
|
||
@Schema(description = "각 이미지 생성 작업에 사용할 시드(Seed) 값. " | ||
+ "생성할 이미지 수와 같은 길이의 배열이어야 함. 0 이상 4,294,967,295 이하 숫자로 구성", nullable = true) | ||
private Long[] seed; | ||
|
||
public String getScheduler() { | ||
if (Objects.equals(scheduler, "decoder_ddpm_v_prediction")) { | ||
return "decoder_ddpm_v_prediction"; | ||
} | ||
return "decoder_ddim_v_prediction"; | ||
} | ||
} | ||
|
||
public LocalTime getUserTime() { | ||
if (userTime == null) { | ||
return LocalTime.now(); | ||
} | ||
return userTime; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.