{
  "version": "xarts.flows/1",
  "family": "flows",
  "operation": "stock-rate-chain",
  "provenance": {
    "legacyId": "stock-flow"
  },
  "data": {
    "stocks": [
      {
        "id": "s1",
        "label": "Almacén regulador",
        "level": 42800
      },
      {
        "id": "s2",
        "label": "Lineal de las 78 tiendas",
        "level": 15300
      }
    ],
    "flows": [
      {
        "id": "f1",
        "label": "Recepciones",
        "source": null,
        "target": "s1",
        "rate": 9600
      },
      {
        "id": "f2",
        "label": "Reposición a tienda",
        "source": "s1",
        "target": "s2",
        "rate": 8900
      },
      {
        "id": "f3",
        "label": "Ventas",
        "source": "s2",
        "target": null,
        "rate": 9450
      }
    ],
    "auxiliaries": [
      {
        "id": "a1",
        "label": "Plazo del proveedor",
        "flow": "f1",
        "value": 21,
        "unit": "días",
        "decimals": 0
      },
      {
        "id": "a2",
        "label": "Reparto por tienda",
        "flow": "f2",
        "value": 2,
        "unit": "veces/semana",
        "decimals": 0
      },
      {
        "id": "a3",
        "label": "Rotura de surtido",
        "flow": "f3",
        "value": 7.4,
        "unit": "%",
        "decimals": 1
      }
    ]
  },
  "units": {
    "quantity": "uds",
    "time": "semana"
  },
  "calculation": {
    "topology": "single-directed-chain",
    "externalPorts": "explicit-null",
    "ordering": "follow-flow-endpoints",
    "aggregation": "none",
    "netRate": "incoming-minus-outgoing",
    "zeroDomain": "reject-all-zero",
    "snapshot": "provided-without-observation-time",
    "integration": "none",
    "auxiliaryEffects": "authored-association-not-estimated"
  },
  "fontFamily": "'Inter', system-ui, -apple-system, sans-serif",
  "measurement": {
    "exportText": "basic-pairs"
  },
  "typography": {
    "stockName": {
      "size": 16,
      "weight": 600,
      "color": "textPrimary",
      "lineHeight": 24
    },
    "stockValue": {
      "size": 15,
      "weight": 400,
      "color": "textSecondary",
      "lineHeight": 23
    },
    "flowName": {
      "size": 16,
      "weight": 400,
      "color": "textPrimary",
      "lineHeight": 24
    },
    "flowValue": {
      "size": 15,
      "weight": 600,
      "color": "textSecondary",
      "lineHeight": 23
    },
    "auxiliaryName": {
      "size": 14,
      "weight": 400,
      "color": "textSecondary",
      "lineHeight": 22
    },
    "auxiliaryValue": {
      "size": 14,
      "weight": 400,
      "color": "textMuted",
      "lineHeight": 22
    },
    "balance": {
      "size": 15,
      "weight": 700,
      "color": "textSecondary",
      "lineHeight": 23
    },
    "note": {
      "size": 14,
      "weight": 400,
      "color": "textMuted",
      "lineHeight": 22
    }
  },
  "layout": {
    "mode": "vertical-chain",
    "textOverflow": "whole-words",
    "margin": {
      "top": 24,
      "right": 24,
      "bottom": 24,
      "left": 24
    },
    "stockWidth": 116,
    "minimumStockHeight": 54,
    "maximumStockHeight": 240,
    "cloudWidth": 54,
    "cloudHeight": 30,
    "minimumGap": 62,
    "labelAir": 7,
    "air": 10,
    "noteGap": 8,
    "maximumNoteLines": 2,
    "readableLabelGap": 28,
    "verticalFlowLength": 140
  },
  "marks": {
    "stock": {
      "radius": 2,
      "stroke": "textPrimary",
      "strokeWidth": 1.2,
      "empty": "surfaceAlt",
      "liquid": "series.blue"
    },
    "balance": {
      "up": "positive",
      "down": "negative",
      "flat": "textSecondary",
      "size": 6
    },
    "pipe": {
      "maximumWidth": 18,
      "minimumWidth": 1.5,
      "fill": "surfaceAlt",
      "stroke": "textPrimary",
      "strokeWidth": 1,
      "arrowSize": 5
    },
    "valve": {
      "size": 15,
      "fill": "surface",
      "closedFill": "textPrimary",
      "stroke": "textPrimary",
      "strokeWidth": 1.2
    },
    "auxiliary": {
      "stroke": "textMuted",
      "dash": "3 3",
      "length": 16
    },
    "cloud": {
      "fill": "surface",
      "stroke": "textMuted",
      "strokeWidth": 1
    }
  },
  "labels": {
    "modelNotice": "Niveles y caudales proporcionados, sin instante de observación declarado. El saldo es entrada menos salida por unidad de tiempo; no se integra ni se predice la evolución del stock. Las variables se asocian a válvulas por declaración del modelo: no se estima su efecto. La cadena expresa conexiones, no un eje temporal.",
    "showModelNotice": true,
    "externalSource": "Entrada desde fuera del modelo",
    "externalSink": "Salida fuera del modelo"
  },
  "annotations": [],
  "document": {
    "textOverflow": "preserve",
    "header": {
      "title": "El almacén engorda mientras el lineal se vacía: el cuello no es la compra, es la reposición",
      "subtitle": "Cadena de suministro de una óptica con 78 tiendas: las tres válvulas mueven casi lo mismo —9.600, 8.900 y 9.450 unidades por semana— y aun así el almacén acumula 700 a la semana y el lineal pierde 550, porque un depósito no responde al caudal sino a la diferencia entre los que entran y los que salen"
    },
    "footer": {
      "source": "xarts · datos de demostración",
      "notes": "Datos ilustrativos para explorar el gráfico y sustituirlos por los propios."
    },
    "spacing": {
      "horizontalPadding": 24,
      "topPadding": 22,
      "bottomPadding": 16,
      "minimumTextGap": 4
    }
  },
  "presentation": {
    "theme": "anlak",
    "dimensions": {
      "width": 940,
      "height": 1187
    },
    "locale": "es-ES",
    "fonts": "reference",
    "surface": "theme",
    "framePadding": 24
  },
  "output": {
    "filename": "stock-flow",
    "embedSpec": true,
    "geometryDecimals": 2
  }
}
