netgescon-day0/docs/90-UI-interfaccia-unica/90-01-content/06-checklist-implementazione.md

308 lines
8.4 KiB
Markdown

# ✅ CHECKLIST IMPLEMENTAZIONE
## Guida step-by-step per nuovi moduli
---
## 📋 **CHECKLIST COMPLETA NUOVO MODULO**
### **✅ FASE 1: PREPARAZIONE**
- [ ] **Nome modulo** definito (es: `fornitori`, `gestioni`)
- [ ] **Credenziali DB** verificate (netgescon_user/NetGescon2024!)
- [ ] **Tabelle core** esistenti (stabili, gestioni, unita_immobiliari)
- [ ] **Pattern scelto** (Menu principale, Sub-menu, Cards)
- [ ] **Files template** pronti da 90-01-content/
### **✅ FASE 2: DATABASE**
- [ ] **Migration creata** con naming convention
- [ ] **Tabella principale** con campi standard
- [ ] **Foreign keys** verso stabili/gestioni
- [ ] **Indexes** su campi filtro
- [ ] **Soft deletes** attivati
- [ ] **Audit fields** (created_by, updated_by)
- [ ] **Migration eseguita** senza errori
- [ ] **Seeder dati test** opzionale
### **✅ FASE 3: CONTROLLER**
- [ ] **Controller creato** in `app/Http/Controllers/Admin/`
- [ ] **Metodi standard** (index, show, create, store, edit, update, destroy)
- [ ] **Stats calculation** per cards
- [ ] **Query con relazioni** stabili/gestioni
- [ ] **Filtro amministratore** implementato
- [ ] **Validation rules** definite
- [ ] **Security checks** attivi
- [ ] **Menu tabs config** configurata
### **✅ FASE 4: ROUTES**
- [ ] **RESTful routes** in `routes/admin.php`
- [ ] **Custom routes** (reports, config)
- [ ] **Route naming** consistente
- [ ] **Middleware auth** applicato
- [ ] **Route testing** funzionante
### **✅ FASE 5: VIEWS**
- [ ] **Folder views** creato `resources/views/admin/{modulo}/`
- [ ] **index.blade.php** con layout base
- [ ] **show.blade.php** con sub-tabs
- [ ] **create.blade.php** con form
- [ ] **edit.blade.php** con form
- [ ] **_form.blade.php** partial
### **✅ FASE 6: LAYOUT E MENU**
- [ ] **Extends netgescon** layout
- [ ] **Breadcrumb** configurato
- [ ] **Menu tabs** implementato
- [ ] **Stats cards** configurate
- [ ] **Active states** funzionanti
- [ ] **Icons** appropriate
- [ ] **Navigation** tra tabs
### **✅ FASE 7: CSS E JAVASCRIPT**
- [ ] **CSS standard** incluso
- [ ] **JavaScript modules** incluso
- [ ] **Tab functionality** testata
- [ ] **Cards hover** effects
- [ ] **Responsive design** verificato
- [ ] **Mobile compatibility** testata
### **✅ FASE 8: TESTING**
- [ ] **Listing page** accessibile
- [ ] **Create form** funzionante
- [ ] **Edit form** funzionante
- [ ] **Delete action** funzionante
- [ ] **Search/filters** attivi
- [ ] **Pagination** corretta
- [ ] **Statistics** accurate
- [ ] **Security** verificata (solo dati amministratore)
### **✅ FASE 9: DOCUMENTAZIONE**
- [ ] **README modulo** creato
- [ ] **API endpoints** documentati
- [ ] **Model relationships** documentate
- [ ] **CHANGELOG** aggiornato
- [ ] **Manuali collegati** aggiornati
---
## 🚀 **QUICK START TEMPLATE**
### **1. Crea Migration**
```bash
cd /var/www/netgescon
php artisan make:migration create_fornitori_table
```
```php
// database/migrations/YYYY_MM_DD_create_fornitori_table.php
Schema::create('fornitori', function (Blueprint $table) {
$table->id();
$table->string('denominazione');
$table->string('partita_iva')->nullable();
$table->enum('stato', ['attivo', 'inattivo', 'sospeso'])->default('attivo');
$table->foreignId('stabile_id')->nullable()->constrained('stabili')->onDelete('cascade');
$table->integer('amministratore_id')->nullable();
$table->timestamps();
$table->softDeletes();
$table->index(['amministratore_id', 'stato']);
});
```
### **2. Crea Controller**
```bash
php artisan make:controller Admin/FornitoriController
```
```php
// Copia il template da 04-controller-standard.md
// Sostituisci:
// - 'modulo' → 'fornitori'
// - 'ModuloController' → 'FornitoriController'
// - 'modulo_table' → 'fornitori'
```
### **3. Configura Routes**
```php
// routes/admin.php
Route::resource('fornitori', 'FornitoriController');
Route::get('fornitori/reports', ['FornitoriController', 'reports'])->name('fornitori.reports');
```
### **4. Crea Views**
```bash
mkdir -p resources/views/admin/fornitori
```
**index.blade.php**:
```blade
// Copia template da 01-layout-base.md
// Aggiungi menu da 02-pattern-menu.md
// Aggiungi cards da 03-cards-statistiche.md
```
### **5. Include CSS/JS**
```blade
@push('styles')
<link href="{{ asset('css/netgescon-standard.css') }}" rel="stylesheet">
@endpush
@push('scripts')
<script src="{{ asset('js/netgescon-modules.js') }}"></script>
@endpush
```
---
## 🔧 **TROUBLESHOOTING COMUNE**
### **❌ Errore: Tabella non trovata**
```bash
# Verifica migrations
php artisan migrate:status
php artisan migrate
```
### **❌ Errore: Route non trovata**
```bash
# Controlla routes
php artisan route:list | grep fornitori
# Pulisci cache
php artisan route:clear
```
### **❌ Errore: View non trovata**
```bash
# Verifica path file
ls -la resources/views/admin/fornitori/
# Pulisci cache views
php artisan view:clear
```
### **❌ Errore: CSS non caricato**
```bash
# Verifica file exists
ls -la public/css/netgescon-standard.css
# Controlla browser console per 404
```
### **❌ Errore: Permission denied**
```bash
# Verifica permessi
sudo chmod -R 755 /var/www/netgescon/resources/views/
sudo chown -R www-data:www-data /var/www/netgescon/
```
---
## 📊 **ESEMPI IMPLEMENTAZIONE**
### **Modulo Semplice: Fornitori**
```
Tempo stimato: 2-3 ore
Complessità: Bassa
Pattern: Menu principale + Cards
Tabelle: fornitori (main)
Features: CRUD base, filtri, export
```
### **Modulo Medio: Gestioni**
```
Tempo stimato: 4-6 ore
Complessità: Media
Pattern: Menu principale + Sub-tabs detail
Tabelle: gestioni (main) + gestioni_movimenti
Features: CRUD, reports, chiusura automatica
```
### **Modulo Complesso: Contabilità**
```
Tempo stimato: 8-12 ore
Complessità: Alta
Pattern: Tutti i pattern combinati
Tabelle: Multiple con relazioni complesse
Features: CRUD, reports, piano conti, bilanci
```
---
## 🎯 **TESTING CHECKLIST**
### **Funzionalità Base**:
- [ ] **Login** → Accesso modulo
- [ ] **Listing** → Visualizzazione items
- [ ] **Create** → Nuovo item
- [ ] **Edit** → Modifica item
- [ ] **Delete** → Eliminazione item
- [ ] **Search** → Ricerca funzionante
- [ ] **Filter** → Filtri attivi
- [ ] **Pagination** → Navigazione pagine
### **UI/UX**:
- [ ] **Menu tabs** → Navigazione corretta
- [ ] **Breadcrumb** → Path corretto
- [ ] **Cards** → Statistiche accurate
- [ ] **Icons** → Icone appropriate
- [ ] **Colors** → Scheme consistente
- [ ] **Responsive** → Mobile friendly
- [ ] **Loading** → States appropriati
### **Security**:
- [ ] **Auth required** → Login obbligatorio
- [ ] **Amministratore filter** → Solo dati propri
- [ ] **CSRF protection** → Token presente
- [ ] **Validation** → Input sanitized
- [ ] **Authorization** → Permissions corrette
### **Performance**:
- [ ] **Query optimization** → Indexes utilizzati
- [ ] **N+1 queries** → Evitate
- [ ] **Page load**< 2 secondi
- [ ] **Memory usage** Entro limiti
- [ ] **CSS/JS** Minified in production
---
## 📝 **TEMPLATE FILES**
### **File da creare per ogni modulo**:
```
app/Http/Controllers/Admin/{Modulo}Controller.php
app/Models/{Modulo}.php (optional Eloquent)
database/migrations/YYYY_MM_DD_create_{modulo}_table.php
database/seeders/{Modulo}Seeder.php (optional)
resources/views/admin/{modulo}/index.blade.php
resources/views/admin/{modulo}/show.blade.php
resources/views/admin/{modulo}/create.blade.php
resources/views/admin/{modulo}/edit.blade.php
resources/views/admin/{modulo}/_form.blade.php
tests/Feature/{Modulo}ControllerTest.php (optional)
```
### **Routes da aggiungere**:
```php
Route::resource('{modulo}', '{Modulo}Controller');
Route::get('{modulo}/reports', ['{Modulo}Controller', 'reports'])->name('{modulo}.reports');
Route::get('{modulo}/config', ['{Modulo}Controller', 'config'])->name('{modulo}.config');
```
---
## 🏁 **COMPLETION CHECKLIST**
### **Quando il modulo è completato**:
- [ ] **Tutte le checkbox** di questa checklist
- [ ] **Demo funzionante** con dati test
- [ ] **Documentazione** aggiornata
- [ ] **Git commit** con message chiaro
- [ ] **Deploy test** su staging
- [ ] **User acceptance** test
- [ ] **Production deploy** quando approvato
### **Post-implementazione**:
- [ ] **Monitor errors** in production
- [ ] **Collect user feedback**
- [ ] **Performance optimization** se necessaria
- [ ] **Documentation update** con lessons learned
---
**🎉 Congratulazioni! Il tuo modulo NetGescon è pronto e segue tutti gli standard!**