Struttura Path CSV Macchine I40
Struttura Path CSV Macchine I40
π Architettura Storage
Path Privati (Non Accessibili da Web)
``
storage/app/connettore_I40/
βββ csv_I40_1_5/ β Macchina ID=1, Profilo ID=5
β βββ file1.csv
β βββ file2.csv
β βββ ...
βββ csv_I40_1_7/ β Macchina ID=1, Profilo ID=7
β βββ ...
βββ csv_I40_2_5/ β Macchina ID=2, Profilo ID=5
β βββ ...
βββ ...
`Scopo: Storage privato per CSV in attesa di elaborazione o archiviazione.
---
Path Pubblici (Accessibili via Web)
`
storage/app/public/I40/
βββ csv_I40_1_5/ β ../../connettore_I40/csv_I40_1_5/ (symlink)
βββ csv_I40_1_7/ β ../../connettore_I40/csv_I40_1_7/ (symlink)
βββ csv_I40_2_5/ β ../../connettore_I40/csv_I40_2_5/ (symlink)
βββ ...
`Scopo: Accesso pubblico tramite URL per API, download, ecc.
---
Esposizione Web (Laravel Storage Link)
Laravel espone automaticamente
storage/app/public/ come /storage/ tramite un symlink:`
public/storage β ../storage/app/public
`Quindi:
storage/app/public/I40/csv_I40_1_5/
Diventa accessibile come: https://sartup.it/sartup/public/storage/I40/csv_I40_1_5/---
π Come Funzionano i Symlink
Symlink Relativo
`
storage/app/public/I40/csv_I40_1_5
β (symlink relativo)
../../connettore_I40/csv_I40_1_5
β
storage/app/connettore_I40/csv_I40_1_5/
`Vantaggi:
Non dipende dal path assoluto del server
Funziona anche se l'applicazione viene spostata
Compatibile con SFTP/rsync ---
π Struttura Dati nel Database
Campo
profiles_config (JSON)
`json
[
{
"servizio": "Taglio",
"profilo_id": 5,
"nomeProfilo": "Profilo Taglio Standard"
},
{
"servizio": "Piega",
"profilo_id": 7,
"nomeProfilo": "Profilo Piega CNC"
}
]
`Path Generati Automaticamente
Per ogni configurazione, il sistema genera:
1. Path Name:
csv_I40_{machine_id}_{profile_id}
- Esempio: csv_I40_1_52. Full Path (privato):
connettore_I40/{path_name}
- Esempio: connettore_I40/csv_I40_1_53. Public Path (pubblico):
I40/{path_name}
- Relativo a storage/app/public/
- Esempio: storage/app/public/I40/csv_I40_1_5---
π οΈ Creazione e Riparazione Path
Creazione Automatica
I path vengono creati automaticamente quando:
1. Crei una nuova macchina con profili associati
2. Modifichi una macchina e aggiungi nuovi profili
Riparazione Manuale
Se i path mancano (database esistente, o errori precedenti):
Opzione 1: Dashboard Web
`
/admin/i40/machines/connected
β Clicca "π§ Ripara Tutti i Path"
`Opzione 2: Per Singola Macchina
`
Dashboard β Click su "π§ Ripara" per ogni macchina
`Opzione 3: Script PHP (da VPS)
`bash
cd /path/to/sartup
php database/sql/repair_all_machine_paths.php
`---
π Verifica Health Status
Il sistema verifica automaticamente:
β
Storage Exists: La cartella in connettore_I40/ esiste?
β
Public Accessible: Il symlink in public/I40/ esiste?
β
Files Count: Quanti CSV sono presenti?
β
Last Activity: Quando Γ¨ stato modificato l'ultimo file? Status Possibili:
π’ healthy: Storage e symlink OK
π‘ missing_storage: Manca la cartella privata
π‘ missing_public: Manca il symlink pubblico
π΄ error: Errore generico ---
π Esempio Completo
Macchina: "CNC Laser 001" (ID=1)
Configurazione:
`json
{
"profiles_config": [
{
"servizio": "Taglio",
"profilo_id": 5,
"nomeProfilo": "Profilo Taglio Laser"
}
]
}
`Path Generati:
Privato (Storage):
`
storage/app/connettore_I40/csv_I40_1_5/
`Pubblico (Symlink):
`
storage/app/public/I40/csv_I40_1_5/ β ../../connettore_I40/csv_I40_1_5/
`URL Pubblico:
`
https://sartup.it/sartup/public/storage/I40/csv_I40_1_5/
`---
π― Best Practices
1. Non Modificare Manualmente
I path vengono gestiti automaticamente dal sistema. Non creare/eliminare cartelle manualmente.2. Usa Sempre la Funzione di Riparazione
Se qualcosa non funziona, usa il pulsante "Ripara Path" invece di intervenire manualmente.3. Backup Regolari
La cartella storage/app/connettore_I40/ contiene i CSV delle macchine. Include questa cartella nei backup.4. Monitoraggio Continuo
Usa la dashboard "Macchine Collegate" per monitorare lo stato di salute dei path.---
π¨ Troubleshooting
Problema: Path non esistono
Soluzione: Usa "Ripara Tutti i Path" dalla dashboardProblema: URL pubblico restituisce 404
Verifica:
1. Symlink Laravel principale esiste? ls -la public/storage
2. Se manca: php artisan storage:link (da VPS)
3. Symlink specifico esiste? ls -la storage/app/public/I40/Problema: File non visibili
Verifica:
1. Permessi corretti? chmod 755 storage/app/connettore_I40/
2. Owner corretto? chown -R www-data:www-data storage/`---
Ultimo aggiornamento: 17 Ottobre 2025
Analisi Codice
Blocco 1
storage/app/connettore_I40/
βββ csv_I40_1_5/ β Macchina ID=1, Profilo ID=5
β βββ file1.csv
β βββ file2.csv
β βββ ...
βββ csv_I40_1_7/ β Macchina ID=1, Profilo ID=7
β βββ ...
βββ csv_I40_2_5/ β Macchina ID=2, Profilo ID=5
β βββ ...
βββ ...
Blocco 2
storage/app/public/I40/
βββ csv_I40_1_5/ β ../../connettore_I40/csv_I40_1_5/ (symlink)
βββ csv_I40_1_7/ β ../../connettore_I40/csv_I40_1_7/ (symlink)
βββ csv_I40_2_5/ β ../../connettore_I40/csv_I40_2_5/ (symlink)
βββ ...
Blocco 3
public/storage β ../storage/app/public
Blocco 4
storage/app/public/I40/csv_I40_1_5
β (symlink relativo)
../../connettore_I40/csv_I40_1_5
β
storage/app/connettore_I40/csv_I40_1_5/
Blocco 5 json
[
{
"servizio": "Taglio",
"profilo_id": 5,
"nomeProfilo": "Profilo Taglio Standard"
},
{
"servizio": "Piega",
"profilo_id": 7,
"nomeProfilo": "Profilo Piega CNC"
}
]
Blocco 6
/admin/i40/machines/connected
β Clicca "π§ Ripara Tutti i Path"
Blocco 7
Dashboard β Click su "π§ Ripara" per ogni macchina
Blocco 8 bash
cd /path/to/sartup
php database/sql/repair_all_machine_paths.php
Blocco 9 json
{
"profiles_config": [
{
"servizio": "Taglio",
"profilo_id": 5,
"nomeProfilo": "Profilo Taglio Laser"
}
]
}
Blocco 10
storage/app/connettore_I40/csv_I40_1_5/
Blocco 11
storage/app/public/I40/csv_I40_1_5/ β ../../connettore_I40/csv_I40_1_5/
Blocco 12
https://sartup.it/sartup/public/storage/I40/csv_I40_1_5/