# Анализ главы по блокам

Анализ выполняется последовательно по четырём блокам. Каждый следующий шаг получает **весь накопленный JSON** (уже извлечённые блоки) для согласованности. После каждого блока — валидация (см. `2_валидация_анализа_по_блокам/`), затем склейка.

## Входные данные (JSON)

Вход этапа 1 — один JSON-файл на главу. Поля используются в подстановках промптов и передаются по пайплайну до шага 7 (payload в Qdrant).

| Поле | Тип | Обязательно | Описание |
|------|-----|-------------|----------|
| `book_id` | string (UUID) | да | ID книги |
| `chapter_id` | string (UUID) | да | ID главы (на шаге 7 — id точки в Qdrant) |
| `chapter_number` | integer | да | Номер главы |
| `chapter_title` | string | да | Название главы → `{chapter_title}` |
| `book_title` | string | да | Название книги → `{book_title}` |
| `chapter_text` | string | да | Текст главы → `{chapter_text}` |
| `author` | string | нет | Автор книги (для payload на шаге 7) |

**Файлы:** `вход_главы.spec.json` — описание формата (JSON Schema); `вход_главы.example.json` — пример. Имя входного файла на главу — на усмотрение пайплайна (например `input.json` или `{book_id}_{chapter_id}.json`).

## Порядок генерации

| Шаг | Промпт | Вход | Выход |
|-----|--------|------|-------|
| 1 | extract_framework.txt | текст главы | `framework` |
| 2 | extract_insights.txt | текст главы + framework | `insights` |
| 3 | extract_application.txt | текст главы + framework + insights | `application` |
| 4 | extract_limitations.txt | текст главы + framework + insights + application | `limitations` |

## Подстановки в промптах

- **Во всех:** `{book_title}`, `{chapter_title}`, `{chapter_text}`
- **Только в шагах 2–4:** `{previous_blocks_json}` — весь накопленный JSON (все уже завалидированные предыдущие блоки). Пример: для extract_insights подставляем только `framework`; для extract_application — объект с ключами `framework` и `insights`; для extract_limitations — объект с `framework`, `insights`, `application`.

## Склейка

Четыре ответа (по одному JSON-объекту с ключом framework / insights / application / limitations) объединяются в один анализ: слияние ключей верхнего уровня без вызова LLM.

## Монолитный промпт

`chapter_analysis_qwen3_prompt.txt` — исходный промпт «всё в одном»; оставлен для сравнения и отката.
