{
  "schemaVersion": 1,
  "id": "P40-C01",
  "title": "Частичный возврат: обращение по одной строке заказа",
  "author": {
    "id": "P40",
    "name": "Станислав Мельников"
  },
  "specialty": "Статусы заказов и возвраты",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P40-C01",
    "title": "Магазин одежды",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "В заказе O-204 две футболки и куртка, а обращение относится к одной футболке. Я сделал отдельный входящий документ возврата: общий заказ не меняет статус из-за одной строки.",
  "decision": "Проверяется количество с учётом уже возвращённого. В выходе отделены обращение и сумма для проверки; платежная операция не создаётся. Повтор сохранения с тем же номером обращения открывает существующий результат.",
  "constraint": "Преобразование выполняется в браузере по явным правилам подготовленного формата. Внешних систем, распознавания произвольных документов и генерации ответов LLM нет.",
  "steps": [
    "Возврат 1 из 2 даёт остаток 1 и сумму 1200 ₽ для проверки.",
    "Возврат 3 блокируется.",
    "При ранее возвращённой одной футболке допустима только одна оставшаяся."
  ],
  "inspection": [
    "Возврат 1 из 2 даёт остаток 1 и сумму 1200 ₽ для проверки.",
    "Возврат 3 блокируется.",
    "При ранее возвращённой одной футболке допустима только одна оставшаяся.",
    "Дважды сохранить RET-204-1: в истории одно обращение."
  ],
  "sample": {
    "headers": [
      "Действие",
      "Наблюдаемый результат"
    ],
    "rows": [
      [
        "1",
        "Возврат 1 из 2 даёт остаток 1 и сумму 1200 ₽ для проверки."
      ],
      [
        "2",
        "Возврат 3 блокируется."
      ],
      [
        "3",
        "При ранее возвращённой одной футболке допустима только одна оставшаяся."
      ],
      [
        "4",
        "Дважды сохранить RET-204-1: в истории одно обращение."
      ]
    ]
  },
  "sampleNote": "Самостоятельный проект на подготовленных исходных данных. Действия выполняются локально.",
  "caseStudy": {
    "role": "Разработка исполняемого преобразования",
    "contribution": "Подготовил исходный материал, реализовал правила разбора и проверок, связал извлеченные поля с исходными фрагментами и добавил сохранение результата.",
    "objective": "Рассчитать количество и сумму проверяемой позиции, сохранив остальные товары вне возврата.",
    "problem": "В заказе O-204 две футболки и куртка, а обращение относится к одной футболке. Я сделал отдельный входящий документ возврата: общий заказ не меняет статус из-за одной строки.",
    "result": "Из двух футболок на возврат запрашивается одна за 1200 ₽, одна остаётся у покупателя. Количество 3 блокирует сборку. Повтор RET-204-1 не порождает вторую запись в локальной истории.",
    "deliverables": [
      "Исходный материал → результат",
      "Обращение по позиции",
      "Исходные данные и порядок самостоятельной проверки"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Возврат ограничен конкретной позицией",
        "text": "Проверяется количество с учётом уже возвращённого. В выходе отделены обращение и сумма для проверки; платежная операция не создаётся. Повтор сохранения с тем же номером обращения открывает существующий результат."
      },
      {
        "type": "text",
        "title": "Одна футболка из двух",
        "text": "Из двух купленных единиц при возврате одной остаётся одна, а сумма для проверки — 1200 ₽. Попытка вернуть три единицы останавливается до формирования обращения."
      },
      {
        "type": "callout",
        "title": "Граница работы",
        "text": "Преобразование выполняется в браузере по явным правилам подготовленного формата. Внешних систем, распознавания произвольных документов и генерации ответов LLM нет."
      }
    ]
  },
  "deliverable": {
    "type": "workflow",
    "entry": "/catalogue/deliverables/p40-c01/index.html",
    "label": "Открыть работающий результат",
    "files": [
      {
        "path": "/catalogue/deliverables/p40-c01/index.html",
        "name": "Интерактивный результат",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p40-c01/source.json",
        "name": "Исходные условия и модель",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p40-c01/README.html",
        "name": "Повторить проверку",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p40-c01/input.txt",
        "name": "Исходный материал",
        "mimeType": "text/plain"
      },
      {
        "path": "/catalogue/deliverables/p40-c01/example-output.json",
        "name": "Результат разбора исходного примера",
        "mimeType": "application/json"
      }
    ],
    "summary": "Из двух футболок на возврат запрашивается одна за 1200 ₽, одна остаётся у покупателя. Количество 3 блокирует сборку. Повтор RET-204-1 не порождает вторую запись в локальной истории."
  },
  "takeaway": "Из двух футболок на возврат запрашивается одна за 1200 ₽, одна остаётся у покупателя. Количество 3 блокирует сборку. Повтор RET-204-1 не порождает вторую запись в локальной истории.",
  "capabilities": [
    "completed_workflow"
  ],
  "externalConnections": []
}
