// ========================================================================
// === 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 });
