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