{
  "schemaVersion": 1,
  "id": "P48-C06",
  "title": "Пакетный экстрактор: лимит входа и честный частичный результат",
  "author": {
    "id": "P48",
    "name": "Антон Лазарев"
  },
  "specialty": "ИИ в закрытом контуре",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P48-C06",
    "title": "Сервис суммаризации",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Неограниченный вход неудобен для фоновой обработки. Без действующей модели можно проверить конкретное свойство: отказ по размеру и сохранение списка реально обработанных разделов.",
  "decision": "Я ограничил объем входного текста и число разделов за проход. Это простая извлекающая обработка: первое предложение каждого раздела сохраняется буквально. Она не скрывает, что обработано 3 из 5, и не называет себя полным резюме.",
  "constraint": "Экстрактор не использует LLM и не обещает ограничение памяти 2 ГиБ или таймаут 30 с: эти свойства здесь не измерялись.",
  "steps": [
    "Написать пять законченных разделов и зафиксировать их объем.",
    "Извлечь первые предложения с ограничением числа разделов.",
    "Повторить проход с недостаточным лимитом и с полным охватом."
  ],
  "inspection": [
    "Извлечены три раздела из пяти со статусом частичного прохода — проверено.",
    "Слишком малый лимит 100 символов возвращает отказ без частичного текста — проверено.",
    "Предел пяти разделов дает полный проход по тем же исходникам — проверено."
  ],
  "sample": {
    "headers": [
      "Раздел",
      "Заголовок",
      "Извлечено"
    ],
    "rows": [
      [
        "S1",
        "Состав поставки",
        "В поставку входят корпус, крышка и два разделителя."
      ],
      [
        "S2",
        "Маркировка",
        "Артикул и номер партии сохраняются без изменения символов."
      ],
      [
        "S3",
        "Передача",
        "Передача оформляется после проверки состава архива."
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Инженер локальной обработки данных",
    "contribution": "Я написал пакетный экстрактор полных разделов с ограничением входа и явным перечнем оставшихся частей.",
    "objective": "Из пяти полных разделов извлекаются первые предложения в пределах заданного числа разделов; неполный результат явно отмечен.",
    "problem": "Неограниченный вход неудобен для фоновой обработки. Без действующей модели можно проверить конкретное свойство: отказ по размеру и сохранение списка реально обработанных разделов.",
    "result": "В исходном режиме обработаны S1–S3, а S4–S5 явно перечислены как оставшиеся. Уменьшение допустимого входа до 100 символов дает отказ без результата; увеличение прохода до 5 разделов сохраняет полную извлеченную подборку.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Три обработанных раздела из пяти",
        "text": "При лимите трёх разделов S1–S3 дают извлечённые первые предложения, а S4–S5 остаются в списке ожидания. Я сохранил этот список рядом с результатом: пользователь видит, что именно можно продолжить. Увеличение лимита до пяти завершает тот же проход без подмены метода извлечения."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p48-c06/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p48-c06/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p48-c06/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "В исходном режиме обработаны S1–S3, а S4–S5 явно перечислены как оставшиеся. Уменьшение допустимого входа до 100 символов дает отказ без результата; увеличение прохода до 5 разделов сохраняет полную извлеченную подборку."
  },
  "takeaway": "В исходном режиме обработаны S1–S3, а S4–S5 явно перечислены как оставшиеся. Уменьшение допустимого входа до 100 символов дает отказ без результата; увеличение прохода до 5 разделов сохраняет полную извлеченную подборку.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
