{
  "schemaVersion": 1,
  "id": "P50-C06",
  "title": "Классификация отзывов: старые слова и новые формулировки",
  "author": {
    "id": "P50",
    "name": "Вячеслав Фомин"
  },
  "specialty": "Стоимость и скорость ИИ-сервисов",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P50-C06",
    "title": "Сервис классификации отзывов",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Словарь, проверенный на «молния сломалась», не обязательно узнает «бегунок заедает». Я составил полный контрольный набор с фиксированными метками до запуска двух правил.",
  "decision": "Baseline знает только слова «молния» и «ремень». Revised добавляет «бегунок» и «лямка», но сохраняет отрицательный пример. Отчет показывает ошибки и долю совпадений отдельно для старых и новых формулировок.",
  "constraint": "Это прозрачный словарный классификатор на восьми авторских отзывах. Он не обученная модель и не промышленная оценка точности.",
  "steps": [
    "Зафиксировать полный вход и два режима обработки.",
    "Проверить правильность результата до сравнения времени.",
    "Выполнить 50 прогревочных запусков и 30 серий по 100 повторов; сохранить все сводные времена."
  ],
  "inspection": [
    "Новый словарь проходит восемь явных контрольных строк — проверено.",
    "Старый словарь проходит старые 4/4, новые только 1/4 — проверено.",
    "Новая непредусмотренная формулировка остается настоящей ошибкой — проверено."
  ],
  "sample": {
    "headers": [
      "ID",
      "Группа",
      "Текст",
      "Эталон",
      "Предсказание",
      "Совпадение"
    ],
    "rows": [
      [
        "O1",
        "old",
        "Молния сломалась после закрывания.",
        "застежка",
        "застежка",
        "Да"
      ],
      [
        "O2",
        "old",
        "Ремень оторвался у шва.",
        "ремень",
        "ремень",
        "Да"
      ],
      [
        "O3",
        "old",
        "Цвет оказался темнее ожиданий.",
        "прочее",
        "прочее",
        "Да"
      ],
      [
        "O4",
        "old",
        "Все приехало целым, замечаний нет.",
        "прочее",
        "прочее",
        "Да"
      ],
      [
        "N1",
        "new",
        "Бегунок заедает в середине дорожки.",
        "застежка",
        "застежка",
        "Да"
      ],
      [
        "N2",
        "new",
        "Лямка начала распускаться возле крепления.",
        "ремень",
        "ремень",
        "Да"
      ],
      [
        "N3",
        "new",
        "Упаковка помята, изделие цело.",
        "прочее",
        "прочее",
        "Да"
      ],
      [
        "N4",
        "new",
        "Молния не сломалась, проблема только с цветом.",
        "прочее",
        "прочее",
        "Да"
      ]
    ]
  },
  "sampleNote": "Авторский набор. В timings.json записан фактически выполненный локальный замер кода; тариф модели и сеть в него не входят.",
  "caseStudy": {
    "role": "Разработчик стендов измерения обработки данных",
    "contribution": "Я измерил словарный классификатор на старых и новых формулировках и добавил отдельный неизвестный пример.",
    "objective": "Две версии словаря проверяются на раздельных группах; общий показатель не прячет сбои новых SKU.",
    "problem": "Словарь, проверенный на «молния сломалась», не обязательно узнает «бегунок заедает». Я составил полный контрольный набор с фиксированными метками до запуска двух правил.",
    "result": "Baseline совпал с эталоном в 4/4 старых и 1/4 новых формулировок. Явно расширенный словарь прошел 8/8, но добавленный непредусмотренный пример «застежка разошлась» снова выявил ошибку. Этот предел сохранен в проверке.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css",
      "timings.json"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Восемь знакомых фраз не закрывают новый язык",
        "text": "Начальный словарь проходит четыре старых формулировки, но только одну новую. Расширенный проходит все восемь известных примеров, а «застёжка разошлась» всё ещё выявляет пропуск. Я оставил эту фразу вне доработки, чтобы показать границу словаря после исправления, а не растворить её в очередном полном результате."
      }
    ]
  },
  "deliverable": {
    "type": "analysis",
    "entry": "/catalogue/deliverables/p50-c06/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p50-c06/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/benchmark.cjs",
        "name": "benchmark.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p50-c06/timings.json",
        "name": "timings.json",
        "mimeType": "application/json"
      }
    ],
    "summary": "Baseline совпал с эталоном в 4/4 старых и 1/4 новых формулировок. Явно расширенный словарь прошел 8/8, но добавленный непредусмотренный пример «застежка разошлась» снова выявил ошибку. Этот предел сохранен в проверке."
  },
  "takeaway": "Baseline совпал с эталоном в 4/4 старых и 1/4 новых формулировок. Явно расширенный словарь прошел 8/8, но добавленный непредусмотренный пример «застежка разошлась» снова выявил ошибку. Этот предел сохранен в проверке.",
  "capabilities": [
    "completed_analysis"
  ],
  "externalConnections": []
}
