{
  "id": "P32-C03",
  "mode": "workflow",
  "theme": "workflow",
  "brand": "РАЗБОР / P32-C03",
  "title": "Парный визит требует трех подтвержденных ресурсов",
  "lead": "Два специалиста и кабинет проверяются отдельно.",
  "section": "Исходный материал → результат",
  "offer": "Два специалиста и кабинет проверяются отдельно.",
  "inputTitle": "Редактируемый исходный материал",
  "outputTitle": "Подготовленный результат",
  "source": "Запрос парного SPA\nДата: 2026-11-07\nНачало: 14:00\nСпециалист1: Анна\nСтатус1: свободен\nСпециалист2: Вера\nСтатус2: свободен\nКабинет: пара-1\nКабинет доступен: да",
  "extract": [
    {
      "id": "date",
      "label": "Дата",
      "pattern": "^Дата:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "start",
      "label": "Начало",
      "pattern": "^Начало:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "first",
      "label": "Специалист1",
      "pattern": "^Специалист1:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "firstStatus",
      "label": "Статус1",
      "pattern": "^Статус1:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "second",
      "label": "Специалист2",
      "pattern": "^Специалист2:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "secondStatus",
      "label": "Статус2",
      "pattern": "^Статус2:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "room",
      "label": "Кабинет",
      "pattern": "^Кабинет:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    },
    {
      "id": "roomStatus",
      "label": "Кабинет доступен",
      "pattern": "^Кабинет доступен:[ \\t]*(.+)$",
      "type": "text",
      "required": true
    }
  ],
  "processor": "extract",
  "rules": [
    {
      "kind": "equals",
      "field": "firstStatus",
      "value": "свободен",
      "message": "Первый специалист не подтвержден свободным."
    },
    {
      "kind": "equals",
      "field": "secondStatus",
      "value": "свободен",
      "message": "Второй специалист не подтвержден свободным."
    },
    {
      "kind": "equals",
      "field": "roomStatus",
      "value": "да",
      "message": "Парный кабинет не подтвержден доступным."
    }
  ],
  "examples": [
    {
      "label": "Исходный пример",
      "text": "Запрос парного SPA\nДата: 2026-11-07\nНачало: 14:00\nСпециалист1: Анна\nСтатус1: свободен\nСпециалист2: Вера\nСтатус2: свободен\nКабинет: пара-1\nКабинет доступен: да"
    },
    {
      "label": "Неполные сведения",
      "text": "Требуется уточнение. Исходные параметры пока не переданы."
    }
  ],
  "comparisons": [
    {
      "kind": "different",
      "left": "first",
      "right": "second",
      "message": "Для парного визита нужны два разных специалиста."
    }
  ]
}
