{
  "schemaVersion": 1,
  "id": "P46-C04",
  "title": "Запчасти: точный артикул и подозрительная буква O",
  "author": {
    "id": "P46",
    "name": "Дмитрий Елисеев"
  },
  "specialty": "Умный поиск и подбор в каталогах",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P46-C04",
    "title": "Поиск запчастей",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Артикулы AX-204 и AX-240 отличаются порядком цифр, а AX-2O4 содержит букву. Похожее назначение детали не позволяет подтвердить замену.",
  "decision": "Я нормализовал только пробелы и регистр. Буквы и цифры не заменяются. Если найден лишь визуально похожий вариант после O → 0, он показывается как подсказка для сверки, а не точное совпадение.",
  "constraint": "Коды и характеристики являются авторским каталогом. Взаимозаменяемость не вычисляется.",
  "steps": [
    "Сохранить шесть различных артикулов с моделью и креплением.",
    "Разделить точное совпадение и визуальную подсказку O/0.",
    "Проверить перестановку цифр, суффикс и отсутствующий артикул."
  ],
  "inspection": [
    "AX-204 не объединяется с AX-240 илисуффиксом B — проверено.",
    "Буква O дает подсказку, но ноль точных совпадений — проверено.",
    "Неизвестный артикул не подменяется назначением — проверено."
  ],
  "sample": {
    "headers": [
      "Артикул",
      "Название",
      "Модель",
      "Крепление",
      "Решение"
    ],
    "rows": [
      [
        "AX-204",
        "Кронштейн прямой",
        "M20",
        "2 отверстия",
        "Точный артикул"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Разработчик подбора в каталогах",
    "contribution": "Я подготовил каталог деталей и реализовал точное сопоставление обозначения с объяснением несовпадений.",
    "objective": "AX-204 находится точно; AX-2O4 остается отдельным запросом, который нельзя молча исправить.",
    "problem": "Артикулы AX-204 и AX-240 отличаются порядком цифр, а AX-2O4 содержит букву. Похожее назначение детали не позволяет подтвердить замену.",
    "result": "AX-204 возвращает только свой кронштейн. Запрос AX-2O4 показывает возможную опечатку и сохраняет статус неподтвержденного соответствия. AX-999 дает отсутствие результата, без подстановки похожей детали.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Один символ в AX-204 меняет выбор",
        "text": "Для детали AX-204 визуальная похожесть кода недостаточна. Я сохранил полный артикул как условие отбора, чтобы соседнее обозначение не попадало в результат из-за общего начала строки. Пользователь видит, какое поле не совпало, и может исправить запрос без перебора случайных похожих деталей."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p46-c04/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p46-c04/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p46-c04/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "AX-204 возвращает только свой кронштейн. Запрос AX-2O4 показывает возможную опечатку и сохраняет статус неподтвержденного соответствия. AX-999 дает отсутствие результата, без подстановки похожей детали."
  },
  "takeaway": "AX-204 возвращает только свой кронштейн. Запрос AX-2O4 показывает возможную опечатку и сохраняет статус неподтвержденного соответствия. AX-999 дает отсутствие результата, без подстановки похожей детали.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
