Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ dependencies {
implementation project(':auth:auth-impl')
implementation project(':aws:aws-impl')
implementation project(':quiz:quiz-impl')
implementation project(':util:util-impl')
implementation project(':global')

implementation "org.springframework.boot:spring-boot-starter-actuator"
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
Expand Down
13 changes: 0 additions & 13 deletions modules/aws/api/src/main/java/com/icc/qasker/aws/S3Service.java

This file was deleted.

13 changes: 13 additions & 0 deletions modules/aws/api/src/main/java/com/icc/qasker/util/S3Service.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.icc.qasker.util;

import com.icc.qasker.util.dto.FileExistStatusResponse;
import com.icc.qasker.util.dto.PresignRequest;
import com.icc.qasker.util.dto.PresignResponse;

public interface S3Service {

PresignResponse requestPresign(PresignRequest presignRequest);

FileExistStatusResponse checkFileExistence(String originalFileName);
}

Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws;
package com.icc.qasker.util;

public interface S3ValidateService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.icc.qasker.aws.controller.doc;
package com.icc.qasker.util.doc;

import com.icc.qasker.aws.dto.FileExistStatusResponse;
import com.icc.qasker.aws.dto.PresignRequest;
import com.icc.qasker.aws.dto.PresignResponse;
import com.icc.qasker.util.dto.FileExistStatusResponse;
import com.icc.qasker.util.dto.PresignRequest;
import com.icc.qasker.util.dto.PresignResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.dto;
package com.icc.qasker.util.dto;

public record FileExistStatusResponse(
Status status
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.dto;
package com.icc.qasker.util.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.dto;
package com.icc.qasker.util.dto;

public record PresignResponse(
String uploadUrl,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.dto;
package com.icc.qasker.util.dto;

public enum Status {
NOT_EXIST,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.config;
package com.icc.qasker.util.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.aws.config;
package com.icc.qasker.util.config;

import com.icc.qasker.aws.properties.AwsS3Properties;
import com.icc.qasker.util.properties.AwsS3Properties;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.icc.qasker.aws.controller;
package com.icc.qasker.util.controller;

import com.icc.qasker.aws.S3Service;
import com.icc.qasker.aws.controller.doc.S3ApiDoc;
import com.icc.qasker.aws.dto.FileExistStatusResponse;
import com.icc.qasker.aws.dto.PresignRequest;
import com.icc.qasker.aws.dto.PresignResponse;
import com.icc.qasker.util.S3Service;
import com.icc.qasker.util.doc.S3ApiDoc;
import com.icc.qasker.util.dto.FileExistStatusResponse;
import com.icc.qasker.util.dto.PresignRequest;
import com.icc.qasker.util.dto.PresignResponse;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.properties;
package com.icc.qasker.util.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.properties;
package com.icc.qasker.util.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.aws.properties;
package com.icc.qasker.util.properties;

import org.springframework.boot.context.properties.ConfigurationProperties;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.icc.qasker.aws.service;

import com.icc.qasker.aws.S3Service;
import com.icc.qasker.aws.S3ValidateService;
import com.icc.qasker.aws.dto.FileExistStatusResponse;
import com.icc.qasker.aws.dto.PresignRequest;
import com.icc.qasker.aws.dto.PresignResponse;
import com.icc.qasker.aws.dto.Status;
import com.icc.qasker.aws.properties.AwsCloudFrontProperties;
import com.icc.qasker.aws.properties.AwsS3Properties;
package com.icc.qasker.util.service;

import com.icc.qasker.util.S3Service;
import com.icc.qasker.util.S3ValidateService;
import com.icc.qasker.util.dto.FileExistStatusResponse;
import com.icc.qasker.util.dto.PresignRequest;
import com.icc.qasker.util.dto.PresignResponse;
import com.icc.qasker.util.dto.Status;
import com.icc.qasker.util.properties.AwsCloudFrontProperties;
import com.icc.qasker.util.properties.AwsS3Properties;
import com.icc.qasker.global.error.CustomException;
import com.icc.qasker.global.error.ExceptionMessage;
import java.net.URI;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.icc.qasker.aws.service;
package com.icc.qasker.util.service;

import com.icc.qasker.aws.S3ValidateService;
import com.icc.qasker.aws.properties.AwsCloudFrontProperties;
import com.icc.qasker.aws.properties.AwsS3Properties;
import com.icc.qasker.util.S3ValidateService;
import com.icc.qasker.util.properties.AwsCloudFrontProperties;
import com.icc.qasker.util.properties.AwsS3Properties;
import com.icc.qasker.global.error.CustomException;
import com.icc.qasker.global.error.ExceptionMessage;
import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestClient.Builder;

Expand All @@ -16,7 +17,8 @@ public class SlackNotifier {
private final Builder restClientBuilder;
private final SlackProperties slackProperties;

public void notifyText(String text) {
@Async
public void asyncNotifyText(String text) {
boolean enabled = slackProperties.isEnabled();
String webhookUrl = slackProperties.getWebhookUrlNotify().toString();
if (!enabled || webhookUrl == null || webhookUrl.isBlank()) {
Expand Down
4 changes: 4 additions & 0 deletions modules/quiz/api/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
plugins {
id 'java-library'
}

dependencies {
implementation project(":global")
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz;

import com.icc.qasker.quiz.dto.response.ExplanationResponse;
import com.icc.qasker.quiz.dto.feResponse.ExplanationResponse;

public interface ExplanationService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.icc.qasker.quiz;

import com.icc.qasker.quiz.dto.request.FeGenerationRequest;
import com.icc.qasker.quiz.dto.response.GenerationResponse;
import com.icc.qasker.quiz.dto.feRequest.GenerationRequest;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

public interface GenerationService {

GenerationResponse processGenerationRequest(FeGenerationRequest feGenerationRequest,
SseEmitter processGenerationRequest(GenerationRequest generationRequest,
String userId);
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz;

import com.icc.qasker.quiz.dto.response.ProblemSetResponse;
import com.icc.qasker.quiz.dto.feResponse.ProblemSetResponse;

public interface ProblemSetService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz;

import com.icc.qasker.quiz.dto.response.SpecificExplanationResponse;
import com.icc.qasker.quiz.dto.feResponse.SpecificExplanationResponse;

public interface SpecificExplanationService {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz.controller.doc;
package com.icc.qasker.quiz.doc;

import com.icc.qasker.quiz.dto.response.ExplanationResponse;
import com.icc.qasker.quiz.dto.feResponse.ExplanationResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.icc.qasker.quiz.doc;

import com.icc.qasker.global.annotation.UserId;
import com.icc.qasker.quiz.dto.feRequest.GenerationRequest;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

@Tag(name = "Generation", description = "생성 관련 API")
public interface GenerationApiDoc {

@Operation(summary = "문제를 생성한다")
@PostMapping
SseEmitter postProblemSetId(
@UserId
String userId,
@RequestBody GenerationRequest generationRequest);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz.controller.doc;
package com.icc.qasker.quiz.doc;

import com.icc.qasker.quiz.dto.response.ProblemSetResponse;
import com.icc.qasker.quiz.dto.feResponse.ProblemSetResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.controller.doc;
package com.icc.qasker.quiz.doc;

import io.swagger.v3.oas.annotations.tags.Tag;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.icc.qasker.quiz.dto.aiRequest;

import com.icc.qasker.quiz.dto.feRequest.enums.DifficultyType;
import com.icc.qasker.quiz.dto.feRequest.enums.QuizType;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.List;

public record GenerationRequestToAI(

@NotBlank(message = "url이 존재하지 않습니다.")
String uploadedUrl,
@Min(value = 5, message = "quizCount는 5이상입니다.")
@Max(value = 50, message = "quizCount는 50이하입니다.")
int quizCount,
@NotNull(message = "quizType이 null입니다.")
QuizType quizType,
@NotNull(message = "difficultyType가 null입니다.")
DifficultyType difficultyType,
@NotNull(message = "pageNumbers가 null입니다.")
@Size(min = 1, max = 150, message = "pageNumbers는 1개 이상 150 이하이어야 합니다.")
List<Integer> pageNumbers

) {

};
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.icc.qasker.quiz.dto.request;
package com.icc.qasker.quiz.dto.aiRequest;

import com.icc.qasker.quiz.dto.response.QuizGeneratedByAI.SelectionsOfAi;
import com.icc.qasker.quiz.dto.aiResponse.QuizGeneratedFromAI.SelectionsOfAi;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
Expand All @@ -11,7 +11,7 @@
@AllArgsConstructor
@NoArgsConstructor
@Getter
public class SpecificExplanationRequest {
public class SpecificExplanationRequestToAI {

private String title;
private List<SelectionsOfAi> selections;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.dto.response;
package com.icc.qasker.quiz.dto.aiResponse;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
Expand All @@ -10,9 +10,9 @@
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class AiGenerationResponse {
public class GenerationResponseFromAI {

@NotEmpty(message = "quiz가 null입니다.")
@Valid
private List<QuizGeneratedByAI> quiz;
private List<QuizGeneratedFromAI> quiz;
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.dto.response;
package com.icc.qasker.quiz.dto.aiResponse;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand All @@ -11,7 +11,7 @@
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class QuizGeneratedByAI {
public class QuizGeneratedFromAI {

@NotNull(message = "number가 null입니다.")
private int number;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.icc.qasker.quiz.dto.request;
package com.icc.qasker.quiz.dto.feRequest;

import com.icc.qasker.quiz.dto.request.enums.DifficultyType;
import com.icc.qasker.quiz.dto.request.enums.QuizType;
import com.icc.qasker.quiz.dto.feRequest.enums.DifficultyType;
import com.icc.qasker.quiz.dto.feRequest.enums.QuizType;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.List;

public record FeGenerationRequest(
public record GenerationRequest(

@NotBlank(message = "url이 존재하지 않습니다.")
String uploadedUrl,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.dto.request.enums;
package com.icc.qasker.quiz.dto.feRequest.enums;

public enum DifficultyType {
RECALL,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.dto.request.enums;
package com.icc.qasker.quiz.dto.feRequest.enums;

public enum QuizType {
MULTIPLE,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.icc.qasker.quiz.dto.response;
package com.icc.qasker.quiz.dto.feResponse;

import java.util.List;
import lombok.AllArgsConstructor;
Expand Down
Loading