La sezione Architettura ripeteva quasi verbatim il dettaglio file-per-file gia' in docs/architettura.md e docs/db-cad-index.md, gonfiando il contesto caricato in ogni sessione senza aggiungere informazione. Sostituita con un riepilogo delle 5 fasi del wizard e rimandi puntuali; nessun contenuto perso, solo spostato dove viveva gia' in dettaglio. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
84 lines
4.5 KiB
Markdown
84 lines
4.5 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Cos'è questo progetto
|
|
|
|
`PrepStep` è il nome tecnico del progetto (cartella, namespace, csproj, eseguibile
|
|
`PrepStep.exe`); il nome mostrato all'utente finale è **Cevolani StepPrep** (`<Product>`/
|
|
`<AssemblyTitle>` in `PrepStep/PrepStep.csproj`, usato nel titolo della finestra insieme
|
|
alla versione, `<Version>`, attualmente `0.1.0`). È un'app Windows Forms (.NET 10, WinForms) che indicizza e permette di
|
|
cercare i file CAD Pro-ENGINEER/Creo contenuti in tutte le cartelle di primo livello
|
|
di un disco/share di rete (radice di default `X:\`), salvando i metadati in un DB
|
|
SQLite locale (`cad_index.db`). Il flusso a valle (fasi 2-5, vedi sotto) prepara i file
|
|
`raw/` da passare a Creo Distributed Batch per l'esportazione STEP: la app è quindi un
|
|
pre-processo per quel passaggio, non lo sostituisce.
|
|
|
|
## Comandi
|
|
|
|
Tutti da eseguire dentro `PrepStep/`.
|
|
|
|
```powershell
|
|
dotnet build -c Release
|
|
dotnet run -c Release
|
|
```
|
|
|
|
Pubblicazione come eseguibile standalone (single-file, self-contained, Windows x64):
|
|
|
|
```powershell
|
|
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
|
|
```
|
|
|
|
`PrepStep.Tests/` (xUnit) contiene unit e integration test — vedi
|
|
`dotnet test` da dentro quella cartella. Riferimento al progetto principale
|
|
via `ProjectReference` + `InternalsVisibleTo` (in `PrepStep.csproj`), così
|
|
i test possono chiamare direttamente `Indexer.ParseFilename` e
|
|
`AssemblyComponentScanner.EstraiCodiciReferenziati` senza esporli come API
|
|
pubblica.
|
|
|
|
## Architettura
|
|
|
|
Il programma è tutto in `PrepStep/` (nessun altro progetto nella solution). Dettaglio
|
|
completo file-per-file in [`docs/architettura.md`](docs/architettura.md); qui solo il flusso
|
|
che conta per capire il prodotto.
|
|
|
|
`Form1.cs` è un wizard a 5 fasi (una sola visibile alla volta, `_panelFasi[]`, si avanza con
|
|
"Avanti" solo se `AvantiConsentito`), UI costruita interamente in codice (`BuildUi`, nessun
|
|
designer visuale):
|
|
|
|
1. **Database** — carica/aggiorna `cad_index.db` (`Indexer.ScanAsync`, radice disco di
|
|
default `X:\` hardcoded in `RadiceDiscoDefault`); qui vive anche la **cartella di lavoro**
|
|
(destinazione di CSV/`raw/`/`step/`), proposta dall'ultima usata o dalla cartella del DB se
|
|
non c'è ancora nulla di salvato — vedi `docs/db-cad-index.md` per il dettaglio di schema e
|
|
risoluzione del percorso DB.
|
|
2. **Importa Distinta Base** — `DistintaBaseImporter.ConvertiInCsv` genera il CSV
|
|
componente;descrizione nella cartella di lavoro; se il file segue la convenzione del
|
|
gestionale (`DBP_<codice>_<timestamp>`), aggiunge l'assieme generale come riga in più (da
|
|
quel momento è un componente come tutti gli altri, nessun caso speciale nel resto del
|
|
codice).
|
|
3. **Crea cartella raw** — `TrovaPercorsiCad` + `CopiaFileTrovati` (parallela, vedi
|
|
`docs/copia-raw-parallela.md`) copiano in `raw/` i file CAD dei componenti del CSV trovati
|
|
nell'indice.
|
|
4. **Trova componenti referenziati** — `AssemblyComponentScanner` legge euristicamente i
|
|
`.asm` in `raw/` per risolvere ricorsivamente sotto-assiemi/parti (`RisolviAlberoComponenti`),
|
|
copiandoli anch'essi in `raw/`. Euristica e falsi positivi noti in `docs/formato-asm.md`.
|
|
5. **Verifica completezza** — mostra i `.asm` della distinta già in `raw/`, trascinabili su
|
|
Creo per l'esportazione STEP (Distributed Batch, manuale, fuori dall'app); "Verifica
|
|
completezza assiemi" controlla ricorsivamente sull'indice (non su `raw/`) se tutti i
|
|
sotto-componenti di ogni assieme sono presenti.
|
|
|
|
## Script standalone (`scripts/`)
|
|
|
|
`scripts/` contiene C# file-based apps (.NET 10, `dotnet run scripts/Nome.cs -- arg1 arg2`,
|
|
lanciati dalla root del repo — **non** da dentro `PrepStep/`, che ha un `.csproj` `WinExe`:
|
|
`dotnet run` lì avvia la GUI vera invece dello script). Elenco e dettaglio di ciascuno in
|
|
`docs/architettura.md`.
|
|
|
|
Il pattern da preservare: `ExtractCreoStrings.cs`/`BomViaDb.cs` referenziano
|
|
`PrepStep/PrepStep.csproj` via `#:project` 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` per l'euristica e i
|
|
falsi positivi noti). `CreoBom.cs` è l'eccezione deliberata: legge la struttura a record del
|
|
binario invece di contare occorrenze testuali (`docs/formato-asm-record.md`), non passa da
|
|
`AssemblyComponentScanner`/`cad_index.db` e non la sostituisce nella GUI.
|