@php $stats = $this->getDatabaseStats(); $domainStats = $stats['domain_stats'] ?? []; $tables = $stats['tables'] ?? []; $totalMb = (float)($stats['total_mb'] ?? 0); $totalTables = (int)($stats['total_tables'] ?? 0); $totalRows = (int)($stats['total_rows'] ?? 0); $totalDataMb = (float)($stats['total_data_mb'] ?? 0); $totalIndexMb = (float)($stats['total_index_mb'] ?? 0); @endphp

Struttura Database & Dimensionamento Storage

Database Primario: netgescon (127.0.0.1:3306) · Motore: MariaDB / InnoDB (PostgreSQL Ready)

Ingombro Totale
{{ number_format($totalMb, 2) }} MB
Dati: {{ number_format($totalDataMb, 2) }} MB · Indici: {{ number_format($totalIndexMb, 2) }} MB
Tabelle Catalogo
{{ $totalTables }}
10 Domini architetturali
Record Totali
{{ number_format($totalRows, 0, ',', '.') }}
Righe indicizzate nel DB
Fatture XML / Payload
@php $feMb = 0.0; foreach ($domainStats as $ds) { if ($ds['key'] === 'fatture_fe') { $feMb = $ds['total_mb']; break; } } $fePerc = $totalMb > 0 ? round(($feMb / $totalMb) * 100, 1) : 0; @endphp
{{ number_format($feMb, 1) }} MB
{{ $fePerc }}% dell'intero database
Contabilità & Partita Doppia
@php $contMb = 0.0; foreach ($domainStats as $ds) { if ($ds['key'] === 'contabilita') { $contMb = $ds['total_mb']; break; } } @endphp
{{ number_format($contMb, 1) }} MB
Movimenti, rate & incassi
@if ($activeTab === 'storage')

Ingombro Aggregato per Dominio Applicativo

@foreach ($domainStats as $d) @php $perc = $totalMb > 0 ? round(($d['total_mb'] / $totalMb) * 100, 1) : 0; @endphp
{{ $d['icon'] }} {{ number_format($d['total_mb'], 2) }} MB
{{ $d['label'] }}
{{ $d['table_count'] }} tabelle · {{ number_format($d['total_rows'], 0, ',', '.') }} record
{{ $perc }}% del DB
@endforeach
@if ($search !== '' || $selectedDomain !== 'all') @endif
@forelse ($tables as $t) @empty @endforelse
Nome Tabella Dominio Record Dati (MB) Indici (MB) Totale (MB) Motore Azioni
{{ $t['name'] }} @if (!empty($t['comment']))
{{ $t['comment'] }}
@endif
{{ $t['domain_icon'] }} {{ $t['domain_label'] }} {{ number_format($t['rows'], 0, ',', '.') }} {{ number_format($t['data_mb'], 2) }} {{ number_format($t['index_mb'], 2) }} {{ number_format($t['total_mb'], 2) }} {{ $t['engine'] }} 🔍 Apri Dati
Nessuna tabella trovata per i criteri di ricerca impostati.
@endif @if ($activeTab === 'erd')

Architettura Relazionale Determinista NetGescon

Mappa delle relazioni canoniche e invarianti protetti da contratto operativo per garantire consistenza contabile e anagrafica:

🏢 Modulo 1: Stabile, Unità Immobiliari & Anagrafiche

• Stabili (stabili): Entità centrale legata tassativamente al codice_fiscale per identificazione e matching FE.

• Unità Immobiliari (unita_immobiliari): Entità fissa spaziale (dati catastali, subalterno, millesimi). Collegata allo stabile tramite stabile_id.

• Relazioni Spazio-Temporali (persone_unita_relazioni): Collega persone a unità con ruolo (cond_inquil: 'C' Condomino / 'I' Inquilino) e periodo temporale (data_inizio, data_fine, anno_gestione).

• Comproprietà Legacy (comproprietari): Collegata in modo esclusivo tramite id_cond con conservazione delle percentuali perc_diritto_reale (es. 50%/50%).

💰 Modulo 2: Contabilità Ordinaria & Partita Doppia

• Gestioni Stabile (gestioni_stabili): Isola gli esercizi ordinari e straordinari (anno_gestione, stato: aperto/chiuso).

• Rate Emesse (rate_emesse): Generate da preventivo/piano rateale legate a cod_cond e id_cond.

• Incassi (incassi): Riconciliazione entrate per condomino/inquilino collegate a cod_cond.

• Scritture Contabili (contabilita_registrazioni / operazioni_contabili): Libro Giornale e Mastro Dare/Avere conforme standard contabile.

🧾 Modulo 3: Fatture Elettroniche (XML/P7M) & Fornitori

• Fatture XML Ricevute (fatture_elettroniche): Ingestione raw XML/P7M con matching deterministico CessionarioCommittente == Stabile.codice_fiscale.

• Registrazione Fornitori (contabilita_fatture_fornitori): Fattura fornitore contabile con righe di dettaglio e piano dei conti.

• Anagrafica Fornitori (fornitori): Gestione P.IVA/CF, cataloghi prodotti, listini, offerte e ticket di manutenzione.

🔑 Modulo 4: Locazioni & Gestione Affitti

• Contratti Locazione (locazioni_contratti): Collegati a unita_immobiliari (immobile locato) e persone (conduttore).

• Sincronizzazione Catastale: Auto-popolamento istantaneo da dati catastali consolidati dell'unità (Foglio, Particella, Sub, Categoria, Rendita).

• Canoni & Spese: Scadenziario mensile canoni, incassi registrati, ripartizione spese accessorie e conguagli.

@endif @if ($activeTab === 'simulatore')

Simulatore di Crescita & Dimensionamento Hardware

Calcola la proiezione dello spazio disco, RAM consigliata per InnoDB Buffer Pool e volume per backup in base al numero di stabili gestiti:

{{ $simulazioneStabili }} Stabili
@php // Fattori medi calcolati sui dati reali correnti: // 1 stabile medio con 25 unita, 2 anni di archivio, 150 FE XML: // - XML Fatture Elettroniche: ~2.5 MB / anno / stabile // - Righe contabili + rate + incassi: ~0.8 MB / anno / stabile // - Unità + Anagrafiche + Catasto: ~0.15 MB / stabile $stabiliCount = max(1, (int)$this->simulazioneStabili); $mbPerStabileAnno = 3.5; // MB medi complessivi all'anno per stabile $anniStorico = 3; // Media anni conservati attivi $dbProiezioneMb = round($stabiliCount * $mbPerStabileAnno * $anniStorico, 1); $dbProiezioneGb = round($dbProiezioneMb / 1024, 2); // RAM consigliata: ~2.5x dimensione attiva dei dati per caching ottimale $ramConsigliataGb = max(2, round(($dbProiezioneGb * 2.5) + 1, 1)); $spazioDiscoConsigliatoGb = max(20, round(($dbProiezioneGb * 5) + 10, 0)); // Include backup, WAL log e staging @endphp
Spazio Database Stimato (3 Anni)
@if ($dbProiezioneGb >= 1) {{ $dbProiezioneGb }} GB @else {{ $dbProiezioneMb }} MB @endif
Base calcolo: 3.5 MB/anno per stabile con XML FE
RAM Server Consigliata
{{ $ramConsigliataGb }} GB RAM
InnoDB Buffer Pool ottimizzato & cache PHP
Spazio Disco Totale Suggerito (SSD/NVMe)
{{ $spazioDiscoConsigliatoGb }} GB SSD
Include retention backup giornalieri, log e allegati
💡 Suggerimento di Architettura: Le tabelle più pesanti sono quelle dei payload raw XML delle fatture elettroniche (fatture_elettroniche: ~144 MB attuali). Gli archivi contabili e anagrafici relazionali sono estremamente leggeri e consentono prestazioni istantanee anche con oltre 500 stabili su un singolo nodo Linux dedicato come la .205.
@endif @if ($activeTab === 'adminer_guide')

Come Ispezionare il Database Graficamente con Adminer

Il visualizzatore Adminer integrato permette di navigare le tabelle, visualizzare e modificare i record, eseguire query SQL personalizzate ed esplorare l'ER diagram interattivo:

1. Diagramma Schema (ERD)

Visualizza la mappa visuale di tutte le tabelle con le chiavi primarie, le relazioni e i collegamenti tra tabelle con interfaccia drag-and-drop.

2. Navigazione Record & Dati

Accedi a qualsiasi tabella per filtrare, ordinare, visualizzare i dati grezzi ed esportare in formato CSV, SQL o JSON in un click.

3. Esecuzione Comandi SQL

Esegui query personalizzate (SELECT, JOIN, GROUP BY) con calcolo immediato dei tempi di risposta e statistiche di esecuzione.

@endif