Files
tech/8_сохранение_postgres/README.md
2026-02-01 17:01:21 +03:00

46 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сохранение в Postgres (шаг 8)
Сохранение анализа главы и тегов в реляционную БД: книга, глава, запись в `chapter_analyses`, теги в `tags`, связи в `chapter_tags`. Вход — merged JSON (шаг 5) с метаданными из этапа 1.
## Схема
Перед первым запуском применить схему:
```bash
psql -h localhost -U n8n -d n8n -f schema.sql
# или через docker: docker exec -i postgres psql -U n8n -d n8n < 8_сохранение_postgres/schema.sql
```
Таблицы: `books`, `chapters`, `chapter_analyses`, `tags`, `chapter_tags` (см. ARCHITECTURE_SUMMARY.md).
## Вход
- **merged JSON** (шаг 5): book_id, chapter_id, chapter_number, chapter_title, book_title, author, framework, insights, application, limitations, tags. Метаданные должны быть подмешаны через `--input-chapter` на шаге 5.
## Действия
1. Upsert книги (books) по book_id.
2. Upsert главы (chapters) по chapter_id.
3. Insert/update анализа в chapter_analyses (analysis_result = framework + insights + application + limitations).
4. Get-or-create тегов в tags (name, category); связи в chapter_tags (chapter_id, tag_id, confidence, validated, source='ai_validation').
## Использование
```bash
pip install -r requirements.txt # один раз
python3 save_to_postgres.py 5_мерж_анализа_и_тегов/merged_with_tags.json [--validation-score 0.95]
```
## Переменные окружения
| Переменная | По умолчанию | Описание |
|------------|--------------|----------|
| `DATABASE_URL` | — | Полный URL (postgresql://user:pass@host:port/dbname). Если задан, остальные игнорируются. |
| `POSTGRES_HOST` | localhost | Хост Postgres |
| `POSTGRES_PORT` | 5432 | Порт |
| `POSTGRES_USER` | n8n | Пользователь |
| `POSTGRES_PASSWORD` | n8n_password | Пароль |
| `POSTGRES_DB` | n8n | Имя БД |
В Docker используйте `POSTGRES_HOST=postgres` (имя сервиса).