From 1f6cb2da00880f20099ed851cf331ca1f5daf9f3 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Thu, 17 Sep 2026 12:26:39 +0200 Subject: [PATCH] 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 --- CLAUDE.md | 8 ++++---- CadSearchGui/Form1.cs | 9 ++------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 2c6a516..7c99e58 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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 `.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 `.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) diff --git a/CadSearchGui/Form1.cs b/CadSearchGui/Form1.cs index f35dcba..6a22d3e 100644 --- a/CadSearchGui/Form1.cs +++ b/CadSearchGui/Form1.cs @@ -46,7 +46,6 @@ public partial class Form1 : Form private List<(string Componente, string Descrizione)>? _righeCorrenti; private Dictionary>? _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");