{
  "schemaVersion": 1,
  "id": "P21-C05",
  "title": "Подарочный сертификат с понятным составом",
  "author": {
    "id": "P21",
    "name": "Андрей Кравцов"
  },
  "specialty": "Сайты салонов с онлайн-записью",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P21-C05",
    "title": "Салон с сертификатами",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "У подарка есть два разных шага: выбрать условия и выпустить документ. Повтор нажатия не должен создавать второй сертификат из того же выбора.",
  "decision": "Сделал отдельный экран подтверждения после выбора номинала. Сохраняю идентификатор команды вместе с получателем и пожеланием; повтор уже завершенного выбора открывает результат, а не списывает что-либо снова.",
  "constraint": "Макет не является оплаченным подарочным сертификатом. Эквайринг, выдача реального кода и учет погашений не подключены.",
  "steps": [
    "Выбрать номинал 4000 ₽ и заполнить имя получателя.",
    "Подтвердить: в истории появляется одна карточка.",
    "Повторно выбрать тот же номинал: приложение показывает завершенную операцию."
  ],
  "inspection": [
    "Выбрать номинал 4000 ₽ и заполнить имя получателя.",
    "Подтвердить: в истории появляется одна карточка.",
    "Повторно выбрать тот же номинал: приложение показывает завершенную операцию.",
    "Скачать состояние и убедиться, что получатель и пожелание сохранены."
  ],
  "sample": {
    "headers": [
      "Действие",
      "Наблюдаемый результат"
    ],
    "rows": [
      [
        "1",
        "Выбрать номинал 4000 ₽ и заполнить имя получателя."
      ],
      [
        "2",
        "Подтвердить: в истории появляется одна карточка."
      ],
      [
        "3",
        "Повторно выбрать тот же номинал: приложение показывает завершенную операцию."
      ],
      [
        "4",
        "Скачать состояние и убедиться, что получатель и пожелание сохранены."
      ]
    ]
  },
  "sampleNote": "Самостоятельный проект на подготовленных исходных данных. Действия выполняются локально.",
  "caseStudy": {
    "role": "Разработка локального приложения",
    "contribution": "Разделил выбор номинала и подтверждение, реализовал локальную идемпотентность и выгрузку карточки.",
    "objective": "Номинал выбирается до имени получателя; подтверждение создает один локальный документ.",
    "problem": "У подарка есть два разных шага: выбрать условия и выпустить документ. Повтор нажатия не должен создавать второй сертификат из того же выбора.",
    "result": "После подтверждения остается скачиваемая карточка сертификата. Номиналы различимы до заполнения имени, а повтор операции не размножает документы.",
    "deliverables": [
      "Выберите номинал",
      "Сохраняемый результат взаимодействия",
      "Исходные данные и порядок самостоятельной проверки"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Номинал подтверждается отдельным действием",
        "text": "Сделал отдельный экран подтверждения после выбора номинала. Сохраняю идентификатор команды вместе с получателем и пожеланием; повтор уже завершенного выбора открывает результат, а не списывает что-либо снова."
      },
      {
        "type": "callout",
        "title": "Граница работы",
        "text": "Макет не является оплаченным подарочным сертификатом. Эквайринг, выдача реального кода и учет погашений не подключены."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p21-c05/index.html",
    "label": "Открыть работающий результат",
    "files": [
      {
        "path": "/catalogue/deliverables/p21-c05/index.html",
        "name": "Интерактивный результат",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p21-c05/source.json",
        "name": "Исходные условия и модель",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p21-c05/README.html",
        "name": "Повторить проверку",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p21-c05/starter-data.json",
        "name": "Исходный набор для повторного использования",
        "mimeType": "application/json"
      }
    ],
    "summary": "После подтверждения остается скачиваемая карточка сертификата. Номиналы различимы до заполнения имени, а повтор операции не размножает документы."
  },
  "takeaway": "После подтверждения остается скачиваемая карточка сертификата. Номиналы различимы до заполнения имени, а повтор операции не размножает документы.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
