Skip to content

Commit ab2324f

Browse files
committed
요약 및 리뷰 모델 수정
1 parent da020d8 commit ab2324f

5 files changed

Lines changed: 24 additions & 30 deletions

File tree

src/main/kotlin/com/project/codereview/client/util/ReviewModels.kt

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,4 @@ enum class GeminiTextModel(
5858
// maxTpm = 1_000_000,
5959
// maxRpd = 200
6060
// )
61-
;
62-
63-
fun toRateLimit(): RateLimit = RateLimit(
64-
rpm = maxRpm,
65-
tpm = maxTpm,
66-
rpd = maxRpd
67-
)
68-
}
69-
70-
data class RateLimit(
71-
val rpm: Int,
72-
val tpm: Int,
73-
val rpd: Int
74-
)
61+
}

src/main/kotlin/com/project/codereview/core/service/CodeReviewFacade.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.project.codereview.core.service
33
import com.project.codereview.client.github.GithubDiffClient
44
import com.project.codereview.client.github.GithubDiffUtils
55
import com.project.codereview.client.github.dto.ReviewContext
6+
import com.project.codereview.client.util.GeminiTextModel
67
import com.project.codereview.core.dto.GithubActionType
78
import com.project.codereview.core.dto.GithubEvent
89
import com.project.codereview.core.dto.GithubPayload
@@ -17,6 +18,10 @@ class CodeReviewFacade(
1718
private val githubDiffClient: GithubDiffClient,
1819
private val codeSummaryService: CodeSummaryService
1920
) {
21+
companion object {
22+
val SUMMARY_MODEL = GeminiTextModel.GEMINI_2_5_FLASH_LITE
23+
val REVIEW_MODEL = GeminiTextModel.GEMINI_3_FLASH
24+
}
2025
private val logger = LoggerFactory.getLogger(CodeReviewFacade::class.java)
2126

2227
suspend fun handle(githubEvent: GithubEvent, payload: GithubPayload) = coroutineScope {
@@ -30,7 +35,7 @@ class CodeReviewFacade(
3035
when (action) {
3136
GithubActionType.OPENED -> {
3237
withPrContexts(pullRequestPayload, payload) { contexts ->
33-
codeSummaryService.summary(payload, contexts)
38+
codeSummaryService.summary(payload, contexts, SUMMARY_MODEL)
3439
}
3540
}
3641

@@ -41,7 +46,7 @@ class CodeReviewFacade(
4146
}
4247

4348
withPrContexts(pullRequestPayload, payload) { contexts ->
44-
reviewJobQueue.enqueue(payload, contexts)
49+
reviewJobQueue.enqueue(payload, contexts, REVIEW_MODEL)
4550
}
4651
}
4752

src/main/kotlin/com/project/codereview/core/service/CodeReviewService.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,11 @@ class CodeReviewService(
4444
val path: String get() = ctx.type.path()
4545
}
4646

47-
suspend fun review(payload: GithubPayload, contexts: List<ReviewContext>) = coroutineScope {
47+
suspend fun review(
48+
payload: GithubPayload,
49+
contexts: List<ReviewContext>,
50+
model: GeminiTextModel
51+
) = coroutineScope {
4852
val pr = payload.pull_request
4953

5054
val tasks = if (contexts.size > MAX_FILES_TO_REVIEW) {
@@ -61,15 +65,15 @@ class CodeReviewService(
6165
tasks.mapIndexed { index, task ->
6266
async {
6367
semaphore.withPermit {
64-
processOne(task, index + 1, tasks.size)
68+
processOne(task, model, index + 1, tasks.size)
6569
}
6670
}
6771
}.awaitAll()
6872

6973
logger.info("[Review Completed] total={}", tasks.size)
7074
}
7175

72-
private suspend fun processOne(task: ReviewTask, order: Int, total: Int) {
76+
private suspend fun processOne(task: ReviewTask, model: GeminiTextModel, order: Int, total: Int) {
7377
val path = task.path
7478
if (path.isBlank()) {
7579
logger.warn("[Review Skip] Empty file path ({} / {})", order, total)
@@ -84,8 +88,6 @@ class CodeReviewService(
8488

8589
logger.info("[Review Start] file={} ({} / {})", path, order, total)
8690

87-
val model = GeminiTextModel.GEMINI_2_5_FLASH_LITE
88-
8991
val reviewText = callGeminiOrNull(path, prompt, model) ?: run {
9092
logger.warn("[Review Failed] Gemini returned null/blank file={} model={}", path, model.modelName)
9193
return

src/main/kotlin/com/project/codereview/core/service/CodeSummaryService.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class CodeSummaryService(
1717
) {
1818
private val logger = LoggerFactory.getLogger(CodeSummaryService::class.java)
1919

20-
suspend fun summary(payload: GithubPayload, fileContexts: List<ReviewContext>) {
20+
suspend fun summary(payload: GithubPayload, fileContexts: List<ReviewContext>, model: GeminiTextModel) {
2121
logger.info("[Summary] Making summary ...")
2222

2323
val prompt = fileContexts.buildPrompt()
@@ -26,12 +26,10 @@ class CodeSummaryService(
2626
return
2727
}
2828

29-
val summaryText =
30-
generateSummaryOnce(payload, prompt, GeminiTextModel.GEMINI_3_FLASH)
31-
?: generateSummaryOnce(payload, prompt, GeminiTextModel.GEMINI_2_5_FLASH)
29+
val summaryText = generateSummaryOnce(payload, prompt, model)
3230

3331
if (summaryText.isNullOrBlank()) {
34-
logger.warn("[Summary] Failed with both models. Stop.")
32+
logger.warn("[Summary] Failed with ${model.modelName} model. Stop.")
3533
return
3634
}
3735

src/main/kotlin/com/project/codereview/core/service/ReviewJobQueue.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.project.codereview.core.service
22

33
import com.project.codereview.client.github.dto.ReviewContext
4+
import com.project.codereview.client.util.GeminiTextModel
45
import com.project.codereview.core.dto.GithubPayload
56
import jakarta.annotation.PostConstruct
67
import jakarta.annotation.PreDestroy
@@ -25,7 +26,8 @@ class ReviewJobQueue(
2526

2627
data class ReviewJob(
2728
val payload: GithubPayload,
28-
val contexts: List<ReviewContext>
29+
val contexts: List<ReviewContext>,
30+
val model: GeminiTextModel
2931
)
3032

3133
@PostConstruct
@@ -34,7 +36,7 @@ class ReviewJobQueue(
3436
scope.launch(CoroutineName("review-worker-$idx")) {
3537
for (job in channel) {
3638
runCatching {
37-
codeReviewService.review(job.payload, job.contexts)
39+
codeReviewService.review(job.payload, job.contexts, job.model)
3840
}.onFailure { t ->
3941
logger.error(
4042
"[ReviewJob] failed worker={} cause={}",
@@ -50,8 +52,8 @@ class ReviewJobQueue(
5052
logger.info("[ReviewJobQueue] started workers={}", workerCount)
5153
}
5254

53-
fun enqueue(payload: GithubPayload, contexts: List<ReviewContext>): Boolean {
54-
val res = channel.trySend(ReviewJob(payload, contexts))
55+
fun enqueue(payload: GithubPayload, contexts: List<ReviewContext>, model: GeminiTextModel): Boolean {
56+
val res = channel.trySend(ReviewJob(payload, contexts, model))
5557
if (res.isFailure) {
5658
logger.warn("[ReviewJobQueue] enqueue failed cause={}", res.exceptionOrNull()?.message)
5759
}

0 commit comments

Comments
 (0)