{
  "schemaVersion": 1,
  "id": "P55-C04",
  "title": "Комплект кресла: сверка деталей до начала сборки",
  "author": {
    "id": "P55",
    "name": "Василий Егоров"
  },
  "specialty": "Инструкции и технические руководства",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P55-C04",
    "title": "Монтаж офисного кресла",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "До работы с крепежом нужно знать, совпал ли комплект с ведомостью. Я создал проверяемый входной контроль для авторского набора из шести типов деталей.",
  "decision": "Сравнение идет по ID и количеству, а не по похожему названию. Недостача, избыток и неизвестная деталь выводятся отдельно. Порядок механической сборки и момент затяжки не выдумываются без руководства модели.",
  "constraint": "Ведомость относится к авторскому набору. Она не заменяет комплектацию и инструкцию конкретного кресла.",
  "steps": [
    "Разложите детали и сопоставьте ID ведомости.",
    "Введите найденное количество для каждого ID.",
    "Остановите переход к сборке и сохраните ведомость расхождений.",
    "Откройте руководство точной модели для следующего этапа."
  ],
  "inspection": [
    "Недостающий винт и лишний подлокотник дают два расхождения — проверено.",
    "Исправленный комплект допускает переход к руководству — проверено.",
    "Одинаковое название не объединяет разные ID винтов — проверено.",
    "Совпавшие отрицательные количества не разрешают продолжение — проверено.",
    "Дробные количества деталей не принимаются — проверено."
  ],
  "sample": {
    "headers": [
      "ID",
      "Деталь",
      "Ожидается",
      "Найдено",
      "Разница",
      "Решение"
    ],
    "rows": [
      [
        "BASE",
        "Основание",
        "1",
        "1",
        "0",
        "Совпало"
      ],
      [
        "SEAT",
        "Сиденье",
        "1",
        "1",
        "0",
        "Совпало"
      ],
      [
        "BACK",
        "Спинка",
        "1",
        "1",
        "0",
        "Совпало"
      ],
      [
        "WHEEL",
        "Ролик",
        "5",
        "5",
        "0",
        "Совпало"
      ],
      [
        "BOLT-A",
        "Винт A",
        "8",
        "7",
        "-1",
        "Недостача"
      ],
      [
        "ARM",
        "Подлокотник",
        "2",
        "3",
        "1",
        "Избыток — уточнить"
      ]
    ]
  },
  "sampleNote": "Это полный вход для приложенного локального инструмента. Руководство относится именно к этой версии интерфейса.",
  "caseStudy": {
    "role": "Автор технических инструкций",
    "contribution": "Я подготовил ведомость комплектности кресла и инструкцию остановки при несовпадении количества деталей.",
    "objective": "Ведомость обнаруживает недостающий винт и лишнюю деталь; инструкция останавливает сборку при расхождении.",
    "problem": "До работы с крепежом нужно знать, совпал ли комплект с ведомостью. Я создал проверяемый входной контроль для авторского набора из шести типов деталей.",
    "result": "Сверка нашла BOLT-A: −1 и ARM: +1. После корректировки обоих количеств расхождений нет; одноименные винты с другим ID не сливаются. Готовы журнал и последовательная инструкция входного контроля.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css",
      "manual.txt"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Лишняя деталь тоже требует проверки",
        "text": "В комплекте BOLT-A найдено семь вместо восьми, а ARM — три вместо двух. Я показываю оба расхождения: избыток не компенсирует нехватку другого типа. Продолжение блокируется до уточнения, а отрицательные и дробные количества отклоняются как неверный ввод, даже если две ошибочные цифры формально совпали."
      },
      {
        "type": "table",
        "title": "Руководство, версия 1.0",
        "lead": "",
        "table": {
          "headers": [
            "Условие",
            "Действие",
            "Результат",
            "Если не получилось"
          ],
          "rows": [
            [
              "Упаковка открыта, сборка не началась",
              "Разложите детали и сопоставьте ID ведомости.",
              "Каждому типу соответствует отдельная строка.",
              "Не объединяйте крепеж по внешнему сходству."
            ],
            [
              "Детали посчитаны",
              "Введите найденное количество для каждого ID.",
              "Видна разница с ожидаемым комплектом.",
              "Не исправляйте ожидаемое число ради зеленого статуса."
            ],
            [
              "Есть недостача или избыток",
              "Остановите переход к сборке и сохраните ведомость расхождений.",
              "Поставщик получает конкретные ID и количества.",
              "Не заменяйте отсутствующий крепеж случайным."
            ],
            [
              "Все количества совпали",
              "Откройте руководство точной модели для следующего этапа.",
              "Входной контроль завершен отдельно от сборки.",
              "Если руководства нет, механические шаги здесь не подсказываются."
            ]
          ]
        }
      }
    ]
  },
  "deliverable": {
    "type": "document",
    "entry": "/catalogue/deliverables/p55-c04/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p55-c04/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      },
      {
        "path": "/catalogue/deliverables/p55-c04/manual.txt",
        "name": "manual.txt",
        "mimeType": "text/plain"
      }
    ],
    "summary": "Сверка нашла BOLT-A: −1 и ARM: +1. После корректировки обоих количеств расхождений нет; одноименные винты с другим ID не сливаются. Готовы журнал и последовательная инструкция входного контроля."
  },
  "takeaway": "Сверка нашла BOLT-A: −1 и ARM: +1. После корректировки обоих количеств расхождений нет; одноименные винты с другим ID не сливаются. Готовы журнал и последовательная инструкция входного контроля.",
  "capabilities": [
    "completed_document"
  ],
  "externalConnections": []
}
