@@ -122,14 +122,15 @@ private Mono<Integer> processJsonContent(String jsonContent) {
122122
123123 // Meta provider gibi özel formatlar için
124124 if (itemMap .containsKey ("provider" ) && itemMap .containsKey ("models" ) && itemMap .get ("models" ) instanceof List ) {
125- String providerName = (String ) itemMap .get ("provider" );
125+ // Provider işlemleri için kopya
126+ final String providerName = (String ) itemMap .get ("provider" );
126127 // Provider adı null kontrolü - null ise bu provider'ı atla
127128 if (providerName == null || providerName .trim ().isEmpty ()) {
128129 log .warn ("Provider ismi boş veya null olan bir provider bulundu. Bu provider atlanıyor." );
129130 continue ;
130131 }
131132
132- Integer contextLength = itemMap .containsKey ("contextLength" ) ?
133+ final Integer contextLength = itemMap .containsKey ("contextLength" ) ?
133134 ((Number )itemMap .get ("contextLength" )).intValue () : null ;
134135
135136 Provider provider = Provider .builder ()
@@ -177,7 +178,7 @@ private Mono<Integer> processJsonContent(String jsonContent) {
177178 final String finalModelId = modelId ; // Lambda için final değişken
178179
179180 // Log model ID'yi
180- log .debug ("Model yükleniyor: ID={}, Provider={}" , modelId , savedProvider .getName ());
181+ log .debug ("Model yükleniyor: ID={}, Provider={}" , finalModelId , savedProvider .getName ());
181182
182183 AIModel model = AIModel .builder ()
183184 .modelId (finalModelId )
@@ -211,167 +212,148 @@ private Mono<Integer> processJsonContent(String jsonContent) {
211212 return Mono .empty ();
212213 })
213214 .then ();
214-
215- processTasks .add (providerTask );
216- }
217- // Normal model objeleri için
218- else if (itemMap .containsKey ("modelId" ) || itemMap .containsKey ("id" ) || itemMap .containsKey ("name" )) {
219- // Model ID'yi doğru alandan al
220- String modelId = null ;
221-
222- if (itemMap .containsKey ("modelId" )) {
223- modelId = String .valueOf (itemMap .get ("modelId" ));
224- } else if (itemMap .containsKey ("id" )) {
225- modelId = String .valueOf (itemMap .get ("id" ));
226- } else if (itemMap .containsKey ("name" )) {
227- // İsmi ID olarak kullan ama provider ile birleştir
228- String name = String .valueOf (itemMap .get ("name" ));
229- String providerName = itemMap .containsKey ("provider" ) ?
230- String .valueOf (itemMap .get ("provider" )) : "unknown" ;
231- modelId = providerName .toLowerCase () + "/" + name .toLowerCase ().replace (" " , "-" );
232- }
233-
234- // null, "null" veya boş string kontrolü
235- if (modelId == null || "null" .equals (modelId ) || modelId .trim ().isEmpty ()) {
236- log .warn ("Geçersiz modelId bulundu, model atlanıyor: {}" , itemMap );
237- continue ;
238- }
239-
240- // ModelId'yi güncelleyelim
241- final String finalModelId = modelId ; // Lambda için final değişken
242-
243- // AIModel nesnesini manuel oluştur
244- AIModel model = new AIModel ();
245- model .setModelId (finalModelId );
246-
247- // Model name
248- if (itemMap .containsKey ("name" ) || itemMap .containsKey ("modelName" )) {
249- String modelName = itemMap .containsKey ("modelName" ) ?
250- String .valueOf (itemMap .get ("modelName" )) :
251- String .valueOf (itemMap .get ("name" ));
252- model .setModelName (modelName );
253- } else {
254- model .setModelName (finalModelId ); // Eğer isim yoksa ID'yi kullan
255- }
256-
257- // Provider adı kontrolü
258- String providerName = null ;
259- if (itemMap .containsKey ("provider" )) {
260- providerName = String .valueOf (itemMap .get ("provider" ));
261- } else if (finalModelId .contains ("/" )) {
262- // ID'den provider adını çıkar (örn: "openai/gpt-4" -> "openai")
263- providerName = finalModelId .split ("/" )[0 ];
264- } else {
265- providerName = "Bilinmeyen" ;
266- }
267-
268- model .setProvider (providerName );
269-
270- // Diğer alanları ayarla
271- if (itemMap .containsKey ("maxInputTokens" )) {
272- model .setMaxInputTokens (((Number )itemMap .get ("maxInputTokens" )).intValue ());
273- } else if (itemMap .containsKey ("maxTokens" )) {
274- model .setMaxInputTokens (((Number )itemMap .get ("maxTokens" )).intValue ());
275- } else {
276- model .setMaxInputTokens (8000 ); // Varsayılan değer
277- }
278-
279- if (itemMap .containsKey ("contextLength" )) {
280- model .setContextLength (((Number )itemMap .get ("contextLength" )).intValue ());
281- } else {
282- model .setContextLength (131072 ); // Varsayılan değer
283- }
284-
285- // İsteğe bağlı diğer alanlar
286- if (itemMap .containsKey ("requiredPlan" )) {
287- model .setRequiredPlan (String .valueOf (itemMap .get ("requiredPlan" )));
288- }
289-
290- if (itemMap .containsKey ("creditCost" ) && itemMap .get ("creditCost" ) instanceof Number ) {
291- model .setCreditCost (((Number )itemMap .get ("creditCost" )).intValue ());
292- }
293-
294- if (itemMap .containsKey ("creditType" )) {
295- model .setCreditType (String .valueOf (itemMap .get ("creditType" )));
296- }
297-
298- if (itemMap .containsKey ("category" )) {
299- model .setCategory (String .valueOf (itemMap .get ("category" )));
300- }
301-
302- // Log model bilgilerini
303- log .debug ("Model hazırlandı: ID={}, Name={}, Provider={}" ,
304- model .getModelId (), model .getModelName (), model .getProvider ());
305-
306-
307- // Provider'ı kaydet
308- Provider provider = Provider .builder ()
309- .name (providerName )
310- .build ();
311-
312- final AIModel finalModel = model ;
313- Mono <Void > modelTask = providerRepository .save (provider )
314- .onErrorResume (e -> {
315- // Bu provider zaten varsa hatayı yut ve provider'ı getir
316- if (e instanceof org .springframework .dao .DuplicateKeyException ) {
317- log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , providerName );
318- return providerRepository .findById (providerName );
319- }
320- log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
321- return Mono .error (e );
322- })
323- .then (modelRepository .save (finalModel ))
324- .doOnSuccess (savedModel -> {
325- modelCount .incrementAndGet ();
326- log .debug ("Model kaydedildi: {}" , savedModel .getModelId ());
327- })
328- .onErrorResume (e -> {
329- log .error ("Model '{}' kaydedilirken hata: {}" , finalModel .getModelId (), e .getMessage ());
330- return Mono .empty ();
331- })
332- .then ();
333-
334- processTasks .add (modelTask );
215+
216+ processTasks .add (providerTask );
217+ }
218+ // Normal model objeleri için
219+ else if (itemMap .containsKey ("modelId" ) || itemMap .containsKey ("id" ) || itemMap .containsKey ("name" )) {
220+ // Model ID'yi doğru alandan al
221+ String modelId = null ;
222+
223+ if (itemMap .containsKey ("modelId" )) {
224+ modelId = String .valueOf (itemMap .get ("modelId" ));
225+ } else if (itemMap .containsKey ("id" )) {
226+ modelId = String .valueOf (itemMap .get ("id" ));
227+ } else if (itemMap .containsKey ("name" )) {
228+ // İsmi ID olarak kullan ama provider ile birleştir
229+ String name = String .valueOf (itemMap .get ("name" ));
230+ String providerName = itemMap .containsKey ("provider" ) ?
231+ String .valueOf (itemMap .get ("provider" )) : "unknown" ;
232+ modelId = providerName .toLowerCase () + "/" + name .toLowerCase ().replace (" " , "-" );
233+ }
234+
235+ // null, "null" veya boş string kontrolü
236+ if (modelId == null || "null" .equals (modelId ) || modelId .trim ().isEmpty ()) {
237+ log .warn ("Geçersiz modelId bulundu, model atlanıyor: {}" , itemMap );
238+ continue ;
239+ }
240+
241+ // ModelId'yi güncelleyelim
242+ final String finalModelId = modelId ; // Lambda için final değişken
243+
244+ // Provider adı kontrolü
245+ final String providerName ;
246+ if (itemMap .containsKey ("provider" )) {
247+ providerName = String .valueOf (itemMap .get ("provider" ));
248+ } else if (finalModelId .contains ("/" )) {
249+ // ID'den provider adını çıkar (örn: "openai/gpt-4" -> "openai")
250+ providerName = finalModelId .split ("/" )[0 ];
335251 } else {
336- log . warn ( "Desteklenmeyen model format, atlanıyor: {}" , itemMap ) ;
252+ providerName = "Bilinmeyen" ;
337253 }
254+
255+ // AIModel nesnesini manuel oluştur
256+ AIModel model = new AIModel ();
257+ model .setModelId (finalModelId );
258+
259+ // Model name
260+ if (itemMap .containsKey ("name" ) || itemMap .containsKey ("modelName" )) {
261+ String modelName = itemMap .containsKey ("modelName" ) ?
262+ String .valueOf (itemMap .get ("modelName" )) :
263+ String .valueOf (itemMap .get ("name" ));
264+ model .setModelName (modelName );
265+ } else {
266+ model .setModelName (finalModelId ); // Eğer isim yoksa ID'yi kullan
267+ }
268+
269+ model .setProvider (providerName );
270+
271+ // Diğer alanları ayarla
272+ if (itemMap .containsKey ("maxInputTokens" )) {
273+ model .setMaxInputTokens (((Number )itemMap .get ("maxInputTokens" )).intValue ());
274+ } else if (itemMap .containsKey ("maxTokens" )) {
275+ model .setMaxInputTokens (((Number )itemMap .get ("maxTokens" )).intValue ());
276+ } else {
277+ model .setMaxInputTokens (8000 ); // Varsayılan değer
278+ }
279+
280+ if (itemMap .containsKey ("contextLength" )) {
281+ model .setContextLength (((Number )itemMap .get ("contextLength" )).intValue ());
282+ } else {
283+ model .setContextLength (131072 ); // Varsayılan değer
284+ }
285+
286+ // İsteğe bağlı diğer alanlar
287+ if (itemMap .containsKey ("requiredPlan" )) {
288+ model .setRequiredPlan (String .valueOf (itemMap .get ("requiredPlan" )));
289+ }
290+
291+ if (itemMap .containsKey ("creditCost" ) && itemMap .get ("creditCost" ) instanceof Number ) {
292+ model .setCreditCost (((Number )itemMap .get ("creditCost" )).intValue ());
293+ }
294+
295+ if (itemMap .containsKey ("creditType" )) {
296+ model .setCreditType (String .valueOf (itemMap .get ("creditType" )));
297+ }
298+
299+ if (itemMap .containsKey ("category" )) {
300+ model .setCategory (String .valueOf (itemMap .get ("category" )));
301+ }
302+
303+ // Log model bilgilerini
304+ log .debug ("Model hazırlandı: ID={}, Name={}, Provider={}" ,
305+ model .getModelId (), model .getModelName (), model .getProvider ());
306+
307+ // Provider'ı kaydet
308+ Provider provider = Provider .builder ()
309+ .name (providerName )
310+ .build ();
311+
312+ final AIModel finalModel = model ;
313+ Mono <Void > modelTask = providerRepository .save (provider )
314+ .onErrorResume (e -> {
315+ // Bu provider zaten varsa hatayı yut ve provider'ı getir
316+ if (e instanceof org .springframework .dao .DuplicateKeyException ) {
317+ log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , providerName );
318+ return providerRepository .findById (providerName );
319+ }
320+ log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
321+ return Mono .error (e );
322+ })
323+ .then (modelRepository .save (finalModel ))
324+ .doOnSuccess (savedModel -> {
325+ modelCount .incrementAndGet ();
326+ log .debug ("Model kaydedildi: {}" , savedModel .getModelId ());
327+ })
328+ .onErrorResume (e -> {
329+ log .error ("Model '{}' kaydedilirken hata: {}" , finalModel .getModelId (), e .getMessage ());
330+ return Mono .empty ();
331+ })
332+ .then ();
333+
334+ processTasks .add (modelTask );
335+ } else {
336+ log .warn ("Desteklenmeyen model format, atlanıyor: {}" , itemMap );
338337 }
339- } catch (Exception e ) {
340- log .error ("Tek bir model işlenirken hata: {}" , e .getMessage (), e );
341- // Hatayı yut ve diğer modelleri işlemeye devam et
342338 }
339+ } catch (Exception e ) {
340+ log .error ("Tek bir model işlenirken hata: {}" , e .getMessage (), e );
341+ // Hatayı yut ve diğer modelleri işlemeye devam et
343342 }
344-
345- // Now save all collected providers
346- for (Provider provider : providerMap .values ()) {
347- Mono <Void > providerTask = providerRepository .save (provider )
348- .onErrorResume (e -> {
349- if (e instanceof org .springframework .dao .DuplicateKeyException ) {
350- log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , provider .getName ());
351- return Mono .empty ();
352- }
353- log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
354- return Mono .error (e );
355- })
356- .then ();
357-
358- processTasks .add (providerTask );
359- }
360-
361- if (processTasks .isEmpty ()) {
362- log .warn ("İşlenecek model bulunamadı" );
363- return Mono .just (0 );
364- }
365-
366- return Flux .mergeSequential (processTasks )
367- .then (Mono .just (modelCount .get ()));
368-
369- } catch (Exception e ) {
370- log .error ("JSON model verisi işlenirken hata: {}" , e .getMessage (), e );
371- return Mono .error (e );
372343 }
344+
345+ if (processTasks .isEmpty ()) {
346+ log .warn ("İşlenecek model bulunamadı" );
347+ return Mono .just (0 );
348+ }
349+
350+ return Flux .mergeSequential (processTasks )
351+ .then (Mono .just (modelCount .get ()));
352+
353+ } catch (Exception e ) {
354+ log .error ("JSON model verisi işlenirken hata: {}" , e .getMessage (), e );
355+ return Mono .error (e );
373356 }
374-
375357 /**
376358 * Belirtilen JSON dosyasından modelleri yükler.
377359 * ModelDataLoaderCommand için gereklidir.
0 commit comments