{
  "id": "P27-C06",
  "mode": "calculator",
  "theme": "workspace",
  "brand": "РАСЧЁТ / Филипп Нестеров",
  "title": "Кейтеринг: количество порций видно до суммы",
  "lead": "Закуски, десерты и доставка дают раздельные составляющие.",
  "section": "Проверяемая модель",
  "calculator": {
    "calculator": {
      "kind": "catering",
      "title": "Порции и отдельная доставка",
      "inputs": [
        {
          "id": "guests",
          "label": "Количество гостей",
          "type": "number",
          "value": 30,
          "unit": "чел.",
          "min": 10,
          "max": 500,
          "step": 1
        },
        {
          "id": "snacksEach",
          "label": "Закусок на человека",
          "type": "number",
          "value": 3,
          "unit": "шт.",
          "min": 1,
          "max": 10,
          "step": 1
        },
        {
          "id": "dessertsEach",
          "label": "Десертов на человека",
          "type": "number",
          "value": 1,
          "unit": "шт.",
          "min": 0,
          "max": 5,
          "step": 1
        },
        {
          "id": "snackPrice",
          "label": "Цена закуски",
          "type": "number",
          "value": 75,
          "unit": "₽",
          "min": 0,
          "max": 10000,
          "step": 1
        },
        {
          "id": "dessertPrice",
          "label": "Цена десерта",
          "type": "number",
          "value": 160,
          "unit": "₽",
          "min": 0,
          "max": 10000,
          "step": 1
        },
        {
          "id": "delivery",
          "label": "Доставка",
          "type": "number",
          "value": 1500,
          "unit": "₽",
          "min": 0,
          "max": 100000,
          "step": 100
        }
      ],
      "formula": "Закуски = гости × закусок на человека; десерты = гости × десертов на человека. Сумма = закуски × цена + десерты × цена + доставка.",
      "assumptions": [
        "Минимальный заказ модели — 10 гостей; меньший заказ требует отдельного согласования.",
        "Цены условные и доступны для изменения.",
        "Посуда, персонал, текстиль, напитки и диетические требования не включены автоматически."
      ],
      "tests": [
        {
          "values": {
            "guests": 30,
            "snacksEach": 3,
            "dessertsEach": 1,
            "snackPrice": 75,
            "dessertPrice": 160,
            "delivery": 1500
          },
          "expected": {
            "snacks": 90,
            "desserts": 30,
            "total": 13050
          }
        },
        {
          "values": {
            "guests": 5
          },
          "expected": {
            "error": true
          }
        }
      ]
    }
  }
}
