{
  "schemaVersion": 1,
  "id": "P46-C02",
  "title": "Заезды на выходные: дата, бюджет и подтвержденная цена",
  "author": {
    "id": "P46",
    "name": "Дмитрий Елисеев"
  },
  "specialty": "Умный поиск и подбор в каталогах",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P46-C02",
    "title": "Подбор туров",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "На 24–25 октября нужны поездки не дороже 20000 ₽. В наборе один маршрут повторяется в разные даты, у другого цена еще не подтверждена.",
  "decision": "Я храню даты начала и конца у каждой записи и проверяю попадание целого заезда в выбранный интервал. Неподтвержденная цена и отсутствие мест исключаются до сортировки по стоимости.",
  "constraint": "Это авторский календарь заездов, не предложение туроператора и не реальные места.",
  "steps": [
    "Задать восемь записей именно заездов, включая повтор маршрута.",
    "Проверить весь интервал, цену и доступность мест.",
    "Снизить бюджет до пустой выдачи и сохранить объяснение."
  ],
  "inspection": [
    "Выбранытри конкретных заезда T04, T01, T08 — проверено.",
    "Неподтвержденная цена T05 не проходит — проверено.",
    "Бюджет 1000 дает честную пустую выдачу — проверено.",
    "Отрицательный параметр строки исключает ложный подбор — проверено.",
    "Нечисловой параметр строки исключает ложный подбор — проверено.",
    "Перевернутые даты запроса останавливают выдачу — проверено.",
    "Перевернутые даты тура не допускают подбор — проверено."
  ],
  "sample": {
    "headers": [
      "ID",
      "Маршрут",
      "Заезд",
      "Цена, ₽",
      "Решение",
      "Основание"
    ],
    "rows": [
      [
        "T04",
        "Город и мастерская",
        "2026-10-24 — 2026-10-24",
        "12000",
        "Подходит",
        "Дата, цена и места подходят"
      ],
      [
        "T01",
        "Лесной маршрут",
        "2026-10-24 — 2026-10-25",
        "18500",
        "Подходит",
        "Дата, цена и места подходят"
      ],
      [
        "T08",
        "Панорамы",
        "2026-10-24 — 2026-10-25",
        "20000",
        "Подходит",
        "Дата, цена и места подходят"
      ],
      [
        "T06",
        "Короткий поход",
        "2026-10-25 — 2026-10-25",
        "9500",
        "Не подходит",
        "нет мест"
      ],
      [
        "T07",
        "Долина",
        "2026-10-23 — 2026-10-25",
        "17500",
        "Не подходит",
        "даты вне интервала"
      ],
      [
        "T02",
        "Лесной маршрут",
        "2026-10-31 — 2026-11-01",
        "18500",
        "Не подходит",
        "даты вне интервала"
      ],
      [
        "T05",
        "Каньон",
        "2026-10-24 — 2026-10-25",
        "19000",
        "Не подходит",
        "цена не подтверждена"
      ],
      [
        "T03",
        "Озерный круг",
        "2026-10-24 — 2026-10-25",
        "22000",
        "Не подходит",
        "выше бюджета"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Разработчик подбора в каталогах",
    "contribution": "Я реализовал подбор поездок по датам, бюджету и наличию мест с проверкой корректности интервала.",
    "objective": "Поиск использует конкретный заезд, а не похожее описание маршрута.",
    "problem": "На 24–25 октября нужны поездки не дороже 20000 ₽. В наборе один маршрут повторяется в разные даты, у другого цена еще не подтверждена.",
    "result": "На 24–25 октября проходят T04 за 12000 ₽, T01 за 18500 ₽ и T08 за 20000 ₽. Похожий маршрут на 31 октября, неподтвержденная цена и закончившиеся места не подменяют результат.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Тот же маршрут на другую неделю",
        "text": "У T01 и T02 одинаковая цена 18500 и по четыре места, но только T01 попадает в 24–25 октября. T03 совпадает по датам, зато стоит 22000 при бюджете 20000. Я показываю причины этих двух отказов отдельно, чтобы человек мог осознанно изменить либо даты, либо бюджет."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p46-c02/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p46-c02/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c02/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "На 24–25 октября проходят T04 за 12000 ₽, T01 за 18500 ₽ и T08 за 20000 ₽. Похожий маршрут на 31 октября, неподтвержденная цена и закончившиеся места не подменяют результат."
  },
  "takeaway": "На 24–25 октября проходят T04 за 12000 ₽, T01 за 18500 ₽ и T08 за 20000 ₽. Похожий маршрут на 31 октября, неподтвержденная цена и закончившиеся места не подменяют результат.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
