Skip to content

Commit ce1db9b

Browse files
committed
feat(provider): name alanı için varsayılan değer kontrolü eklendi; ProviderBuilder sınıfı güncellendi
feat(model): provider isimleri için null/boş kontrolü eklendi; modelId kontrolü yapıldı; geçersiz provider sayımı eklendi
1 parent a155e30 commit ce1db9b

File tree

2 files changed

+55
-11
lines changed

2 files changed

+55
-11
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,14 @@ public void setName(String name) {
4040
// Null değerleri için varsayılan değer kullan
4141
this.name = (name != null && !name.trim().isEmpty()) ? name : "Bilinmeyen";
4242
}
43+
44+
/**
45+
* Builder ile oluşturulan nesnelerde name alanı kontrolü için
46+
*/
47+
public static class ProviderBuilder {
48+
public ProviderBuilder name(String name) {
49+
this.name = (name != null && !name.trim().isEmpty()) ? name : "Bilinmeyen";
50+
return this;
51+
}
52+
}
4353
}

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

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -303,14 +303,25 @@ public Mono<Integer> loadModelsFromFile(String filePath) {
303303
* Reactive version of saveProviders
304304
*/
305305
private Mono<Map<String, Provider>> saveProvidersReactive(List<ModelDTO> modelDTOs) {
306-
// Benzersiz provider isimlerini çıkar
306+
// Benzersiz provider isimlerini çıkar ve null/boş olanları filtrele
307307
Set<String> uniqueProviderNames = modelDTOs.stream()
308308
.map(dto -> dto.provider)
309-
.filter(Objects::nonNull)
309+
.filter(providerName -> providerName != null && !providerName.trim().isEmpty())
310310
.collect(Collectors.toSet());
311311

312312
log.info("{} benzersiz provider bulundu", uniqueProviderNames.size());
313313

314+
// Eğer toplamdan daha az provider bulunduysa, bazı null/boş olanlar filtrelenmiş demektir
315+
long originalProviderCount = modelDTOs.stream()
316+
.map(dto -> dto.provider)
317+
.distinct()
318+
.count();
319+
320+
if (originalProviderCount > uniqueProviderNames.size()) {
321+
log.warn("{} model null veya boş provider içeriyor ve işlenmeyecek",
322+
originalProviderCount - uniqueProviderNames.size());
323+
}
324+
314325
// Veritabanından mevcut provider'ları getir
315326
return providerRepository.findAll()
316327
.collectList()
@@ -328,19 +339,27 @@ private Mono<Map<String, Provider>> saveProvidersReactive(List<ModelDTO> modelDT
328339
List<Provider> updatedProviders = new ArrayList<>();
329340

330341
for (String providerName : uniqueProviderNames) {
342+
// Ekstra kontrol: yine de null/boş kontrolü yapalım
343+
if (providerName == null || providerName.trim().isEmpty()) {
344+
log.warn("Null veya boş provider ismi filtreleme sonrası bulundu, atlanıyor");
345+
continue;
346+
}
347+
331348
if (!providerMap.containsKey(providerName)) {
332349
if (!createMissingProviders) {
333350
log.warn("Provider bulunamadı ve otomatik oluşturma devre dışı: {}", providerName);
334351
continue;
335352
}
336353

337-
Provider newProvider = new Provider();
338-
newProvider.setName(providerName);
339-
newProvider.setActive(true);
340-
newProvider.setCreatedAt(LocalDateTime.now());
341-
newProvider.setUpdatedAt(LocalDateTime.now());
354+
Provider newProvider = Provider.builder()
355+
.name(providerName)
356+
.active(true)
357+
.createdAt(LocalDateTime.now())
358+
.updatedAt(LocalDateTime.now())
359+
.build();
360+
342361
newProviders.add(newProvider);
343-
log.info("Yeni provider hazırlanıyor: {}", providerName);
362+
log.info("Yeni provider hazırlanıyor: {}", newProvider.getName());
344363
} else {
345364
// Mevcut provider'ı güncelle
346365
Provider existingProvider = providerMap.get(providerName);
@@ -398,6 +417,7 @@ class ModelCounter {
398417
int newCount = 0;
399418
int errorCount = 0;
400419
int skippedCount = 0;
420+
int invalidProviderCount = 0;
401421
}
402422

403423
// Veritabanından mevcut modelleri getir
@@ -417,6 +437,13 @@ class ModelCounter {
417437

418438
for (ModelDTO dto : modelDTOs) {
419439
try {
440+
// ModelId kontrolü
441+
if (dto.modelId == null || dto.modelId.trim().isEmpty()) {
442+
log.warn("ModelId null veya boş, model atlanıyor");
443+
counter.skippedCount++;
444+
continue;
445+
}
446+
420447
// Eğer bu modelId zaten işlendiyse, atla (yinelenen modelId'ler için)
421448
if (processedModelIds.contains(dto.modelId)) {
422449
log.warn("Yinelenen modelId atlanıyor: {}", dto.modelId);
@@ -426,6 +453,13 @@ class ModelCounter {
426453

427454
processedModelIds.add(dto.modelId);
428455

456+
// Provider kontrolü
457+
if (dto.provider == null || dto.provider.trim().isEmpty()) {
458+
log.warn("Model için provider null veya boş: {}", dto.modelId);
459+
counter.invalidProviderCount++;
460+
continue;
461+
}
462+
429463
Provider provider = providerMap.get(dto.provider);
430464

431465
if (provider == null) {
@@ -478,10 +512,10 @@ class ModelCounter {
478512
}
479513

480514
if (!modelsToSave.isEmpty()) {
481-
log.info("{} model kaydediliyor ({} yeni, {} güncelleme, {} hatalı, {} atlandı)",
515+
log.info("{} model kaydediliyor ({} yeni, {} güncelleme, {} hatalı, {} atlandı, {} geçersiz provider)",
482516
modelsToSave.size(), counter.newCount, counter.updatedCount,
483-
counter.errorCount, counter.skippedCount);
484-
517+
counter.errorCount, counter.skippedCount, counter.invalidProviderCount);
518+
485519
// Modelleri toplu olarak kaydet, daha verimli
486520
return aiModelRepository.saveAll(modelsToSave)
487521
.collectList()

0 commit comments

Comments
 (0)