@@ -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