# Architettura Complessiva

Questa pagina collega i moduli principali del progetto in una vista unica, partendo dal launcher fino ai moduli GUI e al livello infrastrutturale async/DB.

## Vista architetturale

            flowchart TD
        Main["main.py"] --> Launcher["Launcher"]
        Main --> Loop["async_loop_singleton.get_global_loop()"]
        Main --> DB["AsyncMSSQLClient"]

        Launcher --> Reset["reset_corsie.py"]
        Launcher --> Layout["layout_window.py"]
        Launcher --> Ghost["view_celle_multiple.py"]
        Launcher --> Search["search_pallets.py"]
        Launcher --> Picking["gestione_pickinglist.py"]

        Reset --> Runner["gestione_aree_frame_async.AsyncRunner"]
        Layout --> Runner
        Ghost --> Runner
        Search --> Runner
        Picking --> Runner

        Runner --> Loop
        Runner --> DB
        Picking --> SP["prenota_sprenota_sql.py"]
        SP --> DB
        DB --> SQL["SQL Server / Mediseawall"]

## Flusso applicativo generale

            flowchart LR
        User["Utente"] --> MainWin["Launcher"]
        MainWin --> Module["Finestra modulo"]
        Module --> AsyncReq["AsyncRunner.run(...)"]
        AsyncReq --> DbClient["AsyncMSSQLClient"]
        DbClient --> SqlServer["Database SQL Server"]
        SqlServer --> Callback["Callback _ok/_err"]
        Callback --> Module

## Osservazioni

- `main.py` centralizza il loop asincrono e il client database condiviso.

- I moduli GUI si concentrano sulla UI e delegano query e task lunghi a `AsyncRunner`.

- `gestione_pickinglist.py` è l’unico modulo che passa anche da `prenota_sprenota_sql.py` per la logica di prenotazione.

- La cartella `docs/flows/` contiene la vista dettagliata modulo per modulo.