Copia in raw i file che servono a Creo, non solo quelli della distinta
Creo Distributed Batch falliva su 8 dei 22 assiemi con "[-4] Dati di input non completi", un messaggio che non nomina il file mancante. Erano due cause distinte, entrambe emerse aprendo gli assiemi da raw/ e cercando nell'albero il componente con l'icona rossa. Copia sbagliata del componente. Lo stesso codice esiste spesso in piu' cartelle della share con pari versione e contenuto diverso (13% dei codici): non sono revisioni, sono istantanee parallele lasciate da studi, allestimenti fiera e cartelle temporanee. La vista dell'indice rompeva il pareggio in modo arbitrario, e poteva vincere una copia obsoleta - nascondendo del tutto quella buona. Creo poi caricava un modello diverso da quello atteso, non risolveva i vincoli e non apriva l'assieme. Il .asm non dice quale copia usa (ne' percorso, ne' UOBJ_ID del figlio, ne' revisione attesa), quindi si replica la regola di Creo: vince la copia nella stessa cartella dell'assieme che la referenzia. La vista ora rompe il pareggio in modo deterministico e viene ricreata a ogni scan, cosi' un DB esistente prende la definizione nuova senza reindicizzare. Componenti soppressi. Spariscono da "members" ma restano citati dalla feature che li posiziona, e il loro file serve comunque per aprire l'assieme. Da quando la lettura usa il parser esatto - che legge solo "members", ed e' la scelta giusta per la BOM - non venivano piu' copiati. Ora si copiano a parte, senza entrare nel conteggio dei "non trovati": non sono componenti della distinta, segnalarli come mancanti sarebbe un falso allarme. Documentate entrambe in docs/formato-asm-record.md §7.3 e §7.4, insieme alla distinzione che le accomuna: la lista della distinta e la lista dei file necessari a Creo non coincidono, e la seconda e' piu' lunga. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
0ae2a5e7cf
commit
54f267b508
8 files changed
+316
-18
No files matched your search
+11
-2
@@ -40,13 +40,22 @@ public static class Indexer
|
||||
CREATE INDEX IF NOT EXISTS idx_files_tipo ON files(tipo_file);
|
||||
CREATE INDEX IF NOT EXISTS idx_files_cartella ON files(cartella_radice);
|
||||
|
||||
CREATE VIEW IF NOT EXISTS files_ultima_versione AS
|
||||
-- DROP+CREATE invece di "IF NOT EXISTS": la vista e' ricalcolata a ogni avvio di scan,
|
||||
-- cosi' un DB gia' esistente prende la definizione corrente senza reindicizzare.
|
||||
DROP VIEW IF EXISTS files_ultima_versione;
|
||||
CREATE VIEW files_ultima_versione AS
|
||||
SELECT percorso_completo, percorso_relativo, nome_file, cartella_radice, famiglia,
|
||||
codice, tipo_file, versione, dimensione_byte, data_modifica, scansionato_il
|
||||
FROM (
|
||||
SELECT f.*, ROW_NUMBER() OVER (
|
||||
PARTITION BY cartella_radice, codice, tipo_file
|
||||
ORDER BY versione DESC
|
||||
-- A parita' di versione (stesso codice in due sottocartelle della stessa
|
||||
-- radice, es. una copia vecchia in una cartella di lavoro) vince il file
|
||||
-- modificato piu' di recente: senza questo criterio il pareggio e' rotto in
|
||||
-- modo arbitrario e puo' vincere la copia obsoleta, nascondendo del tutto
|
||||
-- quella buona. Il file copiato in "raw" sarebbe allora un modello diverso da
|
||||
-- quello che l'assieme si aspetta, e Creo non riesce ad aprirlo.
|
||||
ORDER BY versione DESC, data_modifica DESC, percorso_completo
|
||||
) AS rn
|
||||
FROM files f
|
||||
) WHERE rn = 1;
|
||||
|
||||
Reference in new issue
Block a user