Skip to content

Commit 48d3b72

Browse files
authored
Merge pull request #74 from GD-YD/refactor/Profanity-Filtering-AI
욕설 필터링 요청 로직 리펙토링
2 parents 1edf5a7 + 85de4a8 commit 48d3b72

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

gd-yd-api/src/main/java/com/gdyd/gdydapi/service/board/CommentCommandService.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import com.gdyd.gdydcore.service.member.LikeListService;
1919
import com.gdyd.gdydcore.service.member.MemberService;
2020
import com.gdyd.gdydcore.service.member.ReportService;
21+
import com.gdyd.gdydsupport.ai.AIRequestGenerator;
22+
import com.gdyd.gdydsupport.ai.ProfanityFilteringRequest;
23+
import com.gdyd.gdydsupport.ai.ProfanityFilteringResponse;
2124
import com.gdyd.gdydsupport.exception.BusinessException;
2225
import com.gdyd.gdydsupport.exception.ErrorCode;
2326
import com.gdyd.gdydsupport.webhook.DiscordMessageGenerator;
@@ -35,12 +38,19 @@ public class CommentCommandService {
3538
private final LikeListService likeListService;
3639
private final ReportService reportService;
3740
private final DiscordMessageGenerator discordMessageGenerator;
41+
private final AIRequestGenerator aiRequestGenerator;
3842

3943
public SaveCommentResponse saveComment(SaveCommentRequest request) {
4044
Long memberId = PrincipalUtil.getMemberIdByPrincipal();
4145
Member member = memberService.getMemberById(memberId);
4246
Post post = postService.getPostById(request.postId());
4347

48+
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.from(request.content());
49+
ProfanityFilteringResponse aiFilteringResponse = aiRequestGenerator.sendAbuseFilteringRequest(aiFilteringRequest);
50+
if (Boolean.TRUE.equals(aiFilteringResponse.isProfanityDetected())) {
51+
throw new BusinessException(ErrorCode.CONTAINS_PROFANITY);
52+
}
53+
4454
Comment comment = SaveCommentRequest.toComment(request);
4555
comment.updateMember(member);
4656
comment.updatePost(post);

gd-yd-api/src/main/java/com/gdyd/gdydapi/service/board/PostCommandService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ public SavePostResponse savePost(SavePostReqeust request) {
5252
Long memberId = PrincipalUtil.getMemberIdByPrincipal();
5353
Member member = memberService.getMemberById(memberId);
5454

55-
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.from(request.content());
55+
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.of(request.title(), request.content());
5656
ProfanityFilteringResponse aiFilteringResponse = aiRequestGenerator.sendAbuseFilteringRequest(aiFilteringRequest);
57-
if (aiFilteringResponse.isProfanityDetected()) {
57+
if (Boolean.TRUE.equals(aiFilteringResponse.isProfanityDetected())) {
5858
throw new BusinessException(ErrorCode.CONTAINS_PROFANITY);
5959
}
6060

gd-yd-api/src/main/java/com/gdyd/gdydapi/service/mentoring/MentoringCommandService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ public CreateHighSchoolStudentQuestionResponse createHighSchoolStudentQuestion(C
6464
Long memberId = PrincipalUtil.getMemberIdByPrincipal();
6565
HighSchoolStudent highSchoolStudent = memberQueryService.getHighSchoolStudentByMemberId(memberId);
6666

67-
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.from(request.question());
67+
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.of(request.title(), request.question());
6868
ProfanityFilteringResponse aiFilteringResponse = aiRequestGenerator.sendAbuseFilteringRequest(aiFilteringRequest);
69-
if (aiFilteringResponse.isProfanityDetected()) {
69+
if (Boolean.TRUE.equals(aiFilteringResponse.isProfanityDetected())) {
7070
throw new BusinessException(ErrorCode.CONTAINS_PROFANITY);
7171
}
7272

@@ -97,7 +97,7 @@ public CreateUniversityStudentAnswerResponse createUniversityStudentAnswer(Long
9797

9898
ProfanityFilteringRequest aiFilteringRequest = ProfanityFilteringRequest.from(request.answer());
9999
ProfanityFilteringResponse aiFilteringResponse = aiRequestGenerator.sendAbuseFilteringRequest(aiFilteringRequest);
100-
if (aiFilteringResponse.isProfanityDetected()) {
100+
if (Boolean.TRUE.equals(aiFilteringResponse.isProfanityDetected())) {
101101
throw new BusinessException(ErrorCode.CONTAINS_PROFANITY);
102102
}
103103

gd-yd-support/src/main/java/com/gdyd/gdydsupport/ai/ProfanityFilteringRequest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,22 @@
77
@Schema(description = "AI 서버 욕설 필터링 요청")
88
public record ProfanityFilteringRequest(
99

10+
@Schema(description = "필터링 대상 글 제목", example = "상담할 게 있어요")
11+
String title,
12+
1013
@Schema(description = "필터링 대상 글 내용", example = "여자친구가 절 무시해요")
1114
String content
1215
) {
16+
public static ProfanityFilteringRequest of(String title, String content) {
17+
return ProfanityFilteringRequest.builder()
18+
.title(title)
19+
.content(content)
20+
.build();
21+
}
22+
1323
public static ProfanityFilteringRequest from(String content) {
1424
return ProfanityFilteringRequest.builder()
25+
.title("")
1526
.content(content)
1627
.build();
1728
}

0 commit comments

Comments
 (0)