import logging import gradio as gr import pandas as pd logger = logging.getLogger(__name__) def create_evaluation_models_table(api_service): """API'den değerlendirme modellerini al ve tablo oluştur.""" try: models = api_service.get_evaluation_models(limit=20) if not models: return pd.DataFrame({ "ℹ️ Bilgi": ["Henüz değerlendirme isteği bulunmuyor"], "💡 İpucu": ["İlk modelinizi göndermek için 'Model Gönder' sekmesini kullanın"] }) # DataFrame oluştur (ID olmadan) df_data = [] for model in models: df_data.append({ "🤖 Model Adı": model.get('model', 'N/A'), "📊 Durum": model.get('status_turkish', model.get('status', 'N/A')), "📈 İlerleme": model.get('progress_percent', '0.00%'), "🎯 Başarı": model.get('basari_percent', '0.00%'), "📅 Son Güncelleme": model.get('updated_at_formatted', 'N/A'), "🔧 Model Türü": model.get('model_type', 'N/A'), "📏 Parametreler": model.get('parameters', 'N/A') }) return pd.DataFrame(df_data) except Exception as e: logger.error(f"Değerlendirme modelleri tablosu oluşturma hatası: {e}") return pd.DataFrame({ "❌ Hata": [f"Veri yükleme hatası: {str(e)}"], "🔧 Durum": ["API bağlantısını kontrol edin"] }) def get_model_details_html(model_name: str, api_service) -> str: """Model detaylarını HTML formatında getir.""" try: # Model adına göre detayları al models = api_service.get_evaluation_models() model = None for m in models: if m.get('model') == model_name: model = m break if not model: return f'
❌ Model bulunamadı: {model_name}
' # HTML formatında detayları oluştur html = f"""

🤖 Model Detayları

Model Adı: {model.get('model', 'N/A')}
Durum: {model.get('status_turkish', 'N/A')}
İlerleme: {model.get('progress_percent', '0.00%')}
Başarı Oranı: {model.get('basari_percent', '0.00%')}
Model Türü: {model.get('model_type', 'N/A')}
Parametreler: {model.get('parameters', 'N/A')}
Oluşturulma: {model.get('created_at_formatted', 'N/A')}
Son Güncelleme: {model.get('updated_at_formatted', 'N/A')}
Model Adı: {model.get('model', 'N/A')}
""" return html except Exception as e: logger.error(f"Model detayları alma hatası: {e}") return f'
❌ Detay alma hatası: {str(e)}
' def add_evaluation_requests_tab(block, api_service): with gr.Tab("📋 Değerlendirme İstekleri"): gr.Markdown("### API Model Değerlendirme İstekleri") gr.Markdown("**Kullanıcıların değerlendirme için gönderdiği modellerin durumunu takip edin.**") with gr.Row(): refresh_eval_btn = gr.Button("🔄 Listeyi Yenile", variant="primary") status_filter = gr.Dropdown( choices=["Tümü", "Beklemede", "İşleniyor", "Tamamlandı", "Başarısız"], label="Duruma Göre Filtrele", value="Tümü" ) # Model detayları için alan model_details_output = gr.HTML() # Değerlendirme modelleri tablosu evaluation_table = gr.DataFrame( value=create_evaluation_models_table(api_service), wrap=True, interactive=False ) def refresh_evaluation_models(): """Değerlendirme modellerini yenile""" try: return create_evaluation_models_table(api_service) except Exception as e: logger.error(f"Değerlendirme modelleri yenileme hatası: {e}") return pd.DataFrame({ "❌ Hata": [f"Yenileme hatası: {str(e)}"], "🔧 Durum": ["API bağlantısını kontrol edin"] }) def show_model_details(evt: gr.SelectData): """Seçilen modelin detaylarını göster""" try: if evt.index[0] is not None: # Tablodan model adını al df = create_evaluation_models_table(api_service) if not df.empty and evt.index[0] < len(df): model_name = df.iloc[evt.index[0]]["🤖 Model Adı"] return get_model_details_html(model_name, api_service) return "
Model seçin
" except Exception as e: logger.error(f"Model detayları gösterme hatası: {e}") return f"
Hata: {str(e)}
" # Event handlers refresh_eval_btn.click( refresh_evaluation_models, outputs=evaluation_table ) evaluation_table.select( show_model_details, outputs=model_details_output )