// ======================================================================== // === FX-5: PROCESSES — модели процессов изготовления ПФ (Склад №2) ====== // Автономный data-файл. Читает/расширяет базовые структуры из data.jsx // (WAREHOUSES), но сам data.jsx не трогает. Интегрируется в ItemPopover // и launch_flow на этапе П8. // ======================================================================== // PROCESSES — модели литья/формовки W2. Поле material — ключ в // MATERIAL_WASTE (data_materials.jsx). wasteRate и recyclableBack — // ГЕТТЕРЫ, читающие MATERIAL_WASTE, чтобы избежать параллельного // источника истины. Раньше значения были продублированы и расходились // при любой правке таблицы отхода. PROCESSES (6 записей) подмножество // MATERIAL_WASTE (6 материалов, включая PVC — без процесса). const _PROCESSES_RAW = [ { id: 'P-CORPUS-PP', name: 'Корпус фары из PP', outputSKU: 'PF-CORPUS-L', outputWarehouse: 2, material: 'PP', inputs: [{ sku: 'PLS-PP-01', qtyPerUnit: 0.620 }], stages: [{ name: 'Литьё', duration: 45, status: 'в_литье' }] }, { id: 'P-GLASS-PC', name: 'Стекло рассеивателя (формовка + АВАКО)', outputSKU: 'PF-GLASS-L', outputWarehouse: 2, material: 'PC', inputs: [{ sku: 'PLS-PC-01', qtyPerUnit: 0.250 }], stages: [{ name: 'Формовка', duration: 30, status: 'в_формовке' }, { name: 'Покрытие АВАКО', duration: 20, status: 'в_покрытии' }] }, { id: 'P-REFLECTOR-PPS', name: 'Отражатель из PPS', outputSKU: 'PF-REFLECTOR-L', outputWarehouse: 2, material: 'PPS', inputs: [{ sku: 'PLS-PPS-01', qtyPerUnit: 0.380 }], stages: [{ name: 'Литьё', duration: 38, status: 'в_литье' }, { name: 'Металлизация', duration: 25, status: 'в_металлиз' }] }, { id: 'P-PLUG-POM', name: 'Заглушка корректора (POM)', outputSKU: 'PF-PLUG-CORR', outputWarehouse: 2, material: 'POM', inputs: [{ sku: 'PLS-POM-01', qtyPerUnit: 0.0075 }], stages: [{ name: 'Литьё', duration: 18, status: 'в_литье' }] }, { id: 'P-BRACKET-ABS', name: 'Крепление-бленда (ABS)', outputSKU: 'PF-BLEND-L', outputWarehouse: 2, material: 'ABS', inputs: [{ sku: 'PLS-ABS-01', qtyPerUnit: 0.00055 }], stages: [{ name: 'Литьё', duration: 22, status: 'в_литье' }] }, { id: 'P-BUTTERFLY-POM', name: 'Направляющая винта «бабочка» (POM)', outputSKU: 'PF-BUTTERFLY', outputWarehouse: 2, material: 'POM', inputs: [{ sku: 'PLS-POM-01', qtyPerUnit: 0.0058 }], stages: [{ name: 'Литьё', duration: 15, status: 'в_литье' }] }, ]; const PROCESSES = _PROCESSES_RAW.map(p => { const proc = Object.assign({}, p); Object.defineProperty(proc, 'wasteRate', { enumerable: true, get() { const w = (window.MATERIAL_WASTE || {})[p.material]; return w ? (w.wasteRate || 0) : 0; }, }); Object.defineProperty(proc, 'recyclableBack', { enumerable: true, get() { const w = (window.MATERIAL_WASTE || {})[p.material]; return w ? (w.recyclableBack || 0) : 0; }, }); return proc; }); function findProcessByOutput(sku) { if (!sku) return null; return PROCESSES.find(p => p.outputSKU === sku) || null; } Object.assign(window, { PROCESSES, findProcessByOutput });