{ "configuracion_compras": { "planes_por_tenant": 8, "requisitos_por_plan": { "min": 5, "max": 12 }, "distribucion_temporal": { "completados": { "porcentaje": 0.25, "offset_dias_min": -45, "offset_dias_max": -8, "estados": ["completed"] }, "en_ejecucion": { "porcentaje": 0.375, "offset_dias_min": -7, "offset_dias_max": -1, "estados": ["in_execution", "approved"] }, "pendiente_aprobacion": { "porcentaje": 0.25, "offset_dias_min": 0, "offset_dias_max": 0, "estados": ["pending_approval"] }, "borrador": { "porcentaje": 0.125, "offset_dias_min": 1, "offset_dias_max": 3, "estados": ["draft"] } }, "distribucion_estados": { "draft": 0.125, "pending_approval": 0.25, "approved": 0.25, "in_execution": 0.25, "completed": 0.125 }, "tipos_plan": [ {"tipo": "regular", "peso": 0.75}, {"tipo": "emergency", "peso": 0.15}, {"tipo": "seasonal", "peso": 0.10} ], "prioridades": { "low": 0.20, "normal": 0.55, "high": 0.20, "critical": 0.05 }, "estrategias_compra": [ {"estrategia": "just_in_time", "peso": 0.50}, {"estrategia": "bulk", "peso": 0.30}, {"estrategia": "mixed", "peso": 0.20} ], "niveles_riesgo": { "low": 0.50, "medium": 0.30, "high": 0.15, "critical": 0.05 }, "ingredientes_demo": [ { "id": "10000000-0000-0000-0000-000000000001", "nombre": "Harina de Trigo Panadera T-55", "sku": "ING-HAR-001", "categoria": "harinas", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 0.65, "lead_time_dias": 3, "cantidad_minima": 500.0, "vida_util_dias": 180 }, { "id": "10000000-0000-0000-0000-000000000002", "nombre": "Harina de Trigo Integral", "sku": "ING-HAR-002", "categoria": "harinas", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 0.85, "lead_time_dias": 3, "cantidad_minima": 300.0, "vida_util_dias": 120 }, { "id": "10000000-0000-0000-0000-000000000003", "nombre": "Levadura Fresca Prensada", "sku": "ING-LEV-001", "categoria": "levaduras", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 3.50, "lead_time_dias": 2, "cantidad_minima": 25.0, "vida_util_dias": 21 }, { "id": "10000000-0000-0000-0000-000000000004", "nombre": "Sal Marina Refinada", "sku": "ING-SAL-001", "categoria": "ingredientes_basicos", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 0.40, "lead_time_dias": 7, "cantidad_minima": 200.0, "vida_util_dias": 730 }, { "id": "10000000-0000-0000-0000-000000000005", "nombre": "Mantequilla 82% MG", "sku": "ING-MAN-001", "categoria": "lacteos", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 5.80, "lead_time_dias": 2, "cantidad_minima": 50.0, "vida_util_dias": 90 }, { "id": "10000000-0000-0000-0000-000000000006", "nombre": "Azúcar Blanco Refinado", "sku": "ING-AZU-001", "categoria": "azucares", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 0.75, "lead_time_dias": 5, "cantidad_minima": 300.0, "vida_util_dias": 365 }, { "id": "10000000-0000-0000-0000-000000000007", "nombre": "Huevos Categoría A", "sku": "ING-HUE-001", "categoria": "lacteos", "tipo": "ingredient", "unidad": "unidad", "costo_unitario": 0.18, "lead_time_dias": 2, "cantidad_minima": 360.0, "vida_util_dias": 28 }, { "id": "10000000-0000-0000-0000-000000000008", "nombre": "Leche Entera UHT", "sku": "ING-LEC-001", "categoria": "lacteos", "tipo": "ingredient", "unidad": "litro", "costo_unitario": 0.85, "lead_time_dias": 3, "cantidad_minima": 100.0, "vida_util_dias": 90 }, { "id": "10000000-0000-0000-0000-000000000009", "nombre": "Chocolate Cobertura 70%", "sku": "ING-CHO-001", "categoria": "chocolates", "tipo": "ingredient", "unidad": "kg", "costo_unitario": 12.50, "lead_time_dias": 5, "cantidad_minima": 25.0, "vida_util_dias": 365 }, { "id": "10000000-0000-0000-0000-000000000010", "nombre": "Aceite de Oliva Virgen Extra", "sku": "ING-ACE-001", "categoria": "aceites", "tipo": "ingredient", "unidad": "litro", "costo_unitario": 4.20, "lead_time_dias": 4, "cantidad_minima": 50.0, "vida_util_dias": 540 }, { "id": "10000000-0000-0000-0000-000000000011", "nombre": "Bolsas de Papel Kraft", "sku": "PAC-BOL-001", "categoria": "embalaje", "tipo": "packaging", "unidad": "unidad", "costo_unitario": 0.08, "lead_time_dias": 10, "cantidad_minima": 5000.0, "vida_util_dias": 730 }, { "id": "10000000-0000-0000-0000-000000000012", "nombre": "Cajas de Cartón Grande", "sku": "PAC-CAJ-001", "categoria": "embalaje", "tipo": "packaging", "unidad": "unidad", "costo_unitario": 0.45, "lead_time_dias": 7, "cantidad_minima": 500.0, "vida_util_dias": 730 } ], "rangos_cantidad": { "harinas": {"min": 500.0, "max": 2000.0}, "levaduras": {"min": 20.0, "max": 100.0}, "ingredientes_basicos": {"min": 100.0, "max": 500.0}, "lacteos": {"min": 50.0, "max": 300.0}, "azucares": {"min": 200.0, "max": 800.0}, "chocolates": {"min": 10.0, "max": 50.0}, "aceites": {"min": 30.0, "max": 150.0}, "embalaje": {"min": 1000.0, "max": 10000.0} }, "buffer_seguridad_porcentaje": { "min": 10.0, "max": 30.0, "tipico": 20.0 }, "horizonte_planificacion_dias": { "individual_bakery": 14, "central_bakery": 21 }, "metricas_rendimiento": { "tasa_cumplimiento": {"min": 85.0, "max": 98.0}, "entrega_puntual": {"min": 80.0, "max": 95.0}, "precision_costo": {"min": 90.0, "max": 99.0}, "puntuacion_calidad": {"min": 7.0, "max": 10.0} } }, "alertas_compras": { "plan_urgente": { "condicion": "plan_type = emergency AND status IN (draft, pending_approval)", "mensaje": "Plan de compras de emergencia requiere aprobación urgente: {plan_number}", "severidad": "high" }, "requisito_critico": { "condicion": "priority = critical AND required_by_date < NOW() + INTERVAL '3 days'", "mensaje": "Requisito crítico con fecha límite próxima: {product_name} para {required_by_date}", "severidad": "high" }, "riesgo_suministro": { "condicion": "supply_risk_level IN (high, critical)", "mensaje": "Alto riesgo de suministro detectado en plan {plan_number}", "severidad": "medium" }, "fecha_pedido_proxima": { "condicion": "suggested_order_date BETWEEN NOW() AND NOW() + INTERVAL '2 days'", "mensaje": "Fecha sugerida de pedido próxima: {product_name}", "severidad": "medium" } }, "notas": { "descripcion": "Configuración para generación de planes de compras demo", "planes_totales": 8, "ingredientes_disponibles": 12, "proveedores": "Usar proveedores de proveedores_es.json", "fechas": "Usar offsets relativos a BASE_REFERENCE_DATE", "moneda": "EUR", "idioma": "español" } }