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.

---

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/
  • ---

    ` 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_5

    2. Full Path (privato): connettore_I40/{path_name} - Esempio: connettore_I40/csv_I40_1_5

    3. 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 dashboard

Problema: 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/