@@ -155,26 +155,46 @@ private Mono<Integer> processJsonContent(String jsonContent) {
155155 if (modelObj instanceof java .util .Map ) {
156156 java .util .Map <String , Object > modelMap = (java .util .Map <String , Object >) modelObj ;
157157
158- // Model ID kontrolü
159- String modelId = String .valueOf (modelMap .get ("modelId" ));
160- if (modelId == null || "null" .equals (modelId )) {
161- log .warn ("Geçersiz modelId bulundu, model atlanıyor" );
158+ // Model ID kontrolü - null değerleri atla
159+ String modelId = null ;
160+
161+ if (modelMap .containsKey ("modelId" )) {
162+ modelId = String .valueOf (modelMap .get ("modelId" ));
163+ } else if (modelMap .containsKey ("id" )) {
164+ modelId = String .valueOf (modelMap .get ("id" ));
165+ } else if (modelMap .containsKey ("name" )) {
166+ // İsmi ID olarak kullan
167+ String name = String .valueOf (modelMap .get ("name" ));
168+ modelId = providerName .toLowerCase () + "/" + name .toLowerCase ().replace (" " , "-" );
169+ }
170+
171+ // null, "null" veya boş string kontrolü
172+ if (modelId == null || "null" .equals (modelId ) || modelId .trim ().isEmpty ()) {
173+ log .warn ("Geçersiz modelId bulundu, model atlanıyor: {}" , modelMap );
162174 continue ;
163175 }
164176
177+ final String finalModelId = modelId ; // Lambda için final değişken
178+
179+ // Log model ID'yi
180+ log .debug ("Model yükleniyor: ID={}, Provider={}" , modelId , savedProvider .getName ());
181+
165182 AIModel model = AIModel .builder ()
166- .modelId (modelId ) // Changed from id() to modelId( )
167- .modelName (String .valueOf (modelMap .get ("name" )))
183+ .modelId (finalModelId )
184+ .modelName (String .valueOf (modelMap .getOrDefault ("name" , finalModelId )))
168185 .provider (savedProvider .getName ())
169186 .maxInputTokens (modelMap .containsKey ("maxTokens" ) ?
170187 ((Number )modelMap .get ("maxTokens" )).intValue () : 8000 )
171188 .contextLength (contextLength != null ? contextLength : 131072 )
172189 .build ();
173190
174191 modelSaveOps .add (modelRepository .save (model )
175- .doOnSuccess (m -> modelCount .incrementAndGet ())
192+ .doOnSuccess (m -> {
193+ modelCount .incrementAndGet ();
194+ log .debug ("Model kaydedildi: {}" , m .getModelId ());
195+ })
176196 .onErrorResume (e -> {
177- log .error ("Model '{}' kaydedilirken hata: {}" , modelId , e .getMessage ());
197+ log .error ("Model '{}' kaydedilirken hata: {}" , finalModelId , e .getMessage ());
178198 return Mono .empty ();
179199 }));
180200 }
@@ -194,49 +214,119 @@ private Mono<Integer> processJsonContent(String jsonContent) {
194214
195215 processTasks .add (providerTask );
196216 }
197- // Normal model objeleri için - Sadece modelId'nin varlığını kontrol ediyoruz
198- else if (itemMap .containsKey ("modelId" )) {
199- AIModel model = objectMapper .convertValue (obj , AIModel .class );
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+ }
200256
201257 // Provider adı kontrolü
202- String providerName = model .getProvider ();
203- if (providerName == null || providerName .trim ().isEmpty ()) {
204- if (itemMap .containsKey ("provider" )) {
205- providerName = (String ) itemMap .get ("provider" );
206- }
207-
208- // Hala null ise varsayılan değer ata
209- if (providerName == null || providerName .trim ().isEmpty ()) {
210- log .warn ("Model '{}' için provider adı bulunamadı, 'Bilinmeyen' olarak ayarlanıyor" ,
211- model .getModelId ());
212- providerName = "Bilinmeyen" ;
213- model .setProvider (providerName );
214- }
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" ;
215266 }
216267
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+
217307 // Provider'ı kaydet
218- final String finalProviderName = providerName ;
219308 Provider provider = Provider .builder ()
220- .name (finalProviderName )
309+ .name (providerName )
221310 .build ();
222311
312+ final AIModel finalModel = model ;
223313 Mono <Void > modelTask = providerRepository .save (provider )
224314 .onErrorResume (e -> {
225315 // Bu provider zaten varsa hatayı yut ve provider'ı getir
226316 if (e instanceof org .springframework .dao .DuplicateKeyException ) {
227- log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , finalProviderName );
228- return providerRepository .findById (finalProviderName );
317+ log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , providerName );
318+ return providerRepository .findById (providerName );
229319 }
230320 log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
231321 return Mono .error (e );
232322 })
233- .then (modelRepository .save (model ))
323+ .then (modelRepository .save (finalModel ))
234324 .doOnSuccess (savedModel -> {
235325 modelCount .incrementAndGet ();
236326 log .debug ("Model kaydedildi: {}" , savedModel .getModelId ());
237327 })
238328 .onErrorResume (e -> {
239- log .error ("Model '{}' kaydedilirken hata: {}" , model .getModelId (), e .getMessage ());
329+ log .error ("Model '{}' kaydedilirken hata: {}" , finalModel .getModelId (), e .getMessage ());
240330 return Mono .empty ();
241331 })
242332 .then ();
0 commit comments