{
  "schemaVersion": 1,
  "id": "P60-C02",
  "title": "Несколько выгрузок: распределение мест и незаполненный адрес",
  "author": {
    "id": "P60",
    "name": "Герман Петров"
  },
  "specialty": "Заявки на перевозку и логистические документы",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P60-C02",
    "title": "Несколько точек выгрузки",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "В заявке есть общий груз и несколько получателей. Юридический адрес компании не должен автоматически становиться адресом выгрузки.",
  "decision": "Я вынес каждую точку в отдельную строку, сохранил порядок и количество мест. Проверка контролирует сумму распределения, уникальность очередности и наличие адреса именно выгрузки.",
  "constraint": "Ведомость не строит автомобильный маршрут и не оценивает время в пути.",
  "steps": [
    "Подготовить и зафиксировать исходный набор.",
    "Выполнить выбранное преобразование и сохранить результат.",
    "Проверить крайние случаи на измененных входах."
  ],
  "inspection": [
    "Восемь мест распределены, пустая C останавливает ведомость — проверено.",
    "Адрес C завершает контроль состава — проверено.",
    "Юридический адрес не считается адресом выгрузки — проверено."
  ],
  "sample": {
    "headers": [
      "Точка",
      "Порядок",
      "Мест",
      "Адрес",
      "Роль",
      "Проверка"
    ],
    "rows": [
      [
        "A",
        "1",
        "3",
        "Склад А, ворота 2",
        "выгрузка",
        "Адрес указан"
      ],
      [
        "B",
        "2",
        "2",
        "Склад Б, зона приемки",
        "выгрузка",
        "Адрес указан"
      ],
      [
        "C",
        "3",
        "3",
        "",
        "выгрузка",
        "Нужен адрес выгрузки"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Разработчик обработки логистических заявок",
    "contribution": "Я собрал реестр восьми грузовых мест по трём направлениям и выделил недостающий адрес выгрузки.",
    "objective": "Восемь мест распределены между тремя точками; третья точка блокирует передачу маршрута до получения адреса.",
    "problem": "В заявке есть общий груз и несколько получателей. Юридический адрес компании не должен автоматически становиться адресом выгрузки.",
    "result": "Сумма точек равна восьми местам, но маршрут не передан дальше из-за отсутствия адреса C. Подстановка юридического адреса не снимает блокировку; точный адрес выгрузки переводит ведомость к согласованию.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Юридический адрес не закрывает адрес выгрузки",
        "text": "Восемь мест распределены между тремя направлениями, но для C не хватает точки разгрузки. Я оставил это отдельным препятствием, даже если в переписке есть юридический адрес компании. Такая заявка сохраняет известный состав груза и показывает точный вопрос, который нужен диспетчеру до организации маршрута."
      },
      {
        "type": "text",
        "title": "Полное письмо",
        "text": "Отгрузка 8 мест. Точка A: 3 места, Склад А, ворота 2. Точка B: 2 места, Склад Б, зона приемки. Точка C: 3 места, адрес сообщим отдельно. Порядок A → B → C предварительно выбран отправителем."
      }
    ]
  },
  "deliverable": {
    "type": "analysis",
    "entry": "/catalogue/deliverables/p60-c02/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p60-c02/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p60-c02/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "Сумма точек равна восьми местам, но маршрут не передан дальше из-за отсутствия адреса C. Подстановка юридического адреса не снимает блокировку; точный адрес выгрузки переводит ведомость к согласованию."
  },
  "takeaway": "Сумма точек равна восьми местам, но маршрут не передан дальше из-за отсутствия адреса C. Подстановка юридического адреса не снимает блокировку; точный адрес выгрузки переводит ведомость к согласованию.",
  "capabilities": [
    "completed_analysis"
  ],
  "externalConnections": []
}
