Limit step_finali to the BOM's own components

Sub-components discovered recursively in phase 4 exist only to complete
raw/, not to define what final STEP files are expected - including them
made step_finali report unrelated sub-parts as missing/created. Also drops
the now-unused _componentiRisolti field.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5 committed 2026-09-17 12:26:39 +02:00
1 parent 338a7327a0
commit 1f6cb2da00
2 files changed
+6 -11

No files matched your search

+4 -4
View File
@@ -59,10 +59,10 @@ entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione inte
sotto-assiemi/parti che contengono (`RisolviAlberoComponenti`), copiandoli anch'essi
in `raw/`.
5. **Verifica completezza e STEP** — "Verifica completezza assiemi" (ricorsivo sui
percorsi originali in indice, non su `raw/`) e "Crea cartella step_finali": unisce i
codici della distinta con quelli risolti in fase 4 (`_componentiRisolti`), cerca in
`step/` il file `<codice>.stp` di ciascuno, lo copia in `step_finali/` se lo trova
e mostra l'esito (creato/mancante) in `ReportStepForm`.
percorsi originali in indice, non su `raw/`) e "Crea cartella step_finali": solo per i
codici della distinta importata dal CSV (non i sotto-componenti di fase 4, che servono
solo a completare `raw/`) cerca in `step/` il file `<codice>.stp`, lo copia in
`step_finali/` se lo trova e mostra l'esito (creato/mancante) in `ReportStepForm`.
- **Indexer.cs** — logica di scansione del disco e scrittura/aggiornamento del DB
SQLite (`Indexer.ScanAsync`). Cammina tutte le cartelle di primo livello trovate sotto
la radice (scoperte dinamicamente con `Directory.GetDirectories`, non un elenco fisso)
+2 -7
View File
@@ -46,7 +46,6 @@ public partial class Form1 : Form
private List<(string Componente, string Descrizione)>? _righeCorrenti;
private Dictionary<string, List<string>>? _ultimaVerifica;
private string? _ultimaCartellaRaw;
private List<(string Codice, string Tipo, string Percorso)>? _componentiRisolti;
public Form1()
{
@@ -476,7 +475,6 @@ public partial class Form1 : Form
_gridRaw.Rows.Clear();
_ultimaCartellaRaw = null;
_ultimaVerifica = null;
_componentiRisolti = null;
ImpostaStatoImport($"CSV generato ({righe.Count} righe): {csv}", Color.DarkGreen);
}
@@ -565,11 +563,9 @@ public partial class Form1 : Form
foreach (var r in _righeCorrenti)
descrizioni[r.Componente] = r.Descrizione;
// Il confronto include sia i componenti della distinta sia i sotto-componenti scoperti
// ricorsivamente in fase 4 (_componentiRisolti): un assieme può avere lo STEP fatto solo
// per i suoi pezzi, non per l'assieme intero, o viceversa.
// Solo i componenti della distinta importata dal CSV: i sotto-componenti trovati in
// fase 4 (_componentiRisolti) servono a completare "raw", non entrano nello STEP finale.
var tuttiICodici = _righeCorrenti.Select(r => r.Componente)
.Concat((_componentiRisolti ?? Enumerable.Empty<(string Codice, string Tipo, string Percorso)>()).Select(c => c.Codice))
.Distinct(StringComparer.OrdinalIgnoreCase)
.ToList();
@@ -751,7 +747,6 @@ public partial class Form1 : Form
progressForm.ShowDialog(this);
var (trovati, codiciNonTrovati) = await task;
_componentiRisolti = trovati;
int numPrt = trovati.Count(r => r.Tipo == "prt");
int numAsm = trovati.Count(r => r.Tipo == "asm");