Skip to content

Commit e23c85f

Browse files
committed
feat(provider): Provider adı için null kontrolü eklendi ve varsayılan değer belirlendi; ModelDataLoader'da hata yönetimi iyileştirildi
1 parent 573e563 commit e23c85f

File tree

3 files changed

+77
-9
lines changed

3 files changed

+77
-9
lines changed

user-service/src/main/java/com/craftpilot/userservice/config/DatabaseInitializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public class DatabaseInitializer {
3333
@Value("${spring.data.mongodb.auto-index-creation:false}")
3434
private boolean autoIndexCreation;
3535

36-
@Value("${app.mongodb.create-indexes:false}")
36+
@Value("${app.mongodb.create-indexes:true}")
3737
private boolean createIndexes;
3838

3939
@PostConstruct

user-service/src/main/java/com/craftpilot/userservice/model/ai/Provider.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,13 @@ public class Provider {
2727
public String getId() {
2828
return this.name;
2929
}
30+
31+
/**
32+
* Name alanı atanırken null değeri kontrolü yapar.
33+
* @param name atanacak name değeri
34+
*/
35+
public void setName(String name) {
36+
// Null değerleri için varsayılan değer kullan
37+
this.name = (name != null && !name.trim().isEmpty()) ? name : "Bilinmeyen";
38+
}
3039
}

user-service/src/main/java/com/craftpilot/userservice/service/ModelDataLoader.java

Lines changed: 67 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ private Mono<Integer> processJsonContent(String jsonContent) {
118118
// Meta provider gibi özel formatlar için
119119
if (itemMap.containsKey("provider") && itemMap.containsKey("models") && itemMap.get("models") instanceof List) {
120120
String providerName = (String) itemMap.get("provider");
121+
// Provider adı null kontrolü - null ise bu provider'ı atla
122+
if (providerName == null || providerName.trim().isEmpty()) {
123+
log.warn("Provider ismi boş veya null olan bir provider bulundu. Bu provider atlanıyor.");
124+
continue;
125+
}
126+
121127
Integer contextLength = itemMap.containsKey("contextLength") ?
122128
((Number)itemMap.get("contextLength")).intValue() : null;
123129

@@ -127,6 +133,15 @@ private Mono<Integer> processJsonContent(String jsonContent) {
127133

128134
// Provider kaydetme
129135
Mono<Void> providerTask = providerRepository.save(provider)
136+
.onErrorResume(e -> {
137+
// Bu provider zaten varsa hatayı yut ve provider'ı getir
138+
if (e instanceof org.springframework.dao.DuplicateKeyException) {
139+
log.info("Provider '{}' zaten var, yeniden kullanılıyor", providerName);
140+
return providerRepository.findById(providerName);
141+
}
142+
log.error("Provider kaydedilirken hata: {}", e.getMessage());
143+
return Mono.error(e);
144+
})
130145
.flatMap(savedProvider -> {
131146
List<Object> modelsList = (List<Object>) itemMap.get("models");
132147
List<Mono<AIModel>> modelSaveOps = new ArrayList<>();
@@ -135,9 +150,16 @@ private Mono<Integer> processJsonContent(String jsonContent) {
135150
if (modelObj instanceof java.util.Map) {
136151
java.util.Map<String, Object> modelMap = (java.util.Map<String, Object>) modelObj;
137152

153+
// Model ID kontrolü
154+
String modelId = String.valueOf(modelMap.get("modelId"));
155+
if (modelId == null || "null".equals(modelId)) {
156+
log.warn("Geçersiz modelId bulundu, model atlanıyor");
157+
continue;
158+
}
159+
138160
AIModel model = AIModel.builder()
139-
.id(String.valueOf(modelMap.get("modelId")))
140-
.modelId(String.valueOf(modelMap.get("modelId")))
161+
.id(modelId)
162+
.modelId(modelId)
141163
.modelName(String.valueOf(modelMap.get("name")))
142164
.provider(savedProvider.getName())
143165
.maxInputTokens(modelMap.containsKey("maxTokens") ?
@@ -146,12 +168,24 @@ private Mono<Integer> processJsonContent(String jsonContent) {
146168
.build();
147169

148170
modelSaveOps.add(modelRepository.save(model)
149-
.doOnSuccess(m -> modelCount.incrementAndGet()));
171+
.doOnSuccess(m -> modelCount.incrementAndGet())
172+
.onErrorResume(e -> {
173+
log.error("Model '{}' kaydedilirken hata: {}", modelId, e.getMessage());
174+
return Mono.empty();
175+
}));
150176
}
151177
}
152178

179+
if (modelSaveOps.isEmpty()) {
180+
return Mono.empty();
181+
}
182+
153183
return Flux.concat(modelSaveOps).then();
154184
})
185+
.onErrorResume(e -> {
186+
log.error("Provider '{}' işlenirken hata: {}", providerName, e.getMessage());
187+
return Mono.empty();
188+
})
155189
.then();
156190

157191
processTasks.add(providerTask);
@@ -160,22 +194,47 @@ private Mono<Integer> processJsonContent(String jsonContent) {
160194
else if (itemMap.containsKey("id") && itemMap.containsKey("modelId")) {
161195
AIModel model = objectMapper.convertValue(obj, AIModel.class);
162196

163-
// Eğer provider yoksa varsayılan bir değer belirle
164-
if (model.getProvider() == null && itemMap.containsKey("provider")) {
165-
model.setProvider((String) itemMap.get("provider"));
197+
// Provider adı kontrolü
198+
String providerName = model.getProvider();
199+
if (providerName == null || providerName.trim().isEmpty()) {
200+
if (itemMap.containsKey("provider")) {
201+
providerName = (String) itemMap.get("provider");
202+
}
203+
204+
// Hala null ise varsayılan değer ata
205+
if (providerName == null || providerName.trim().isEmpty()) {
206+
log.warn("Model '{}' için provider adı bulunamadı, 'Bilinmeyen' olarak ayarlanıyor",
207+
model.getModelId());
208+
providerName = "Bilinmeyen";
209+
model.setProvider(providerName);
210+
}
166211
}
167212

168213
// Provider'ı kaydet
214+
final String finalProviderName = providerName;
169215
Provider provider = Provider.builder()
170-
.name(model.getProvider())
216+
.name(finalProviderName)
171217
.build();
172218

173219
Mono<Void> modelTask = providerRepository.save(provider)
220+
.onErrorResume(e -> {
221+
// Bu provider zaten varsa hatayı yut ve provider'ı getir
222+
if (e instanceof org.springframework.dao.DuplicateKeyException) {
223+
log.info("Provider '{}' zaten var, yeniden kullanılıyor", finalProviderName);
224+
return providerRepository.findById(finalProviderName);
225+
}
226+
log.error("Provider kaydedilirken hata: {}", e.getMessage());
227+
return Mono.error(e);
228+
})
174229
.then(modelRepository.save(model))
175230
.doOnSuccess(savedModel -> {
176231
modelCount.incrementAndGet();
177232
log.debug("Model kaydedildi: {}", savedModel.getModelId());
178233
})
234+
.onErrorResume(e -> {
235+
log.error("Model '{}' kaydedilirken hata: {}", model.getModelId(), e.getMessage());
236+
return Mono.empty();
237+
})
179238
.then();
180239

181240
processTasks.add(modelTask);
@@ -194,7 +253,7 @@ else if (itemMap.containsKey("id") && itemMap.containsKey("modelId")) {
194253
return Mono.just(0);
195254
}
196255

197-
return Flux.concat(processTasks)
256+
return Flux.mergeSequential(processTasks)
198257
.then(Mono.just(modelCount.get()));
199258

200259
} catch (Exception e) {

0 commit comments

Comments
 (0)