import { emptySpec, normalizeToken } from './spec.js'; import { VENDOR_TABLES } from './pn-tables.js'; /** * Leitet aus einer Hersteller-Teilenummer die Spec-Felder ab. * Nicht ableitbare Felder bleiben null - das ist kein Fehler, * sondern der regulaere Uebergang zum OCR-Weg. */ export function decodePartNumber(pn) { const spec = emptySpec(); const normalized = normalizeToken(pn); if (normalized === '') return spec; spec.partNumber = normalized; for (const table of VENDOR_TABLES) { const match = normalized.match(table.pattern); if (!match) continue; const [, formCode, densityCode, speedCode] = match; spec.formFactor = table.formFactor[formCode] ?? null; spec.speed = table.speed[speedCode] ?? null; const density = table.density[densityCode]; if (density) { spec.capacityGb = density.capacityGb; spec.rank = density.rank; } break; } return spec; }