Add explicit working folder; rename project from CadSearchGui to PrepStep
Working folder (phase 1): CSV/raw/step/step_finali all used to live split across two different implicit locations (CSV in the "repo root" found by walking up for CLAUDE.md, raw/step next to the input distinta file) with neither shown to the user. That repo-root lookup also silently breaks once the app runs as a standalone published exe on a machine with no repo/ CLAUDE.md at all. Replaced both with one explicit "cartella di lavoro", auto-suggested (last used, remembered the same way as the DB path) and changeable from phase 1, with no dependency on any repo marker file. Rename: CadSearchGui was the working name from before the app had a product identity; renamed folders, csproj files, namespace and the AppData settings folder to PrepStep throughout, matching the exe name already in use. Product-facing name stays "Cevolani StepPrep". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6726dd2216
commit
13798ad47c
24 files changed
+211
-129
No files matched your search
@@ -4,10 +4,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## Cos'è questo progetto
|
||||
|
||||
`CadSearchGui` è il nome tecnico del progetto (cartella, namespace, csproj); il nome del
|
||||
programma per l'utente finale è **Cevolani StepPrep** (versione in `<Version>` dentro
|
||||
`CadSearchGui/CadSearchGui.csproj`, attualmente `0.1.0` — mostrata anche nel titolo della
|
||||
finestra). È un'app Windows Forms (.NET 10, WinForms) che indicizza e permette di
|
||||
`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
|
||||
@@ -16,7 +16,7 @@ pre-processo per quel passaggio, non lo sostituisce.
|
||||
|
||||
## Comandi
|
||||
|
||||
Tutti da eseguire dentro `CadSearchGui/`.
|
||||
Tutti da eseguire dentro `PrepStep/`.
|
||||
|
||||
```powershell
|
||||
dotnet build -c Release
|
||||
@@ -29,16 +29,16 @@ Pubblicazione come eseguibile standalone (single-file, self-contained, Windows x
|
||||
dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
|
||||
```
|
||||
|
||||
`CadSearchGui.Tests/` (xUnit) contiene unit e integration test — vedi
|
||||
`PrepStep.Tests/` (xUnit) contiene unit e integration test — vedi
|
||||
`dotnet test` da dentro quella cartella. Riferimento al progetto principale
|
||||
via `ProjectReference` + `InternalsVisibleTo` (in `CadSearchGui.csproj`), così
|
||||
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 `CadSearchGui/` (nessun altro progetto nella solution — in
|
||||
Il programma è tutto in `PrepStep/` (nessun altro progetto nella solution — in
|
||||
passato esisteva anche una CLI separata e uno script Python di indicizzazione,
|
||||
entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione integrate).
|
||||
|
||||
@@ -50,19 +50,25 @@ entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione inte
|
||||
`Form1.Designer.cs` contiene solo lo scheletro minimo (`InitializeComponent`/`Dispose`)
|
||||
generato dal template. Le fasi, in ordine:
|
||||
1. **Database** — carica/aggiorna l'indice, mostra data ultimo aggiornamento; qui vive
|
||||
anche "Pulisci raw e step" (manutenzione, non fa parte del flusso a valle).
|
||||
anche la **cartella di lavoro** (`_cartellaLavoro`, mostrata in `_lblCartellaLavoro`,
|
||||
cambiabile con "Cambia cartella..." → `ScegliCartellaLavoro`): destinazione di CSV,
|
||||
`raw/`, `step/`, `step_finali/` per tutte le fasi successive. All'avvio
|
||||
`InizializzaCartellaLavoro` propone l'ultima usata (ricordata in
|
||||
`%AppData%/PrepStep/ultima_cartella_lavoro.txt`, stesso pattern di
|
||||
`ultimo_db.txt` per il DB) se esiste ancora, altrimenti `AppContext.BaseDirectory`
|
||||
— non dipende da un marker di repo (niente più `CLAUDE.md`/`TrovaRadiceRepo`),
|
||||
quindi funziona identica anche sull'exe pubblicato standalone (`PrepStep.exe`)
|
||||
copiato su un'altra macchina. Qui vive anche "Pulisci raw e step" (manutenzione,
|
||||
non fa parte del flusso a valle).
|
||||
2. **Importa Distinta Base** — `DistintaBaseImporter.ConvertiInCsv` genera il CSV dei
|
||||
componenti; se il nome del file segue la convenzione del gestionale
|
||||
(`DBP_<codice>_<timestamp>`), l'assieme generale viene aggiunto come riga in più nel
|
||||
CSV stesso (il foglio elenca solo i componenti sotto l'assieme, non l'assieme in sé).
|
||||
Da qui in avanti l'assieme generale è un componente come tutti gli altri, nessun
|
||||
caso speciale nel resto del codice. Il CSV viene sempre scritto nella root del repo
|
||||
(`Form1.TrovaRadiceRepo`, che risale da `AppContext.BaseDirectory` fino alla cartella
|
||||
che contiene `CLAUDE.md`), indipendentemente da dove si trova il file `.xls`/`.xml`
|
||||
di input scelto dall'utente.
|
||||
componenti nella cartella di lavoro; se il nome del file segue la convenzione del
|
||||
gestionale (`DBP_<codice>_<timestamp>`), l'assieme generale viene aggiunto come riga
|
||||
in più nel CSV stesso (il foglio elenca solo i componenti sotto l'assieme, non
|
||||
l'assieme in sé). Da qui in avanti l'assieme generale è un componente come tutti
|
||||
gli altri, nessun caso speciale nel resto del codice.
|
||||
3. **Crea cartella raw** — cerca nell'indice il percorso CAD di ogni componente del CSV
|
||||
(`TrovaPercorsiCad`) e lo copia in `raw/` (`CopiaFileTrovati`, parallela — vedi
|
||||
`docs/copia-raw-parallela.md`).
|
||||
(`TrovaPercorsiCad`) e lo copia in `raw/` dentro la cartella di lavoro
|
||||
(`CopiaFileTrovati`, parallela — vedi `docs/copia-raw-parallela.md`).
|
||||
4. **Trova componenti referenziati** — legge euristicamente i metadati binari dei `.asm`
|
||||
già in `raw/` (`AssemblyComponentScanner`) per risolvere ricorsivamente i
|
||||
sotto-assiemi/parti che contengono (`RisolviAlberoComponenti`), copiandoli anch'essi
|
||||
@@ -100,7 +106,7 @@ entrambi rimossi: ora l'unico programma è questo, con GUI e indicizzazione inte
|
||||
in pixel, per evitare che il testo vada a capo e si tagli quando non ci sta) e
|
||||
`Arrotonda` per gli angoli dei bottoni "Avanti"/"Indietro" del wizard.
|
||||
- **app.ico** — icona dell'app (logo Cevolani + pezzo + STEP, sfondo trasparente),
|
||||
referenziata da `<ApplicationIcon>` in `CadSearchGui.csproj` e riletta a runtime in
|
||||
referenziata da `<ApplicationIcon>` in `PrepStep.csproj` e riletta a runtime in
|
||||
`Form1.BuildUi()` via `Icon.ExtractAssociatedIcon(Application.ExecutablePath)` per
|
||||
la titlebar (stessa icona dell'exe, nessun file duplicato nell'output).
|
||||
|
||||
|
||||
Reference in new issue
Block a user