# Извлечение тегов (шаг 3)

Отдельный шаг пайплайна после финальной валидации согласованности (2b). ИИ использует уже структурированный анализ главы (каркас, инсайты, применение) и оригинальный текст для извлечения тегов по категориям.

## Промпт

| Файл             | Назначение                                      |
|------------------|-------------------------------------------------|
| extract_tags.txt | Извлечение тегов по категориям из валидированного анализа |

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

- `{book_title}` — название книги
- `{chapter_title}` — название главы
- `{framework}` — JSON блока framework
- `{insights}` — JSON блока insights
- `{application}` — JSON блока application
- `{limitations}` — JSON блока limitations (опционально)
- `{chapter_text}` — оригинальный текст главы (можно обрезать по лимиту токенов)
- `{allowed_tags_json}` — актуальный список допустимых тегов по категориям (из БД `tags`)

## Вход

Валидированный анализ главы (все блоки) + оригинальный текст главы + словарь допустимых тегов.

## Выход

JSON с тегами по категориям (ключи на английском: `principle`, `psychology`, `method`, `result`, `context`) и confidence score для каждого тега; при необходимости — кандидаты в `proposed` с полем `category` из того же набора. Маппинг категорий: ARCHITECTURE_SUMMARY.md → раздел «Хранение данных» → таблица `tags`.

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

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

**Вход (по умолчанию):**
- `../1_анализ_главы/merge.json` — полный анализ (framework, insights, application, limitations)
- `../1_анализ_главы/вход_главы.json` — текст главы и метаданные
- `allowed_tags.json` — допустимые теги по категориям (объект с ключами principle, psychology, method, result, context и массивами строк). Если файла нет — используется пустой список (модель вернёт только блок `proposed`). Пример: `allowed_tags.example.json`.

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

**Формат выхода:** `tags` (по категориям: principle, psychology, method, result, context — массивы объектов `{ "tag", "confidence" }`), `proposed` (кандидаты в новые теги).

**Запуск:**
```bash
cd 3_извлечение_тегов
# подготовить список тегов (скопировать пример или экспорт из БД):
cp allowed_tags.example.json allowed_tags.json
python3 run_extract_tags_ollama.py
# с указанием путей:
python3 run_extract_tags_ollama.py --merge /path/to/merge.json --chapter /path/to/вход_главы.json --allowed-tags allowed_tags.json -o extracted_tags.json
```

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

Вызывается после шага 2b (финальная валидация). Модель: qwen3-14b:8bit (или аналог). Перед вызовом в промпт подставляется актуальный список тегов из БД (или из файла `allowed_tags.json`).
