308 lines
8.4 KiB
Markdown
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!**
|