feat(router): instrada in sottocartella A/M_B e ottimizza cache destinazione
- Router: aggiunge campo `subfolder` a getCadInfo (91xxxxx → A, 92xxxxx → M_B); getDestinationDecision appende la sottocartella al percorso finale - Scanner (fast path): legge A e M_B dentro ogni cartella a 3 cifre per il rilevamento duplicati, anziché la cartella a 3 cifre stessa - Cache: persistenza su disco del folderIndex; cadKeyIndex sempre fresco - isCacheStillValid: validazione a due livelli (top-level + cartelle a 3 cifre) — rileva automaticamente nuove cartelle aggiunte da colleghi - UI: rimosso pulsante "Riscansiona destinazione"; gestione cache completamente automatica e trasparente per l'utente
This commit is contained in:
@@ -16,6 +16,9 @@ function getCadInfo(filename) {
|
||||
const version = match[3] || '';
|
||||
const digits = rawCode.replace(/\D/g, '');
|
||||
const routingGroup = digits.length >= 5 ? digits.slice(2, 5) : null;
|
||||
const subfolder = digits.length >= 2
|
||||
? (digits[1] === '1' ? 'A' : digits[1] === '2' ? 'M_B' : null)
|
||||
: null;
|
||||
|
||||
return {
|
||||
code: rawCode,
|
||||
@@ -24,6 +27,7 @@ function getCadInfo(filename) {
|
||||
version,
|
||||
key: `${rawCode}.${type}`,
|
||||
routingGroup,
|
||||
subfolder,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -57,7 +61,14 @@ function getDestinationDecision(filename, config, destinationIndex) {
|
||||
};
|
||||
}
|
||||
|
||||
return { destination: candidates[0], reason: null };
|
||||
if (!cadInfo.subfolder) {
|
||||
return {
|
||||
destination: null,
|
||||
reason: `Prefisso non riconosciuto (${cadInfo.digits[1]}): atteso 91 (→ A) o 92 (→ M_B)`,
|
||||
};
|
||||
}
|
||||
|
||||
return { destination: path.join(candidates[0], cadInfo.subfolder), reason: null };
|
||||
}
|
||||
|
||||
function findDestination(filename, config, destinationIndex) {
|
||||
|
||||
Reference in New Issue
Block a user