Nuova voce "File → Elimina CSV delle distinte..." (EliminaCsv): elimina i *.csv al primo livello della cartella di lavoro, che altrimenti si accumulano uno per distinta importata. Chiede conferma mostrando l'elenco dei file; gli .xls del gestionale e raw/step non sono toccati. Guida utente e guida in-app: nuova sezione "Dove finiscono i file" (DB sempre nella cartella di installazione, CSV/raw/step nella cartella di lavoro, comandi di pulizia, come aprire la cartella nascosta in AppData), fase 1 allineata al DB fisso e ad "Apri DB..." solo per la sessione. Tolta dalla guida utente la sezione di installazione: chi la legge ha già il programma installato (resta nel README). Doc aggiornati nello stesso commit: CLAUDE.md, docs/architettura.md, docs/guida-utente.md, CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PrepStep - Cevolani
App Windows Forms (.NET 10, progetto PrepStep) per indicizzare, cercare e
recuperare i file CAD Pro-ENGINEER/Creo di un disco/share di rete, e per trasformare
l'estrazione "Distinta Base" del gestionale (file .xls/.xml) in un CSV con il
percorso CAD di ogni componente, fino a raccogliere in raw/ tutto il necessario per
l'esportazione STEP con Creo Distributed Batch: è un pre-processo per quel
passaggio, non lo sostituisce.
Funzionalità
- Indice CAD — all'avvio carica automaticamente
cad_index.dbdalla cartella di installazione (%LOCALAPPDATA%\Programs\PrepStep). Se manca, lo si crea con Aggiorna indice, oppure si apre un altro DB per la sola sessione con Apri DB.... Aggiorna indice che scansiona il disco (di defaultX:\, tutte le cartelle di primo livello che trova) e indicizza tutti i file. La cartella di lavoro (dove finiscono il CSV e la cartellaraw/; gli STEP esportati con Creo vanno instep/, dentro la stessa cartella) è l'ultima scelta (ricordata tra un avvio e l'altro) o, la prima volta, la cartella di installazione, modificabile in qualunque momento da File → Scegli cartella di lavoro.... - Importa Distinta Base — trascina (o scegli da file) l'estrazione
.xls/.xmldel gestionale (foglio "Distinta Base", colonne Componente/Descrizione): viene generato un CSV nella cartella di lavoro, con anteprima in griglia. Se il file segue la convenzione di nomeDBP_<codice>_<timestamp>del gestionale, l'assieme generale dell'estrazione viene aggiunto come riga in più nel CSV (il foglio elenca solo i componenti sotto l'assieme, non l'assieme stesso). Il bottone Verifica presenza (compare solo dopo un import riuscito) cerca i componenti nel database — è questo passo, non il solo import, a sbloccare la fase successiva. - Crea cartella raw — cerca nell'indice il percorso CAD di ogni
componente importato (assieme generale incluso) e copia i file trovati
in una cartella
raw/dentro la cartella di lavoro. - Trova componenti referenziati — legge i metadati dei file
.asminraw/per trovare ricorsivamente i sotto-assiemi/parti che li compongono, copiandoli a loro volta inraw/(passo opzionale se la distinta contiene solo parti singole). - Trascina su Creo — mostra i file
.asmdella distinta già inraw/, trascinabili su Creo Distributed Batch per l'esportazione STEP (passo manuale, fuori da quest'app): scrive instep/, dentro la cartella di lavoro.
Guida utente passo-passo completa in docs/guida-utente.md
(stessa sintesi anche in-app da Aiuto → Guida, F1).
Requisiti
- Windows
- .NET 10 SDK (per build/run da sorgente)
- Accesso alla share di rete con i file CAD (
X:\di default) per l'indicizzazione
Build
cd PrepStep
dotnet build -c Release
Avvio
Da sorgente:
cd PrepStep
dotnet run -c Release
Oppure l'eseguibile già compilato:
cd PrepStep\bin\Release\net10.0-windows
.\PrepStep.exe
Pubblicazione (eseguibile standalone)
Genera un .exe self-contained per Windows x64, senza bisogno del runtime
.NET installato sulla macchina di destinazione:
cd PrepStep
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
L'eseguibile risultante è in PrepStep\publish\PrepStep.exe — un unico
file, si copia e si lancia su un'altra macchina Windows senza bisogno di .NET
installato.
Setup di installazione
Per distribuire l'app agli utenti si genera un setup con Inno Setup 6
(una volta sola: winget install JRSoftware.InnoSetup --scope user). Dalla root del repo,
dopo il dotnet publish qui sopra:
& "$env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe" installer\PrepStep.iss
Produce installer\Output\PrepStep-Setup-<versione>.exe (versione letta dall'exe, cioè
<Version> del csproj). Il setup:
- installa solo per l'utente corrente, in
%LOCALAPPDATA%\Programs\PrepStep, senza chiedere i diritti di amministratore; - crea nel menu Start i collegamenti al programma e al disinstallatore (quello sul desktop è facoltativo);
- compare in "Impostazioni → App installate", da cui si disinstalla.
Se l'app è già installata, il setup chiede prima cosa fare: Sì aggiorna/reinstalla (DB e
impostazioni restano), No disinstalla, Annulla esce. Installazione silenziosa (aggiorna
senza chiedere) — es. per distribuirla da script:
PrepStep-Setup-<versione>.exe /VERYSILENT /SUPPRESSMSGBOXES.
Struttura del progetto
Tutto il codice è in PrepStep/ (unico progetto nella solution, GUI e
indicizzazione integrate):
Program.cs— entry point.Form1.cs— finestra principale (indice CAD, import Distinta Base, griglia risultati); UI costruita interamente in codice, nessun designer visuale.Indexer.cs— scansione del disco e scrittura/aggiornamento del DB SQLite.DistintaBaseImporter.cs— parsing del file Distinta Base (SpreadsheetML XML o Excel binario/OpenXML tramite ExcelDataReader) e generazione CSV.ProgressForm.cs— dialog di avanzamento durante l'aggiornamento indice.
Il database generato (cad_index.db), i file Excel/CSV della distinta
trascinati nella root e le cartelle raw//step/ sono rigenerabili e non
sono tracciati in git (vedi .gitignore).
Test
PrepStep.Tests/ contiene unit test (regex di estrazione dei componenti
dai .asm, parsing del nome file Pro-E) e integration test (schema/vista SQL
reale, con focus sui bug di case-sensitivity/duplicati già risolti). Da
eseguire:
cd PrepStep.Tests
dotnet test