{
  "proof": {
    "id": 72,
    "buyerLabel": "Разработка для языковых школ и учебных центров",
    "deliverableTitle": "Расписание с историей замен и ведомостью часов",
    "deliverableDescription": "Замена преподавателя переносит подтверждённую нагрузку, сохраняя исходное назначение.",
    "pilotInputs": [
      "Расписание одной программы на неделю",
      "Правило учёта академических или астрономических часов",
      "Ставки и список преподавателей для учебного примера"
    ],
    "pilotAcceptance": "Замена и отмена изменяют ведомость по утверждённой единице часа; исходная запись остаётся в истории.",
    "scenario": {
      "title": "Замена преподавателя без двойной оплаты",
      "before": "З-072: 26.10, 10:00–11:30, преподаватель А; 90 минут = 2 академических часа по 45 минут.",
      "conflict": "А недоступен; если добавить Б отдельной строкой, нагрузка может задвоиться.",
      "decision": "Оформить замену А → Б в занятии З-072 и подтвердить проведение координатором.",
      "after": "В ведомости Б — 2 часа × 800 ₽ = 1600 ₽; у А по этому занятию 0, замена сохранена в истории."
    }
  },
  "version": "0.4",
  "status": "Проект для согласования",
  "solutionId": 72,
  "slug": "school-schedule",
  "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": "ч",
      "example": "18",
      "rule": "Правило и обязательность подтверждаются на ваших исходниках."
    },
    {
      "field": "Условная ставка",
      "type": "number",
      "unit": "₽/ч",
      "example": "800",
      "rule": "Правило и обязательность подтверждаются на ваших исходниках."
    }
  ],
  "flow": [
    {
      "label": "Ваши исходники",
      "text": "Расписание выбранного периода"
    },
    {
      "label": "Правила и интерфейс",
      "text": "Занятия и замены"
    },
    {
      "label": "Проверка сотрудником",
      "text": "Администратор и ответственный специалист"
    },
    {
      "label": "Результат в работе",
      "text": "Ведомость подтверждённых часов"
    }
  ],
  "scope": [
    "Календарь центра",
    "История переносов и замен",
    "Ведомость подтверждённых часов"
  ],
  "inputs": [
    "Расписание выбранного периода",
    "Состав групп и доступность преподавателей",
    "Правила учёта проведённых часов"
  ],
  "acceptance": [
    "Один кабинет не назначается двум занятиям без предупреждения",
    "Замена отражается у фактического преподавателя",
    "Отмена исключается из часов по утверждённому правилу"
  ],
  "boundary": "Расчёт часов является управленческой ведомостью по вашим правилам; бухгалтерское начисление оплаты отдельно.",
  "budgets": [
    [
      50,
      100
    ],
    [
      160,
      350
    ],
    [
      350,
      700
    ]
  ],
  "group": "process",
  "openQuestions": [
    "Где фиксируются замены преподавателей?",
    "По каким правилам считаются проведённые часы?",
    "Какие системы, версии и способы выгрузки используются сейчас?",
    "Кто подтверждает результат и кому разрешено менять правила?"
  ],
  "failureCases": [
    "Неполные или некорректные вводные: показать конкретные поля, не выдавать успешный результат.",
    "Неоднозначное соответствие или редакция: передать ответственному на проверку.",
    "Повторная отправка: исключить повторное создание по согласованному идентификатору.",
    "Недоступный внешний источник: сохранить состояние, показать ошибку и согласованный повтор.",
    "Изменение подтверждённых вводных: новая редакция и повторное подтверждение."
  ],
  "rights": [
    "Просмотр — только разрешённые записи и результаты.",
    "Исполнение — ввод и исправление в пределах назначенных задач.",
    "Согласование — подтверждение результата и возврат с причиной.",
    "Администрирование — пользователи, справочники и версии правил."
  ],
  "custom": "Возможна разработка отдельного решения под уникальный процесс, собственные правила, интерфейсы и инфраструктуру компании."
}