{
  "schemaVersion": 1,
  "id": "P27-C04",
  "title": "Стеллаж: совместимость до подсчета деталей",
  "author": {
    "id": "P27",
    "name": "Филипп Нестеров"
  },
  "specialty": "Калькуляторы и подборщики для продаж",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P27-C04",
    "title": "Сборка стеллажа",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "У стеллажа две серии соединения и целое число уровней. Для пяти уровней совместимой серии нужны четыре стойки, десять балок и пять настилов.",
  "decision": "Сначала сравниваю серию секции с соединением. Только для допустимой пары вычисляю состав; дробные уровни отклоняются проверкой шага. Это ведомость выбранной модели, а не расчет несущей способности.",
  "constraint": "Самостоятельный калькулятор использует заданные допущения. Он не является коммерческой сметой, инженерным заключением или подтверждением условий поставщика.",
  "steps": [
    "Серия A и соединение A, 5 уровней: 4 стойки, 10 балок, 5 настилов.",
    "Сменить секцию на B, соединение оставить A: подбор остановлен.",
    "Выбрать B/B: расчет снова доступен."
  ],
  "inspection": [
    "Серия A и соединение A, 5 уровней: 4 стойки, 10 балок, 5 настилов.",
    "Сменить секцию на B, соединение оставить A: подбор остановлен.",
    "Выбрать B/B: расчет снова доступен.",
    "Уровни 2,5: ввод отклонен; уровень должен быть целым."
  ],
  "sample": {
    "headers": [
      "Действие",
      "Наблюдаемый результат"
    ],
    "rows": [
      [
        "1",
        "Серия A и соединение A, 5 уровней: 4 стойки, 10 балок, 5 настилов."
      ],
      [
        "2",
        "Сменить секцию на B, соединение оставить A: подбор остановлен."
      ],
      [
        "3",
        "Выбрать B/B: расчет снова доступен."
      ],
      [
        "4",
        "Уровни 2,5: ввод отклонен; уровень должен быть целым."
      ]
    ]
  },
  "sampleNote": "Самостоятельный проект на подготовленных исходных данных. Действия выполняются локально.",
  "caseStudy": {
    "role": "Разработка расчётной модели",
    "contribution": "Реализовал открытые формулы, промежуточные значения, проверку диапазонов и граничные случаи именно этой модели.",
    "objective": "Несовместимое соединение не дает красивую, но бесполезную ведомость.",
    "problem": "У стеллажа две серии соединения и целое число уровней. Для пяти уровней совместимой серии нужны четыре стойки, десять балок и пять настилов.",
    "result": "Пара A/A дает состав 4/10/5. Пара B/A останавливает подбор и объясняет несовместимость вместо выдачи деталей.",
    "deliverables": [
      "Проверяемая модель",
      "Сохраняемый результат взаимодействия",
      "Исходные данные и порядок самостоятельной проверки"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Сначала серия, затем детали",
        "text": "Сначала сравниваю серию секции с соединением. Только для допустимой пары вычисляю состав; дробные уровни отклоняются проверкой шага. Это ведомость выбранной модели, а не расчет несущей способности."
      },
      {
        "type": "text",
        "title": "Несовместимость не даёт ведомость",
        "text": "Секция B с соединением A останавливает расчёт до выдачи деталей. Исправление серии возвращает вычисление; ввод 4,5 уровня всё равно остаётся недопустимым."
      },
      {
        "type": "callout",
        "title": "Граница работы",
        "text": "Самостоятельный калькулятор использует заданные допущения. Он не является коммерческой сметой, инженерным заключением или подтверждением условий поставщика."
      }
    ]
  },
  "deliverable": {
    "type": "calculator",
    "entry": "/catalogue/deliverables/p27-c04/index.html",
    "label": "Открыть работающий результат",
    "files": [
      {
        "path": "/catalogue/deliverables/p27-c04/index.html",
        "name": "Интерактивный результат",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p27-c04/source.json",
        "name": "Исходные условия и модель",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p27-c04/README.html",
        "name": "Повторить проверку",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p27-c04/starter-data.json",
        "name": "Исходный набор для повторного использования",
        "mimeType": "application/json"
      }
    ],
    "summary": "Пара A/A дает состав 4/10/5. Пара B/A останавливает подбор и объясняет несовместимость вместо выдачи деталей."
  },
  "calculator": {
    "kind": "rack",
    "title": "Совместимость условной секции стеллажа",
    "inputs": [
      {
        "id": "section",
        "label": "Серия секции",
        "type": "select",
        "value": "A",
        "options": [
          {
            "value": "A",
            "label": "Серия A"
          },
          {
            "value": "B",
            "label": "Серия B"
          }
        ]
      },
      {
        "id": "connector",
        "label": "Тип соединения",
        "type": "select",
        "value": "A",
        "options": [
          {
            "value": "A",
            "label": "Тип A"
          },
          {
            "value": "B",
            "label": "Тип B"
          }
        ]
      },
      {
        "id": "levels",
        "label": "Уровни полок",
        "type": "number",
        "value": 5,
        "unit": "шт.",
        "min": 2,
        "max": 6,
        "step": 1
      }
    ],
    "formula": "Допуск: серия секции совпадает с типом соединения. Для принятой схемы: 4 стойки, 2 балки на уровень, 1 настил на уровень.",
    "assumptions": [
      "Учебная секция 2000 × 900 мм.",
      "Это счетная модель основных деталей, не полный конструкторский перечень.",
      "Крепеж, раскосы, нагрузка и устойчивость требуют инженерной проверки."
    ],
    "tests": [
      {
        "values": {
          "section": "A",
          "connector": "A",
          "levels": 5
        },
        "expected": {
          "allowed": true,
          "uprights": 4,
          "beams": 10,
          "shelves": 5
        }
      },
      {
        "values": {
          "section": "B",
          "connector": "A",
          "levels": 5
        },
        "expected": {
          "allowed": false
        }
      },
      {
        "values": {
          "levels": 2.5
        },
        "expected": {
          "error": true
        }
      }
    ]
  },
  "takeaway": "Пара A/A дает состав 4/10/5. Пара B/A останавливает подбор и объясняет несовместимость вместо выдачи деталей.",
  "capabilities": [
    "completed_calculator",
    "live_calculation",
    "input_validation"
  ],
  "externalConnections": []
}
