{
  "schemaVersion": 1,
  "id": "P55-C02",
  "title": "Очередь печати: инструкция по разбору трех состояний задания",
  "author": {
    "id": "P55",
    "name": "Василий Егоров"
  },
  "specialty": "Инструкции и технические руководства",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P55-C02",
    "title": "Настройка бытового принтера",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Пользователь видит «не печатает», но причины различаются: устройство offline, пауза задания и уже завершенная работа. Руководство должно вести к действию по наблюдаемому состоянию.",
  "decision": "Я сделал локальный стенд очереди с командами resume, cancel и status. Возобновление допустимо только для paused при online; повтор completed возвращает статус без нового выполнения.",
  "constraint": "Стенд не управляет физическим принтером. Инструкция относится к приложенной модели очереди, не к неизвестной марке устройства.",
  "steps": [
    "Установите command=status и рассчитайте. Найдите ID и исходный статус.",
    "Проверьте online; выберите resume только при yes.",
    "Выберите cancel и проверьте строку ID.",
    "Проверьте столбцы До и После."
  ],
  "inspection": [
    "Выполняется только приостановленное J1, J2 не печатается повторно — проверено.",
    "Offline не выдает фиктивный успех — проверено.",
    "Отмена не изменяет уже выполненное задание — проверено."
  ],
  "sample": {
    "headers": [
      "ID",
      "Файл",
      "До",
      "После",
      "Действие"
    ],
    "rows": [
      [
        "J1",
        "label.pdf",
        "paused",
        "completed",
        "Возобновлено и выполнено"
      ],
      [
        "J2",
        "invoice.pdf",
        "completed",
        "completed",
        "Статус сохранен"
      ],
      [
        "J3",
        "notes.pdf",
        "queued",
        "queued",
        "Статус сохранен"
      ]
    ]
  },
  "sampleNote": "Это полный вход для приложенного локального инструмента. Руководство относится именно к этой версии интерфейса.",
  "caseStudy": {
    "role": "Автор технических инструкций",
    "contribution": "Я реализовал действия с очередью печати и описал ожидаемые состояния после возобновления и отмены.",
    "objective": "Журнал показывает, почему задание ждёт, остановлено или выполнено; повтор не создает вторую печать.",
    "problem": "Пользователь видит «не печатает», но причины различаются: устройство offline, пауза задания и уже завершенная работа. Руководство должно вести к действию по наблюдаемому состоянию.",
    "result": "Три состояния разобраны одной инструкцией с наблюдаемыми признаками. J1 возобновляется, J2 не дублируется, offline сохраняет паузу. Отмена не переписывает историю завершенного задания.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css",
      "manual.txt"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Возобновление не печатает готовое задание второй раз",
        "text": "В очереди J1 приостановлено, J2 уже выполнено, J3 ожидает. Команда resume при доступном принтере меняет подходящее задание, но не запускает J2 заново. В инструкции результат действия проверяется по состоянию каждой строки, поэтому пользователь может отличить повторную команду от нового выполнения."
      },
      {
        "type": "table",
        "title": "Руководство, версия 1.0",
        "lead": "",
        "table": {
          "headers": [
            "Условие",
            "Действие",
            "Результат",
            "Если не получилось"
          ],
          "rows": [
            [
              "Задание не дает ожидаемого результата",
              "Установите command=status и рассчитайте. Найдите ID и исходный статус.",
              "Completed отличается от paused и queued.",
              "Не отправляйте файл повторно до проверки статуса."
            ],
            [
              "Статус paused",
              "Проверьте online; выберите resume только при yes.",
              "J1 получает completed, счетчик новых выполнений равен 1.",
              "При offline состояние остается paused."
            ],
            [
              "Нужно отменить незавершенную работу",
              "Выберите cancel и проверьте строку ID.",
              "Paused и queued становятся cancelled.",
              "Completed не отменяется задним числом."
            ],
            [
              "Есть сомнение после повторного действия",
              "Проверьте столбцы До и После.",
              "Уже выполненное задание не увеличивает счетчик.",
              "Для физического устройства проверяйте его собственный журнал."
            ]
          ]
        }
      }
    ]
  },
  "deliverable": {
    "type": "document",
    "entry": "/catalogue/deliverables/p55-c02/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p55-c02/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      },
      {
        "path": "/catalogue/deliverables/p55-c02/manual.txt",
        "name": "manual.txt",
        "mimeType": "text/plain"
      }
    ],
    "summary": "Три состояния разобраны одной инструкцией с наблюдаемыми признаками. J1 возобновляется, J2 не дублируется, offline сохраняет паузу. Отмена не переписывает историю завершенного задания."
  },
  "takeaway": "Три состояния разобраны одной инструкцией с наблюдаемыми признаками. J1 возобновляется, J2 не дублируется, offline сохраняет паузу. Отмена не переписывает историю завершенного задания.",
  "capabilities": [
    "completed_document"
  ],
  "externalConnections": []
}
