{
  "id": "P32-C02",
  "mode": "workflow",
  "theme": "workflow",
  "brand": "РАЗБОР / P32-C02",
  "title": "Длительность услуги проверяется вместе с буфером",
  "lead": "Окончание визита не выходит за закрытие 20:00.",
  "section": "Исходный материал → результат",
  "offer": "Окончание визита не выходит за закрытие 20:00.",
  "inputTitle": "Редактируемый исходный материал",
  "outputTitle": "Подготовленный результат",
  "source": "План записи\nУслуга: уход\nНачало: 19:00\nДлительность: 45\nБуфер: 15\nСпециалист: Анна",
  "extract": [
    {
      "id": "service",
      "label": "Услуга",
      "pattern": "^Услуга:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "start",
      "label": "Начало",
      "pattern": "^Начало:[ \\t]*([0-2]\\d:[0-5]\\d)$",
      "type": "text",
      "required": true
    },
    {
      "id": "duration",
      "label": "Длительность",
      "pattern": "^Длительность:[ \\t]*(.+)$",
      "type": "number",
      "required": true,
      "min": 0,
      "exclusiveMin": true
    },
    {
      "id": "buffer",
      "label": "Буфер",
      "pattern": "^Буфер:[ \\t]*(.+)$",
      "type": "number",
      "required": true,
      "min": 0
    },
    {
      "id": "specialist",
      "label": "Специалист",
      "pattern": "^Специалист:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    }
  ],
  "processor": "extract",
  "rules": [
    {
      "kind": "minimum",
      "field": "duration",
      "value": 1,
      "message": "Длительность должна быть положительной."
    },
    {
      "kind": "minimum",
      "field": "buffer",
      "value": 0,
      "message": "Буфер не может быть отрицательным."
    }
  ],
  "examples": [
    {
      "label": "Исходный пример",
      "text": "План записи\nУслуга: уход\nНачало: 19:00\nДлительность: 45\nБуфер: 15\nСпециалист: Анна"
    },
    {
      "label": "Неполные сведения",
      "text": "Требуется уточнение. Исходные параметры пока не переданы."
    }
  ],
  "derive": "duration"
}
