# Import CSV macchine → Lavorazioni (eseguito 2026-08-03)

## Esito

Import **LIVE completato senza errori**:

| Sorgente (nome file) | Macchina collegata | Lavorazioni | Sessioni |
|----------------------|--------------------|------------:|---------:|
| `5Assi_analisi.csv` | **MAC1** Bulleri 5 Assi | 26 | 50 |
| `CN1_analisi.csv` | **MAC6** CMS Olimpo (CN1 = Olimpo; corretto post-import) | 57 | 121 |
| `Polyfus.csv` | **MAC4** Ritmo PolyFusion4 | 394 | 1530 |
| **Totale** | | **477** | **1701** |

Script: [`import_lavorazioni_csv.php`](import_lavorazioni_csv.php) (copia anche in `/tmp/`).  
Log: `/tmp/import_lavorazioni_csv.log`

## Collegamento macchina

Il codice macchina è ricavato dal **nome file**, non dal contenuto riga:

- `5Assi_*` → `codice_macchina=MAC1` (record già presente)
- `CN1_*` → `codice_macchina=MAC6` CMS Olimpo (confermato: CN1 = Olimpo)
- `Polyfus*` → `codice_macchina=MAC4` (record già presente)

Ogni Lavorazione ha `description` con traccia `file token → codice nome`.

## JobOrder contenitore

- `IMP-CSV-5Assi`
- `IMP-CSV-CN1`
- `IMP-CSV-Polyfus`

(`programma_nome` / Recipe resta sul record Lavorazioni; associazione fine programma→commessa reale è fase successiva.)

## Idempotenza

`id_evento_esterno = CSV:{codice}:{data}:{programma}` — rieseguire lo script salta i già importati.

## Note

- Warning PHP non bloccanti su `mlLavorazioniSess` / DateTimeField durante save ModLight.
- Sessioni CNC senza fine → `Interrotta`; Polyfus ABORT → `Interrotta`; altri errori saldatura → `Errore`.
- Durante `ensureMacchinario`, l’uitype 4 di Macchinari ha generato 2 duplicati (MAC7/MAC9) e aveva assegnato a CN1 il codice MAC8: **corretti** (CN1→codice `CN1`; duplicati soft-deleted).
- Soft-link attuale: `Lavorazioni.codice_macchina` = `Macchinari.codice_macchinario` per MAC1, CN1, MAC4.
