Skip to content

Commit 7776cc3

Browse files
authored
Merge pull request #112 from classic-daramg/feat/multi-composer-comment
[feat] ์—ฌ๋Ÿฌ ์ž‘๊ณก๊ฐ€ AI ๋Œ“๊ธ€ ์ง€์› ๋ฐ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ ์ถ”๊ฐ€
2 parents db3bb6b + 1dd2f2a commit 7776cc3

File tree

1 file changed

+41
-16
lines changed

1 file changed

+41
-16
lines changed

โ€Žsrc/main/java/com/daramg/server/aicomment/application/AiCommentService.javaโ€Ž

Lines changed: 41 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.transaction.annotation.Transactional;
2525

2626
import java.time.Instant;
27+
import java.util.ArrayList;
2728
import java.util.List;
2829
import java.util.Optional;
2930

@@ -71,23 +72,28 @@ public void scheduleForPost(Post post) {
7172
return;
7273
}
7374

74-
Composer composer = getComposerFromPost(post);
75-
if (composer == null) {
76-
composer = detectComposerFromContent(post.getTitle() + " " + post.getContent());
77-
}
78-
if (composer == null) {
79-
return;
80-
}
81-
82-
Optional<ComposerPersona> persona = composerPersonaRepository.findByComposerId(composer.getId());
83-
if (persona.isEmpty() || !persona.get().isActive()) {
75+
List<Composer> composers = getComposersForPost(post);
76+
log.info("AI ๋Œ“๊ธ€ ๋Œ€์ƒ ์ž‘๊ณก๊ฐ€ ํƒ์ง€ - postId={}, composers={}", post.getId(),
77+
composers.stream().map(c -> c.getId() + "(" + c.getKoreanName() + ")").toList());
78+
if (composers.isEmpty()) {
8479
return;
8580
}
8681

8782
Instant scheduledAt = Instant.now().plusSeconds(initialDelayMinutes * 60L);
88-
AiCommentJob job = AiCommentJob.of(post, composer, AiCommentJobTriggerType.POST_CREATED, null, scheduledAt);
89-
aiCommentJobRepository.save(job);
90-
log.info("AI ๋Œ“๊ธ€ ์žก ๋“ฑ๋ก - postId={}, composerId={}, scheduledAt={}", post.getId(), composer.getId(), scheduledAt);
83+
for (Composer composer : composers) {
84+
Optional<ComposerPersona> persona = composerPersonaRepository.findByComposerId(composer.getId());
85+
if (persona.isEmpty()) {
86+
log.info("AI ๋Œ“๊ธ€ ์žก ์Šคํ‚ต - ํŽ˜๋ฅด์†Œ๋‚˜ ์—†์Œ composerId={}", composer.getId());
87+
continue;
88+
}
89+
if (!persona.get().isActive()) {
90+
log.info("AI ๋Œ“๊ธ€ ์žก ์Šคํ‚ต - ํŽ˜๋ฅด์†Œ๋‚˜ ๋น„ํ™œ์„ฑ composerId={}", composer.getId());
91+
continue;
92+
}
93+
AiCommentJob job = AiCommentJob.of(post, composer, AiCommentJobTriggerType.POST_CREATED, null, scheduledAt);
94+
aiCommentJobRepository.save(job);
95+
log.info("AI ๋Œ“๊ธ€ ์žก ๋“ฑ๋ก - postId={}, composerId={}, scheduledAt={}", post.getId(), composer.getId(), scheduledAt);
96+
}
9197
}
9298

9399
@Transactional
@@ -144,6 +150,24 @@ public List<AiCommentJob> findPendingJobsDue() {
144150
return aiCommentJobRepository.findPendingJobsDue(AiCommentJobStatus.PENDING, Instant.now());
145151
}
146152

153+
private List<Composer> getComposersForPost(Post post) {
154+
List<Composer> composers = new ArrayList<>();
155+
156+
Composer primary = getComposerFromPost(post);
157+
if (primary != null) {
158+
composers.add(primary);
159+
}
160+
161+
String text = post.getTitle() + " " + post.getContent();
162+
for (Composer c : detectComposersFromContent(text)) {
163+
if (composers.stream().noneMatch(existing -> existing.getId().equals(c.getId()))) {
164+
composers.add(c);
165+
}
166+
}
167+
168+
return composers;
169+
}
170+
147171
private Composer getComposerFromPost(Post post) {
148172
if (post instanceof StoryPost storyPost) {
149173
return storyPost.getPrimaryComposer();
@@ -154,15 +178,16 @@ private Composer getComposerFromPost(Post post) {
154178
return null;
155179
}
156180

157-
private Composer detectComposerFromContent(String text) {
181+
private List<Composer> detectComposersFromContent(String text) {
158182
List<ComposerPersona> activePersonas = composerPersonaRepository.findAllActiveWithComposer();
183+
List<Composer> result = new ArrayList<>();
159184
for (ComposerPersona persona : activePersonas) {
160185
Composer composer = persona.getComposer();
161186
if (text.contains(composer.getKoreanName()) || text.contains(composer.getEnglishName())) {
162-
return composer;
187+
result.add(composer);
163188
}
164189
}
165-
return null;
190+
return result;
166191
}
167192

168193
private String buildSystemInstruction(ComposerPersona persona) {

0 commit comments

Comments
ย (0)