Fix euristica BOM, unifica script/GUI su un'unica fonte, aggiungi test integrazione/E2E
Due bug reali trovati confrontando l'estrazione BOM con la BOM ufficiale Creo: un componente scartato per placement fallito in un file veniva bloccato per sempre anche quando il file giusto aveva un vero placement (perdendo interi sotto-alberi come 9256510047), e i codici con suffisso (_C01 ecc.) richiedevano sempre placement esplicito invece dell'eccezione per occorrenze ripetute già presente nella GUI. Entrambi corretti. AssemblyComponentScanner reso pubblico e scripts/BomViaDb.cs, ExtractCreoStrings.cs riscritti per referenziarlo via "#:project" invece di duplicare l'euristica: un'unica fonte di verità condivisa da GUI e script standalone. Aggiunti test di integrazione per Indexer.ScanAsync (mai coperto oltre al parsing del nome file) e test end-to-end che ricostruiscono l'intera pipeline disco -> indice -> risoluzione albero componenti senza toccare la UI. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
353a1028d9
commit
5c9661eb12
8 files changed
+514
-171
No files matched your search
@@ -128,12 +128,18 @@ disco di default `X:\`, hardcoded in `Form1.RadiceDiscoDefault`).
|
||||
## Script standalone (`scripts/`)
|
||||
|
||||
`scripts/` contiene C# file-based apps (.NET 10, `dotnet run scripts/Nome.cs -- arg1 arg2`),
|
||||
senza csproj — dipendenze NuGet extra si aggiungono con `#:package Nome@versione` in cima
|
||||
al file. `ExtractCreoStrings.cs` estrae la BOM di un `.asm` risolvendo ricorsivamente i
|
||||
sotto-assiemi contro `cad_index.db` (stessa logica di `Form1.AssiemeCompleto`, solo codici
|
||||
numerici Pro-E); `BomViaDb.cs` fa lo stesso ma con la tokenizzazione generica validata contro
|
||||
il DB, usata per intercettare anche i nomi alfabetici delle parti commerciali (vedi
|
||||
`docs/formato-asm.md`); `Analyze.cs` dumpa il contesto testo/hex attorno a un pattern in un
|
||||
senza csproj proprio — dipendenze NuGet extra si aggiungono con `#:package Nome@versione` in
|
||||
cima al file. `ExtractCreoStrings.cs` e `BomViaDb.cs` risolvono ricorsivamente l'albero
|
||||
componenti di un `.asm` contro `cad_index.db` da riga di comando (stessa logica di
|
||||
`Form1.RisolviAlberoComponenti`/`AssiemeCompleto`): entrambi referenziano
|
||||
`PrepStep/PrepStep.csproj` via `#:project` (più `#:property TargetFramework=net10.0-windows`,
|
||||
richiesto perché il progetto principale è WinForms) invece di duplicare l'euristica di
|
||||
estrazione/placement, che vive solo in `PrepStep/AssemblyComponentScanner.cs` — un'unica
|
||||
fonte di verità condivisa da GUI e script, vedi `docs/formato-asm.md`. Le due varianti restano
|
||||
distinte solo nel candidato passato a `EstraiCodiciReferenziati`: `ExtractCreoStrings.cs` non
|
||||
passa `codiciNoti` (riconosce solo i codici numerici Pro-E, dalla forma, senza bisogno del
|
||||
DB); `BomViaDb.cs` lo passa, per intercettare anche i nomi alfabetici delle parti commerciali
|
||||
validati contro l'indice. `Analyze.cs` dumpa il contesto testo/hex attorno a un pattern in un
|
||||
file binario, per investigare a mano nuovi falsi positivi prima di toccare la regex; `Query.cs`
|
||||
esegue una query SQL ad-hoc contro `cad_index.db` da riga di comando.
|
||||
|
||||
|
||||
Reference in new issue
Block a user