{
  "schemaVersion": 1,
  "id": "P44-C04",
  "title": "Доставка обедов: одна выполненная продажа на заказ",
  "author": {
    "id": "P44",
    "name": "Анастасия Ковалева"
  },
  "specialty": "Управленческие отчеты из разрозненных данных",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P44-C04",
    "title": "Доставка обедов",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Три заказа проходят разные пути: O18 выполнен, O19 оплачен и отменен, O20 выполнен и частично возвращен. Дубли событий добавлены отдельно, чтобы проверить устойчивость отчета.",
  "decision": "Я храню состояние заказа и ID каждого события. Выручка примера появляется при первом выполнении; оплата отражается только в денежном потоке. Возврат после выполнения уменьшает обе величины, а возврат отмененного — только деньги.",
  "constraint": "Для этого отчета продажа определяется выполнением заказа. Правило не переносится автоматически на другую модель учета.",
  "steps": [
    "Задать три полные истории заказов с разными исходами.",
    "Рассчитать деньги и продажи по переходам состояния.",
    "Повторить события и повторно выполнить уже завершенный заказ."
  ],
  "inspection": [
    "Два выполненных заказа дают 1800 после частичного возврата — проверено.",
    "Два повторных события исключены — проверено.",
    "Новое событие выполнения того же заказа не создает вторую продажу — проверено.",
    "Отрицательная сумма не становится учтенным движением — проверено.",
    "Нечисловая сумма останавливает расчет — проверено.",
    "Возврат сверх учтенного остатка не делает продажу отрицательной — проверено."
  ],
  "sample": {
    "headers": [
      "Событие",
      "Заказ",
      "Тип",
      "Деньги, ₽",
      "Продажа, ₽",
      "Статус"
    ],
    "rows": [
      [
        "E1",
        "O18",
        "оплата",
        "900",
        "0",
        "Учтено"
      ],
      [
        "E2",
        "O18",
        "выполнен",
        "0",
        "900",
        "Учтено"
      ],
      [
        "E2",
        "O18",
        "выполнен",
        "0",
        "0",
        "Повтор события"
      ],
      [
        "E3",
        "O19",
        "оплата",
        "600",
        "0",
        "Учтено"
      ],
      [
        "E4",
        "O19",
        "отменен",
        "0",
        "0",
        "Учтено"
      ],
      [
        "E5",
        "O19",
        "возврат",
        "-600",
        "0",
        "Учтено"
      ],
      [
        "E6",
        "O20",
        "оплата",
        "1200",
        "0",
        "Учтено"
      ],
      [
        "E7",
        "O20",
        "выполнен",
        "0",
        "1200",
        "Учтено"
      ],
      [
        "E8",
        "O20",
        "возврат",
        "-300",
        "-300",
        "Учтено"
      ],
      [
        "E1",
        "O18",
        "оплата",
        "0",
        "0",
        "Повтор события"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Аналитик управленческого учёта",
    "contribution": "Я собрала событийный отчёт заказов еды с исключением повторов и проверкой возвратов.",
    "objective": "Повторы оплаты и выполнения не увеличивают продажу; отмена до выполнения остается финансовым вопросом.",
    "problem": "Три заказа проходят разные пути: O18 выполнен, O19 оплачен и отменен, O20 выполнен и частично возвращен. Дубли событий добавлены отдельно, чтобы проверить устойчивость отчета.",
    "result": "Два выполненных заказа дали 2100 ₽ до возврата и 1800 ₽ после него. Отмененный O19 не создал продажу, его 600 ₽ вернулись отдельным событием. Повторы E1/E2 и новое выполнение O18 не увеличили итог.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Повтор события не становится второй продажей",
        "text": "В журнале для O18 оплата на 900 и изменение состояния заказа — разные факты. Повторная доставка уже известного события не должна увеличивать деньги или число выполненных заказов. Я проверяю идентичность события прежде расчёта, а выполненную продажу связываю с состоянием исполнения."
      }
    ]
  },
  "deliverable": {
    "type": "analysis",
    "entry": "/catalogue/deliverables/p44-c04/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p44-c04/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c04/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "Два выполненных заказа дали 2100 ₽ до возврата и 1800 ₽ после него. Отмененный O19 не создал продажу, его 600 ₽ вернулись отдельным событием. Повторы E1/E2 и новое выполнение O18 не увеличили итог."
  },
  "takeaway": "Два выполненных заказа дали 2100 ₽ до возврата и 1800 ₽ после него. Отмененный O19 не создал продажу, его 600 ₽ вернулись отдельным событием. Повторы E1/E2 и новое выполнение O18 не увеличили итог.",
  "capabilities": [
    "completed_analysis"
  ],
  "externalConnections": []
}
