{
  "proof": {
    "id": 95,
    "buyerLabel": "Разработка для продуктовых складов и холодильных помещений",
    "deliverableTitle": "Журнал показаний, потери связи и реакции ответственного",
    "deliverableDescription": "Норма, отклонение, отсутствие данных и подтверждение события имеют разные статусы.",
    "pilotInputs": [
      "Модели датчиков, интерфейсы и схема связи одной камеры",
      "Пороги, утверждённые ответственным за хранение",
      "Регламент реакции и список дежурных"
    ],
    "pilotAcceptance": "Устаревшее показание не становится нормой; событие хранит время, подтверждение и ответственного.",
    "scenario": {
      "title": "Нет связи — не нормальная температура",
      "before": "КАМ-095: границы −18…−15 °C; последнее учебное показание −12 °C в 10:00.",
      "conflict": "В 10:15 новых данных нет: есть отклонение последнего показания и отдельная потеря связи.",
      "decision": "Зафиксировать подтверждение дежурного в 10:16 и задачу проверить датчик и условия хранения.",
      "after": "Журнал хранит два события и реакцию; статус «Нет новых данных», тревога не снимается подтверждением."
    }
  },
  "version": "0.4",
  "status": "Проект для согласования",
  "solutionId": 95,
  "slug": "storage-conditions",
  "title": "Контроль условий хранения",
  "goal": "Контролируйте отклонения условий хранения и потерю связи",
  "buyer": "Руководитель склада или холодильного помещения",
  "system": "Учёт объекта / хозяйства",
  "reviewer": "Ответственный за объект и проверяющий",
  "entities": "Объект, период, событие",
  "phases": [
    {
      "title": "Разобрать ваш процесс",
      "description": "Отклонение обнаруживают при очередном обходе",
      "work": "Сверяем исходные примеры, роли и исключения. Фиксируем один сценарий пилота.",
      "result": "Схема процесса и согласованный состав первой версии."
    },
    {
      "title": "Собрать рабочий прототип",
      "description": "Графики параметров",
      "work": "Показываем интерфейс и правила на согласованной выборке. Проверяем неоднозначные случаи с вашей командой.",
      "result": "Журнал тревог"
    },
    {
      "title": "Подключить данные",
      "description": "Согласованные датчики",
      "work": "Сначала проверяем доступные выгрузки и интерфейсы. Если обмен возможен, согласуем поля, направления и права записи.",
      "result": "Подтверждённый способ обмена либо согласованный импорт. Если интерфейса нет — зафиксированное ограничение и решение о следующем шаге."
    },
    {
      "title": "Проверить в работе",
      "description": "Показание имеет время и источник",
      "work": "Проводим контрольные сценарии, обучаем ответственных, передаём документацию и порядок восстановления.",
      "result": "Контроль связи"
    }
  ],
  "mapping": [
    {
      "field": "Нижняя граница",
      "type": "number",
      "unit": "°C",
      "example": "-18",
      "rule": "Правило и обязательность подтверждаются на ваших исходниках."
    },
    {
      "field": "Верхняя граница",
      "type": "number",
      "unit": "°C",
      "example": "-15",
      "rule": "Правило и обязательность подтверждаются на ваших исходниках."
    },
    {
      "field": "Показание",
      "type": "number",
      "unit": "°C",
      "example": "-12",
      "rule": "Правило и обязательность подтверждаются на ваших исходниках."
    }
  ],
  "flow": [
    {
      "label": "Ваши исходники",
      "text": "Согласованные датчики"
    },
    {
      "label": "Правила и интерфейс",
      "text": "История и заданные пороги"
    },
    {
      "label": "Проверка сотрудником",
      "text": "Ответственный за объект и проверяющий"
    },
    {
      "label": "Результат в работе",
      "text": "Контроль связи"
    }
  ],
  "scope": [
    "Графики параметров",
    "Журнал тревог",
    "Контроль связи"
  ],
  "inputs": [
    "Согласованные датчики",
    "Пороговые правила",
    "Контакты ответственных"
  ],
  "acceptance": [
    "Показание имеет время и источник",
    "Порог создаёт проверяемое событие",
    "Потеря связи отличима от нормы"
  ],
  "boundary": "Не заменяет поверку, регламент хранения и аварийную защиту; автоуправление не включено.",
  "budgets": [
    [
      90,
      180
    ],
    [
      280,
      600
    ],
    [
      600,
      1200
    ]
  ],
  "group": "industrial",
  "openQuestions": [
    "Какие датчики установлены?",
    "Кто утверждает пороги и реагирует на событие?",
    "Какие системы, версии и способы выгрузки используются сейчас?",
    "Кто подтверждает результат и кому разрешено менять правила?"
  ],
  "failureCases": [
    "Неполные или некорректные вводные: показать конкретные поля, не выдавать успешный результат.",
    "Неоднозначное соответствие или редакция: передать ответственному на проверку.",
    "Повторная отправка: исключить повторное создание по согласованному идентификатору.",
    "Недоступный внешний источник: сохранить состояние, показать ошибку и согласованный повтор.",
    "Изменение подтверждённых вводных: новая редакция и повторное подтверждение."
  ],
  "rights": [
    "Просмотр — только разрешённые записи и результаты.",
    "Исполнение — ввод и исправление в пределах назначенных задач.",
    "Согласование — подтверждение результата и возврат с причиной.",
    "Администрирование — пользователи, справочники и версии правил."
  ],
  "custom": "Возможна разработка отдельного решения под уникальный процесс, собственные правила, интерфейсы и инфраструктуру компании."
}