# app.py import gradio as gr import logging from app.logging_config import configure_logging from app.functions.database_handling import list_databases from ui.chatbot_tab import create_chatbot_tab from ui.db_management_tab import create_db_management_tab from ui.document_management_tab import create_document_management_tab from ui.document_view_tab import create_document_view_tab from ui.new_features_tab import create_new_features_tab # Configura il logging configure_logging() def update_all_dropdowns(): """ Aggiorna tutti i dropdown in tutte le tab. Nel tuo scenario, hai 6 dropdown totali (2 nella tab DB, 2 nella tab Documenti, eventualmente 1 nella tab Chatbot, 1 in altre tab, ecc.). Se ne hai di più o di meno, modifica il numero nel range. """ databases = list_databases() # Imposta la prima voce selezionata (value) solo se la lista non è vuota # e aggiorna le "choices" di tutti i dropdown. return [gr.update(choices=databases, value=databases[0] if databases else None) for _ in range(6)] def main(): """Funzione principale che crea e lancia l'app Gradio.""" logging.info("Avvio applicazione") try: with gr.Blocks() as rag_chatbot: gr.Markdown("# Chatbot basato su RAG") logging.info("Interfaccia Gradio inizializzata") # Crea i vari tab dell'interfaccia create_chatbot_tab() create_db_management_tab(update_all_dropdowns) # Passiamo la callback create_document_management_tab(update_all_dropdowns) # Passiamo la callback create_document_view_tab() create_new_features_tab() logging.info("Tab dell'interfaccia creati con successo") # Avvia l'app logging.info("Avvio server Gradio") rag_chatbot.launch() except Exception as e: logging.error(f"Errore durante l'avvio: {str(e)}", exc_info=True) if __name__ == "__main__": main()