Skip to content

Commit eaefe6c

Browse files
committed
llm-service e yeni endpointler eklendi. AI PERFORMANCE FIXER MODÜLÜ KAPSAMINDA.
1 parent cff9185 commit eaefe6c

4 files changed

Lines changed: 63 additions & 18 deletions

File tree

llm-service/pom.xml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<spring-cloud.version>2023.0.2</spring-cloud.version>
2323
<lombok.version>1.18.30</lombok.version>
2424
<netty.version>4.1.107.Final</netty.version>
25+
<springdoc.version>2.2.0</springdoc.version>
2526
</properties>
2627

2728
<dependencies>
@@ -146,6 +147,26 @@
146147
<groupId>com.fasterxml.jackson.datatype</groupId>
147148
<artifactId>jackson-datatype-jsr310</artifactId>
148149
</dependency>
150+
151+
<!-- Caching -->
152+
<dependency>
153+
<groupId>com.github.ben-manes.caffeine</groupId>
154+
<artifactId>caffeine</artifactId>
155+
</dependency>
156+
157+
<!-- Rate Limiting -->
158+
<dependency>
159+
<groupId>com.github.vladimir-bukhtoyarov</groupId>
160+
<artifactId>bucket4j-core</artifactId>
161+
<version>7.6.0</version>
162+
</dependency>
163+
164+
<!-- API Documentation -->
165+
<dependency>
166+
<groupId>org.springdoc</groupId>
167+
<artifactId>springdoc-openapi-starter-webflux-ui</artifactId>
168+
<version>${springdoc.version}</version>
169+
</dependency>
149170
</dependencies>
150171

151172
<dependencyManagement>

llm-service/src/main/java/com/craftpilot/llmservice/cache/PerformanceAnalysisCache.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import reactor.core.publisher.Mono;
99

1010
import java.time.Duration;
11+
import java.util.function.Function;
1112

1213
@Component
1314
@Slf4j
@@ -23,10 +24,14 @@ public PerformanceAnalysisCache() {
2324
}
2425

2526
public Mono<PerformanceAnalysisResponse> getAnalysisResult(String url) {
26-
return Mono.justOrEmpty(cache.getIfPresent(url))
27-
.doOnSubscribe(subscription -> log.debug("Looking up URL in cache: {}", url))
28-
.doOnNext(result -> log.debug("Cache hit for URL: {}", url))
29-
.doOnEmpty(() -> log.debug("Cache miss for URL: {}", url));
27+
PerformanceAnalysisResponse cachedResult = cache.getIfPresent(url);
28+
if (cachedResult != null) {
29+
log.debug("Cache hit for performance analysis: {}", url);
30+
return Mono.just(cachedResult);
31+
} else {
32+
log.debug("Cache miss for performance analysis: {}", url);
33+
return Mono.empty();
34+
}
3035
}
3136

3237
public void cacheAnalysisResult(String url, PerformanceAnalysisResponse result) {

llm-service/src/main/java/com/craftpilot/llmservice/model/performance/SuggestionsResponse.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import lombok.AllArgsConstructor;
44
import lombok.Data;
5+
import lombok.NoArgsConstructor;
56

67
@Data
78
@AllArgsConstructor
9+
@NoArgsConstructor
810
public class SuggestionsResponse {
911
private String content;
1012
}

llm-service/src/test/java/com/craftpilot/llmservice/service/PerformanceServiceTest.java

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
package com.craftpilot.llmservice.service;
22

33
import com.craftpilot.llmservice.cache.PerformanceAnalysisCache;
4+
import com.craftpilot.llmservice.model.AIRequest;
5+
import com.craftpilot.llmservice.model.AIResponse;
46
import com.craftpilot.llmservice.model.performance.PerformanceAnalysisRequest;
57
import com.craftpilot.llmservice.model.performance.PerformanceAnalysisResponse;
68
import com.craftpilot.llmservice.model.performance.SuggestionsRequest;
79
import com.craftpilot.llmservice.repository.PerformanceAnalysisRepository;
8-
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
10+
import com.fasterxml.jackson.databind.ObjectMapper;
11+
import io.micrometer.core.instrument.MeterRegistry;
912
import org.junit.jupiter.api.BeforeEach;
1013
import org.junit.jupiter.api.Test;
14+
import org.junit.jupiter.api.extension.ExtendWith;
1115
import org.mockito.Mock;
12-
import org.mockito.MockitoAnnotations;
16+
import org.mockito.junit.jupiter.MockitoExtension;
1317
import reactor.core.publisher.Mono;
1418
import reactor.test.StepVerifier;
1519

1620
import java.time.Instant;
1721
import java.util.HashMap;
22+
import java.util.UUID;
1823

1924
import static org.mockito.ArgumentMatchers.any;
20-
import static org.mockito.ArgumentMatchers.anyString;
2125
import static org.mockito.Mockito.when;
2226

27+
@ExtendWith(MockitoExtension.class)
2328
class PerformanceServiceTest {
2429

2530
private PerformanceService performanceService;
@@ -34,22 +39,27 @@ class PerformanceServiceTest {
3439
private PerformanceAnalysisCache performanceAnalysisCache;
3540

3641
@Mock
37-
private AiService aiService;
42+
private LLMService llmService;
3843

3944
@Mock
4045
private PromptService promptService;
4146

47+
@Mock
48+
private MeterRegistry meterRegistry;
49+
50+
@Mock
51+
private ObjectMapper objectMapper;
52+
4253
@BeforeEach
4354
void setUp() {
44-
MockitoAnnotations.openMocks(this);
45-
4655
performanceService = new PerformanceService(
47-
lighthouseService,
48-
performanceAnalysisRepository,
49-
performanceAnalysisCache,
50-
aiService,
56+
lighthouseService,
57+
performanceAnalysisRepository,
58+
performanceAnalysisCache,
5159
promptService,
52-
new SimpleMeterRegistry()
60+
meterRegistry,
61+
llmService,
62+
objectMapper
5363
);
5464
}
5565

@@ -104,13 +114,20 @@ void analyzeWebsite_WhenCacheMiss_PerformsNewAnalysis() {
104114
}
105115

106116
@Test
107-
void generateSuggestions_ReturnsAiResponse() {
117+
void generateSuggestions_ReturnsAiResponse() throws Exception {
108118
// Arrange
109119
SuggestionsRequest request = new SuggestionsRequest();
110120
request.setAnalysisData(new HashMap<String, Object>());
121+
request.setUserId("test-user");
122+
request.setLanguage("tr");
123+
124+
AIResponse aiResponse = AIResponse.builder()
125+
.response("AI response")
126+
.success(true)
127+
.build();
111128

112-
when(promptService.getPerformanceAnalysisPrompt(any())).thenReturn("test prompt");
113-
when(aiService.generateAiResponse(anyString())).thenReturn(Mono.just("AI response"));
129+
when(objectMapper.writeValueAsString(any())).thenReturn("{}");
130+
when(llmService.processChatCompletion(any(AIRequest.class))).thenReturn(Mono.just(aiResponse));
114131

115132
// Act & Assert
116133
StepVerifier.create(performanceService.generateSuggestions(request))

0 commit comments

Comments
 (0)