# Финальная валидация согласованности (шаг 2b)

Проверка связей между блоками полного анализа главы после склейки. Соответствие тексту главы не проверяется — оно уже обеспечено валидацией по блокам (каталог `2_валидация_анализа_по_блокам/`).

## Промпт

| Файл                     | Назначение                                      |
|--------------------------|-------------------------------------------------|
| validate_consistency.txt | Проверка согласованности framework, insights, application, limitations |

## Подстановки

- `{book_title}` — название книги
- `{chapter_title}` — название главы
- `{full_analysis_json}` — полный JSON анализа (склейка блоков framework + insights + application + limitations)

## Скрипт через Ollama

`run_consistency_ollama.py` — один вызов Ollama для проверки согласованности блоков. На выходе один JSON-файл.

**Вход (по умолчанию):**
- `../1_анализ_главы/merge.json` — полный анализ (framework, insights, application, limitations)
- `../1_анализ_главы/вход_главы.json` — метаданные главы (book_title, chapter_title)

**Выход:** `consistency_result.json` в каталоге скрипта (или путь через `-o`).

**Формат выхода:** `verdict` (ok | needs_review | bad), `score`, `inconsistencies` — список рассогласованностей с полями type, location, summary.

**Запуск:**
```bash
cd 2b_финальная_валидация_согласованности
python3 run_consistency_ollama.py
# с указанием путей:
python3 run_consistency_ollama.py --merge /path/to/merge.json --chapter /path/to/вход_главы.json -o consistency_result.json
```

## Использование в пайплайне

Вызывается после шага 2a (склейка блоков). При вердикте bad или needs_review — флаг `needs_review` по главе; опционально — «примиряющий» промпт для минимальных правок.

Выход 2b (merge.json) вместе с выходом шага 4 (валидация тегов) подаётся в **шаг 5 — мерж анализа и тегов** (`5_мерж_анализа_и_тегов/`). Результат мержа — вход для шага 6 (генерация эмбеддингов).
