{
  "schemaVersion": 1,
  "id": "P44-C02",
  "title": "Возврат в другом месяце: отчет периода и итог заказа",
  "author": {
    "id": "P44",
    "name": "Анастасия Ковалева"
  },
  "specialty": "Управленческие отчеты из разрозненных данных",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P44-C02",
    "title": "Интернет-магазин",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "SALE-01 на 10000 ₽ проведен в октябре, возврат 2000 ₽ пришел в ноябре. Журнал также содержит ноябрьскую продажу и возврат без найденного заказа.",
  "decision": "Я показываю одновременно два среза: движения выбранного месяца и накопленный результат каждого заказа. Связь возврата с продажей проверяется до расчета. Повтор события и неизвестный заказ не попадают в итог.",
  "constraint": "Правило периода явно задано: событие входит по своей дате; накопленный итог заказа показывается отдельно.",
  "steps": [
    "Связать возвраты с заказами и проверить уникальность событий.",
    "Посчитать движения по месяцу самого события.",
    "Сопоставить их с накопленным результатом заказа O1."
  ],
  "inspection": [
    "Ноябрь 4000, накопленный O1 — 8000 — проверено.",
    "Октябрь сохраняет свои 15000 без переноса ноябрьского возврата — проверено.",
    "Повтор возврата исключен по ID события — проверено.",
    "Отрицательная сумма не становится учтенным движением — проверено.",
    "Нечисловая сумма останавливает расчет — проверено.",
    "Возврат сверх учтенного остатка не делает продажу отрицательной — проверено."
  ],
  "sample": {
    "headers": [
      "Событие",
      "Заказ",
      "Дата",
      "Движение, ₽",
      "В выбранном месяце",
      "Статус"
    ],
    "rows": [
      [
        "SALE-01",
        "O1",
        "2026-10-28",
        "10000",
        "Нет",
        "Учтено"
      ],
      [
        "SALE-02",
        "O2",
        "2026-10-29",
        "5000",
        "Нет",
        "Учтено"
      ],
      [
        "RETURN-01",
        "O1",
        "2026-11-02",
        "-2000",
        "Да",
        "Учтено"
      ],
      [
        "RETURN-01",
        "O1",
        "2026-11-02",
        "0",
        "Да",
        "Повтор"
      ],
      [
        "SALE-03",
        "O3",
        "2026-11-04",
        "7000",
        "Да",
        "Учтено"
      ],
      [
        "RETURN-02",
        "O3",
        "2026-11-06",
        "-1000",
        "Да",
        "Учтено"
      ],
      [
        "RETURN-X",
        "OX",
        "2026-11-07",
        "0",
        "Да",
        "Нет исходной продажи"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Аналитик управленческого учёта",
    "contribution": "Я связала возвраты с исходными продажами и построила два разреза: движение месяца и итог заказа.",
    "objective": "Ноябрьский возврат уменьшает поток ноября, но остается связан с октябрьским заказом.",
    "problem": "SALE-01 на 10000 ₽ проведен в октябре, возврат 2000 ₽ пришел в ноябре. Журнал также содержит ноябрьскую продажу и возврат без найденного заказа.",
    "result": "В ноябре учтено 4000 ₽: продажа 7000 минус возвраты 2000 и 1000. Накопленный итог октябрьского O1 равен 8000 ₽. Возврат OX на 600 ₽ оставлен на сверке, повтор RETURN-01 снят.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Октябрьская продажа в ноябрьском отчёте",
        "text": "SALE-01 относится к 28 октября, а связанный возврат влияет на ноябрьское движение. Если ограничить всю историю только ноябрём, основание возврата исчезнет. Поэтому выбор месяца действует на движение денег, а итог O1 собирается по полной цепочке заказа. Эти величины отвечают на разные управленческие вопросы."
      }
    ]
  },
  "deliverable": {
    "type": "analysis",
    "entry": "/catalogue/deliverables/p44-c02/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p44-c02/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p44-c02/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "В ноябре учтено 4000 ₽: продажа 7000 минус возвраты 2000 и 1000. Накопленный итог октябрьского O1 равен 8000 ₽. Возврат OX на 600 ₽ оставлен на сверке, повтор RETURN-01 снят."
  },
  "takeaway": "В ноябре учтено 4000 ₽: продажа 7000 минус возвраты 2000 и 1000. Накопленный итог октябрьского O1 равен 8000 ₽. Возврат OX на 600 ₽ оставлен на сверке, повтор RETURN-01 снят.",
  "capabilities": [
    "completed_analysis"
  ],
  "externalConnections": []
}
