{
  "schemaVersion": 1,
  "id": "P42-C04",
  "title": "Текстиль: состав, плотность и ширина без усреднения",
  "author": {
    "id": "P42",
    "name": "Борис Зайцев"
  },
  "specialty": "Сопоставление прайсов и номенклатуры",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P42-C04",
    "title": "Каталог текстиля",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Белые ткани выглядят похожими в прайсе. Восемь сравнений включают смесовую ткань, иной вес, ширину 1,5 м и неполное описание.",
  "decision": "Я нормализовал ширину до миллиметров и порядок компонентов состава. Проценты остаются буквальной частью записи: 80/20 нельзя приравнять к 100. Плотность сравнивается отдельно от цвета.",
  "constraint": "Состав задан строкой с долями каждого волокна. Химический состав по изображению или отзыву не определяется.",
  "steps": [
    "Зафиксировать единицы плотности и ширины.",
    "Сравнить состав как набор компонентов с неизменными долями.",
    "Проверить перестановку волокон и неполную спецификацию."
  ],
  "inspection": [
    "Все восемь пар совпадают с независимо заданными решениями — проверено.",
    "Отсутствующее значимое поле отправляет совпадение на уточнение — проверено.",
    "Перестановка двух сторон не меняет решение — проверено."
  ],
  "sample": {
    "headers": [
      "Пара",
      "Позиция A",
      "Позиция B",
      "Решение",
      "Основание"
    ],
    "rows": [
      [
        "PAIR-01",
        "хлопок 140",
        "хлопок 140",
        "Совпадают признаки",
        "Все значимые поля совпали"
      ],
      [
        "PAIR-02",
        "смесь",
        "хлопок",
        "Разные позиции",
        "Различаются: Состав"
      ],
      [
        "PAIR-03",
        "140г",
        "160г",
        "Разные позиции",
        "Различаются: Плотность"
      ],
      [
        "PAIR-04",
        "без состава",
        "хлопок",
        "Нужно уточнение",
        "Не заданы: Состав"
      ],
      [
        "PAIR-05",
        "смесь в другом порядке",
        "смесь",
        "Совпадают признаки",
        "Все значимые поля совпали"
      ],
      [
        "PAIR-06",
        "узкая",
        "широкая",
        "Разные позиции",
        "Различаются: Ширина"
      ],
      [
        "PAIR-07",
        "плотность неизвестна",
        "140г",
        "Нужно уточнение",
        "Не заданы: Плотность"
      ],
      [
        "PAIR-08",
        "черная",
        "белая",
        "Разные позиции",
        "Различаются: Цвет"
      ]
    ]
  },
  "sampleNote": "Авторские пары номенклатуры с явно заданными спецификациями. Это проверка правил сопоставления, не ассортимент действующего поставщика.",
  "caseStudy": {
    "role": "Специалист по сопоставлению номенклатуры",
    "contribution": "Я нормализовал составы, ширину и цвет тканей и сохранил плотность самостоятельным критерием.",
    "objective": "Порядок перечисления волокон может меняться; их доли, плотность и ширина — нет.",
    "problem": "Белые ткани выглядят похожими в прайсе. Восемь сравнений включают смесовую ткань, иной вес, ширину 1,5 м и неполное описание.",
    "result": "Перестановка компонентов 80% хлопка и 20% полиэстера не изменила состав пары. Но смесь не совпала со 100% хлопком, 140 г/м² — со 160, а ширина 120 см — со 150. Две строки без состава или плотности остались открытыми.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Белый хлопок бывает разной тканью",
        "text": "В PAIR-01 ширины 1,5 м и 150 см равны. В PAIR-02 при той же ширине смесь 80% хлопка и 20% полиэстера не равна чистому хлопку. PAIR-03 отдельно удерживает различие 140 и 160 г/м². Сходное название ткани не перекрывает эти три независимые проверки."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p42-c04/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p42-c04/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p42-c04/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "Перестановка компонентов 80% хлопка и 20% полиэстера не изменила состав пары. Но смесь не совпала со 100% хлопком, 140 г/м² — со 160, а ширина 120 см — со 150. Две строки без состава или плотности остались открытыми."
  },
  "takeaway": "Перестановка компонентов 80% хлопка и 20% полиэстера не изменила состав пары. Но смесь не совпала со 100% хлопком, 140 г/м² — со 160, а ширина 120 см — со 150. Две строки без состава или плотности остались открытыми.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
