netgescon-master/docs/archived/MANUALE-MANUTENZIONE.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

281 lines
8.2 KiB
Markdown

# 📘 MANUALE MANUTENZIONE - NetGescon Unified Platform
## 🎯 **PANORAMICA ARCHITETTURA**
### **Struttura Directory di Lavoro**
```
/home/michele/netgescon/netgescon-laravel/ (Directory principale Linux)
├── app/Http/Controllers/Admin/ # Controller amministrazione
├── resources/views/admin/ # View amministrazione
├── resources/views/components/ # Componenti riutilizzabili
├── resources/views/layouts/ # Layout principali
├── routes/web.php # Definizione route
└── docs/ # Documentazione progetto
```
### **Sistema Multi-Tenant & Multi-Ruolo**
- **Utenti 8 caratteri**: Identificativo univoco per amministratore
- **Cartelle dedicate**: Ogni admin ha la sua directory isolata
- **Database separati**: Possibilità di separare i dati per amministratore
- **Backup distribuiti**: Google Drive, Microsoft, NAS locale
- **Migrazione facile**: Come VM Proxmox, portabilità completa
---
## 🔧 **GUIDE OPERATIVE**
### **1. MODIFICARE IL MENU SIDEBAR**
**File da modificare**: `/resources/views/components/menu/sidebar-dynamic.blade.php`
**Struttura Menu**:
```php
// Aggiungere nuovo elemento menu
@if($userPermissions['NUOVA_SEZIONE'] ?? false)
<li class="nav-item">
<a href="#submenu" class="nav-link collapse-toggle dashboard-nav-link"
data-bs-toggle="collapse" data-section="NUOVA_SEZIONE">
<i class="fas fa-ICON me-2"></i>
<span>Nome Sezione</span>
<i class="fas fa-chevron-down ms-auto collapse-icon"></i>
</a>
<div class="collapse" id="submenu">
<ul class="nav flex-column ms-3">
<li class="nav-item">
<a href="#" class="nav-link dashboard-nav-link" data-section="NUOVA_SEZIONE">
<i class="fas fa-list me-2"></i>Lista
</a>
</li>
<li class="nav-item">
<a href="#" class="nav-link dashboard-nav-link" data-action="create-ITEM">
<i class="fas fa-plus me-2"></i>Nuovo
</a>
</li>
</ul>
</div>
</li>
@endif
```
**Aggiungere gestione JavaScript**: In `/admin/dashboard.blade.php`:
```javascript
case 'NUOVA_SEZIONE':
title = 'Gestione XXXX';
icon = 'fas fa-ICON';
loadNuovaSezioneContent();
break;
```
### **2. AGGIUNGERE NUOVA DASHBOARD SEZIONE**
**Step 1**: Aggiornare `/admin/dashboard.blade.php`
```javascript
function loadNuovaSezioneContent() {
const content = `
<div class="row mb-3">
<div class="col-md-6">
<h6 class="text-muted">Panoramica XXXXX</h6>
</div>
<div class="col-md-6 text-end">
<button type="button" class="btn btn-primary btn-sm">
<i class="fas fa-plus me-2"></i>Nuovo XXXXX
</button>
</div>
</div>
<!-- Contenuto specifico della sezione -->
`;
$('#dynamic-content-body').html(content);
}
```
**Step 2**: Aggiungere route in `/routes/web.php`
```php
Route::middleware(['role:admin|amministratore|super-admin'])->prefix('admin')->name('admin.')->group(function () {
Route::resource('NUOVA_RISORSA', NuovoController::class);
});
```
### **3. CREARE NUOVO FORM AJAX**
**Step 1**: Creare controller method
```php
public function createForm() {
return view('admin.SEZIONE._form-bootstrap');
}
```
**Step 2**: Aggiungere route specifica
```php
Route::get('SEZIONE/create/form', [Controller::class, 'createForm'])->name('SEZIONE.create.form');
```
**Step 3**: Creare view form con struttura standard
```php
<!-- Form Header per AJAX -->
<div class="d-flex align-items-center justify-content-between mb-3">
<div>
<h4 class="text-primary mb-1">
<i class="fas fa-plus-circle me-2"></i>Nuovo XXXXX
</h4>
<p class="text-muted mb-0 small">Descrizione form</p>
</div>
</div>
<!-- Form con Tab Bootstrap -->
<div class="card">
<!-- Tab Navigation -->
<!-- Tab Content -->
<!-- Footer con pulsanti -->
</div>
```
### **4. GESTIRE PERMESSI UTENTE**
**File**: `/app/Helpers/MenuHelper.php`
```php
public static function canUserAccessMenu($menuName) {
// Logica permessi per $menuName
return $hasPermission;
}
```
**Utilizzo nelle view**:
```php
@if(App\Helpers\MenuHelper::canUserAccessMenu('SEZIONE'))
<!-- Contenuto visibile solo se ha permessi -->
@endif
```
---
## 📊 **TABELLE DATABASE**
### **Tabelle Principali**
- `stabili` - Dati stabili/condomini
- `unita_immobiliari` - Unità immobiliari
- `soggetti` - Anagrafica unificata (condomini, proprietari, etc.)
- `ruoli_soggetti` - Ruoli degli utenti nel sistema
- `permessi` - Sistema permessi granulare
### **Strutture JSON**
- `stabili.palazzine` - JSON array palazzine
- `stabili.locali` - JSON array locali servizio
- `stabili.banche` - JSON array conti bancari multipli
---
## 🚀 **PROCEDURE STANDARD**
### **Aggiungere Nuova Funzionalità**
1. **Leggere questo manuale** per capire dove intervenire
2. **Identificare la sezione** (admin, super-admin, etc.)
3. **Creare/modificare route** in `web.php`
4. **Implementare controller** in `app/Http/Controllers/Admin/`
5. **Creare view** in `resources/views/admin/SEZIONE/`
6. **Aggiornare sidebar** se necessario
7. **Aggiungere JavaScript** per navigazione AJAX
8. **Testare permessi** con diversi ruoli utente
9. **Aggiornare documentazione**
### **Debugging Route**
```bash
cd /home/michele/netgescon/netgescon-laravel
php artisan route:clear
php artisan route:list | grep "NOME_ROUTE"
```
### **Cache Management**
```bash
php artisan cache:clear
php artisan view:clear
php artisan config:clear
php artisan route:clear
```
---
## 🔒 **SICUREZZA & RUOLI**
### **Ruoli Utente**
- `super-admin` - Accesso completo, import dati, configurazioni sistema
- `admin/amministratore` - Gestione condomini assegnati
- `collaboratore` - Assistenza limitata
- `condomino` - Accesso ai propri dati
### **Middleware Protezione**
```php
Route::middleware(['role:super-admin'])->group(function () {
// Solo super-admin può importare dati fiscali
});
```
---
## 📁 **ORGANIZZAZIONE FILE**
### **Controller Organization**
```
app/Http/Controllers/
├── Admin/ # Controllers amministrazione
├── SuperAdmin/ # Controllers super amministrazione
├── Api/ # API controllers
└── Auth/ # Controllers autenticazione
```
### **View Organization**
```
resources/views/
├── admin/ # Dashboard e funzioni admin
├── superadmin/ # Funzioni super admin
├── components/ # Componenti riutilizzabili
├── layouts/ # Layout principali
└── auth/ # Login/registrazione
```
---
## 🎨 **STANDARDS UI/UX**
### **Colori Sezioni**
- Stabili: `bg-primary` (blu)
- Condomini: `bg-success` (verde)
- Tickets: `bg-warning` (giallo)
- Contabilità: `bg-info` (azzurro)
- Urgenze: `bg-danger` (rosso)
### **Icone Standard**
- Stabili: `fas fa-building`
- Condomini: `fas fa-users`
- Tickets: `fas fa-ticket-simple`
- Contabilità: `fas fa-calculator`
- Banche: `fas fa-university`
### **Pattern Form**
- Header con titolo e descrizione
- Tab per organizzare campi
- Footer con pulsanti azione
- JavaScript per gestione dinamica
- Validazione client e server
---
## 📋 **PROSSIMI SVILUPPI**
### **Milestone Immediate**
1. **Importazione Dati Legacy** - Sistema import dal vecchio gestionale
2. **Sistema Stampe** - Etichette faldoni, chiavi, documenti
3. **Gestione Documenti** - Upload e organizzazione documenti per stabile
4. **Dashboard Mobile** - Ottimizzazione per smartphone/tablet
### **Roadmap Futura**
1. **Multi-Tenant Completo** - Separazione database per amministratore
2. **Sincronizzazione Cloud** - Backup automatici distribuiti
3. **API REST** - Integrazione con sistemi esterni
4. **Mobile App** - App nativa per gestione mobile
---
**📝 Mantenere sempre aggiornato questo documento ad ogni modifica significativa!**