Files
hotels/SESSION_HISTORY.md

497 lines
17 KiB
Markdown
Raw Normal View History

# 📚 ИСТОРИЯ СЕССИИ - ГИБРИДНЫЙ АУДИТ ОТЕЛЕЙ
**Дата:** 13 октября 2025
**Участник:** Фёдор
**Задача:** Создание гибридного аудита отелей с семантическим поиском, регулярками и Natasha NER
---
## 🎯 **ЧТО СДЕЛАНО:**
### **1. СЕМАНТИЧЕСКИЙ ПОИСК (BGE-M3 Embeddings)**
**Создана таблица `hotel_website_chunks`:**
- Структура: `id`, `text`, `metadata` (JSONB), `embedding` (vector 1024)
- Metadata содержит: `hotel_id`, `url`, `hotel_name`, `region_name`
- Всего обработано: **64 отеля**, **52,334 chunks**
**Создан скрипт обработки:** `process_all_hotels_embeddings.py`
- Chunk Size: 600 символов
- Chunk Overlap: 100 символов
- Batch Size: 8 chunks
- Retry логика: 3 попытки с увеличением timeout
**BGE-M3 API:**
- URL: `http://147.45.146.17:8002/embed`
- API Key: `22564b177aa73b6ac0b8642d7773350ff4c01d4983f028beff15ea247f09fa89`
- Модель: BAAI/bge-m3 (1024 размерность)
**Semantic Search API:** `semantic_search_api.py`
- Порт: 8001
- Эндпоинты: `/stats`, `/search`
- Поиск по vector similarity с фильтрами
**Интеграция в веб-интерфейс:**
- Добавлен семантический поиск в чат-бот
- Развёрнуто в продакшене: `hotel.klientprav.tech`
---
### **2. ГИБРИДНЫЙ АУДИТ (Семантика + Регулярки + Natasha)**
**Установлена Natasha:**
```bash
pip install natasha --break-system-packages
```
**Создан гибридный аудит:** `hybrid_audit_chukotka.py`
- Комбинирует 3 метода: семантику (40%), регулярки (40%), NER (20%)
- Генерирует Excel отчёты с цитатами и URL
- Протестирован на 4 отелях Чукотки
**Результаты тестов:**
- Гостиница «Певек»: 4.36/18 (24.2%)
- «Гостевой дом из бруса»: 3.16/18 (17.6%)
- Отель "Чукотка": 2.64/18 (14.7%)
- «База морских экспедиций Алеут»: 2.04/18 (11.3%)
---
### **3. ИНТЕГРАЦИЯ С n8n**
**Созданы промпты для AI Agent:**
- `prompt.txt` (21 KB) - полный детальный
- `prompt_short.txt` (2.1 KB) - краткий
- **`prompt_json.txt` (3.0 KB)** - **JSON формат (РЕКОМЕНДУЕТСЯ!)**
**17 вопросов для аудита:**
- `questions_17.txt` - текстовый формат
- `questions_17.json` - JSON формат
- **Критерий #6 (Роскомнадзор) проверяется отдельно!**
**Code Nodes для n8n:**
- `n8n_code_generate_questions.js` - генерирует 17 SQL запросов
- `n8n_code_parse_json.js` - парсит JSON ответы от AI Agent
- `n8n_code_check_regex.js` - проверяет регулярками
- `n8n_code_natasha_ner.js` - вызывает Natasha NER API
**Примеры и документация:**
- `n8n_example_json.json` - примеры ответов
- `N8N_SETUP.md` - инструкция по настройке
- `N8N_FILES_SUMMARY.md` - полная сводка файлов
- `N8N_HTTP_REQUEST_NATASHA.md` - настройка HTTP Request для Natasha
---
### **4. NATASHA NER API**
**Создан FastAPI сервис:** `natasha_ner_api.py`
- Порт: **8004**
- Эндпоинты:
- `GET /` - информация
- `GET /health` - проверка здоровья
- `POST /extract` - полное извлечение
- `POST /extract_simple` - упрощённое (для n8n)
**Запуск:**
```bash
cd /root/engine/public_oversight/hotels
python3 -m uvicorn natasha_ner_api:app --host 0.0.0.0 --port 8004 --reload
```
**Доступ из n8n:**
- Локально: `http://localhost:8004`
- Извне: `http://185.197.75.249:8004`
**Примеры cURL:** `natasha_curl_example.sh`
---
## 🗄️ **БАЗА ДАННЫХ:**
### **PostgreSQL:**
- Host: `147.45.189.234`
- Port: `5432`
- Database: `default_db`
- User: `gen_user`
- Password: `2~~9_^kVsU?2^S`
### **Таблицы:**
**1. `hotel_main`** - основная информация об отелях
- `id` (UUID)
- `full_name` (TEXT)
- `region_name` (TEXT)
**2. `hotel_website_processed`** - обработанные страницы
- `hotel_id` (UUID)
- `cleaned_text` (TEXT)
- `url` (TEXT)
**3. `hotel_website_chunks`** - chunks с эмбеддингами
- `id` (UUID)
- `text` (TEXT)
- `metadata` (JSONB) - содержит `hotel_id`, `url`, `hotel_name`, `region_name`
- `embedding` (vector 1024)
**4. `hotel_audit_results`** - результаты аудита
- `hotel_id` (UUID)
- `total_score` (FLOAT)
- `criteria_results` (JSONB)
---
## 📊 **18 КРИТЕРИЕВ АУДИТА:**
1. Юридическая идентификация и верификация (ИНН, ОГРН)
2. Адрес
3. Контакты (телефон, email)
4. Режим работы
5. Политика ПДн (152-ФЗ)
6. **Роскомнадзор (реестр)** ← проверяется отдельно!
7. Договор-оферта / Правила оказания услуг
8. Рекламации и споры
9. Цены/прайс
10. Способы оплаты
11. Онлайн-оплата
12. Онлайн-бронирование
13. FAQ
14. Доступность для ЛОВЗ
15. Партнёры/бренды
16. Команда/сотрудники
17. Уголок потребителя
18. Актуальность документов
---
## 🚀 **ЗАПУЩЕННЫЕ СЕРВИСЫ:**
### **1. Web Interface (продакшн):**
- URL: `http://hotel.klientprav.tech`
- Порт: 8000
- Процесс: `python3 -m uvicorn web_interface:app --host 0.0.0.0 --port 8000 --reload`
### **2. Semantic Search API:**
- URL: `http://localhost:8001`
- Порт: 8001
- Процесс: `python3 -m uvicorn semantic_search_api:app --host 0.0.0.0 --port 8001 --reload`
### **3. BGE-M3 Embedding API:**
- URL: `http://147.45.146.17:8002`
- API Key: `22564b177aa73b6ac0b8642d7773350ff4c01d4983f028beff15ea247f09fa89`
### **4. Natasha NER API:**
- URL: `http://185.197.75.249:8004`
- Порт: 8004
- Процесс: `python3 -m uvicorn natasha_ner_api:app --host 0.0.0.0 --port 8004 --reload`
---
## 📁 **КЛЮЧЕВЫЕ ФАЙЛЫ:**
### **Скрипты:**
- `process_all_hotels_embeddings.py` - обработка всех отелей в chunks
- `check_progress.py` - мониторинг прогресса
- `hybrid_audit_chukotka.py` - гибридный аудит
- `semantic_audit_chukotka.py` - только семантический аудит
- `test_comfort_hotel.py` - тест на отеле Комфорт
### **API сервисы:**
- `semantic_search_api.py` - семантический поиск
- `natasha_ner_api.py` - Natasha NER
- `web_interface.py` - веб-интерфейс с чат-ботом
### **n8n интеграция:**
- `prompt_json.txt` - промпт для AI Agent (JSON формат)
- `questions_17.json` - 17 вопросов
- `n8n_code_generate_questions.js` - генерация SQL запросов
- `n8n_code_parse_json.js` - парсинг ответов AI Agent
- `n8n_code_check_regex.js` - проверка регулярками
- `n8n_code_natasha_ner.js` - вызов Natasha NER
- `natasha_curl_example.sh` - примеры cURL
### **Документация:**
- `N8N_SETUP.md` - настройка n8n
- `N8N_FILES_SUMMARY.md` - сводка файлов
- `N8N_HTTP_REQUEST_NATASHA.md` - настройка HTTP Request
- `NATASHA_API_USAGE.md` - использование Natasha API
- `QUICK_START.md` - быстрый старт проекта
- `PROGRESS_STATUS.md` - статус проекта
### **Отчёты:**
- `hybrid_audit_chukotka_20251013_162428.xlsx` - последний гибридный отчёт
- `semantic_audit_chukotka_20251013_141737.xlsx` - семантический отчёт
- `audit_Чукотский_автономный_округ_20251012_121144.xlsx` - старый отчёт
---
## 🔄 **WORKFLOW В n8n:**
```
┌─────────────────────────────┐
│ 1. Start (hotel_id) │
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 2. Code: Generate 17 SQL │ ← n8n_code_generate_questions.js
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 3. Loop Over Items (17x) │
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 4. PostgreSQL: Regex Search │ ← Ищет в hotel_website_processed
│ (с агрегацией GROUP BY) │
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 5. Code: Process Results │ ← Обрабатывает пустые результаты
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 6. HTTP Request: Natasha │ ← http://185.197.75.249:8004
│ (только для критериев │ /extract_simple
│ 1 и 2) │
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 7. Code: Combine Scores │ ← final_score = MAX(regex, ner)
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 8. Aggregate (17 → 1) │
└──────────────┬──────────────┘
┌─────────────────────────────┐
│ 9. PostgreSQL: Save Results │
└─────────────────────────────┘
```
---
## 🧪 **РЕЗУЛЬТАТЫ ТЕСТОВ:**
### **Тест 1: Семантический аудит Чукотки**
```
Гостиница «Певек»: 10.50/18 (58.3%)
«Гостевой дом из бруса»: 8.60/18 (47.8%)
Отель "Чукотка": 7.40/18 (41.1%)
«База морских экспедиций Алеут»: 2.00/18 (11.1%)
```
### **Тест 2: Гибридный аудит Чукотки**
```
Гостиница «Певек»: 4.36/18 (24.2%)
«Гостевой дом из бруса»: 3.16/18 (17.6%)
Отель "Чукотка": 2.64/18 (14.7%)
«База морских экспедиций Алеут»: 2.04/18 (11.3%)
```
### **Тест 3: Отель "Комфорт" (Камчатка)**
```
n8n AI Agent: 6.0/17 (35.3%)
Регулярки: 5.0/17 (29.4%)
Разница: AI лучше на 1.0 балл
```
**Вывод:** Гибридный подход (AI + Regex + NER) даёт лучшие результаты!
---
## 🔧 **ТЕХНИЧЕСКИЙ СТЕК:**
### **Backend:**
- Python 3.12
- FastAPI
- PostgreSQL 14+ с pgvector
- psycopg2
- Sentence Transformers (BGE-M3)
- Natasha (NER)
### **Frontend:**
- HTML/CSS/JavaScript
- Веб-интерфейс на FastAPI
### **Automation:**
- n8n (workflow automation)
- Ollama (LLM для AI Agent)
---
## 📝 **ВАЖНЫЕ КОМАНДЫ:**
### **Запуск сервисов:**
```bash
# Web Interface (продакшн)
cd /root/engine/public_oversight/hotels
python3 -m uvicorn web_interface:app --host 0.0.0.0 --port 8000 --reload
# Semantic Search API
python3 -m uvicorn semantic_search_api:app --host 0.0.0.0 --port 8001 --reload
# Natasha NER API
python3 -m uvicorn natasha_ner_api:app --host 0.0.0.0 --port 8004 --reload
# Обработка эмбеддингов (фоновый процесс)
nohup python3 process_all_hotels_embeddings.py > embeddings_processing.log 2>&1 &
```
### **Мониторинг:**
```bash
# Проверка прогресса эмбеддингов
python3 check_progress.py
# Проверка запущенных процессов
ps aux | grep uvicorn
ps aux | grep python3
# Логи
tail -f embeddings_processing.log
```
### **Тестирование:**
```bash
# Гибридный аудит Чукотки
python3 hybrid_audit_chukotka.py
# Тест отеля Комфорт
python3 test_comfort_hotel.py
# Проверка Natasha API
curl http://localhost:8004/health
```
---
## 🌐 **ДОСТУП К СЕРВИСАМ:**
### **Из локальной сети:**
- Web Interface: `http://185.197.75.249:8000`
- Semantic Search: `http://185.197.75.249:8001`
- Natasha NER: `http://185.197.75.249:8004`
### **Из интернета:**
- Продакшн: `http://hotel.klientprav.tech`
### **SSH доступ:**
```bash
ssh root@185.197.75.249
cd /root/engine/public_oversight/hotels
```
---
## 📊 **СТАТИСТИКА:**
### **База данных:**
- Всего отелей: **116**
- Всего страниц: **52,702**
- Обработано отелей: **64**
- Всего chunks: **52,334**
- Осталось обработать: **52 отеля**
### **Регионы:**
- Всего регионов с эмбеддингами: **зависит от обработки**
- Протестированы: Чукотский АО, Камчатский край
---
## 🎯 **СЛЕДУЮЩИЕ ШАГИ:**
### **1. Завершить обработку эмбеддингов:**
```bash
# Продолжить обработку оставшихся 52 отелей
python3 process_all_hotels_embeddings.py
```
### **2. Настроить n8n workflow:**
- Импортировать промпт из `prompt_json.txt`
- Настроить Loop с 17 вопросами
- Подключить PostgreSQL для регулярок
- Добавить HTTP Request для Natasha NER
### **3. Открыть порт 8004 для Natasha API:**
```bash
sudo ufw allow 8004/tcp
```
### **4. Масштабировать на все регионы:**
- Запустить аудит для всех 116 отелей
- Сгенерировать отчёты по регионам
- Сохранить результаты в БД
---
## 🐛 **ИЗВЕСТНЫЕ ПРОБЛЕМЫ:**
1. **API таймауты:** Решено через retry логику и уменьшение batch size
2. **Дубли в PostgreSQL результатах:** Решено через `GROUP BY` и агрегацию
3. **n8n AI Agent не всегда ищет в базе:** Решено через улучшенный промпт
4. **Регулярки `\b` не работают в PostgreSQL:** Заменены на `\y` или убраны
---
## 📞 **КОНТАКТЫ И ССЫЛКИ:**
- **BGE-M3 API:** `http://147.45.146.17:8002/docs`
- **Graphiti API:** `http://185.197.75.249:9100/docs` (не используется для аудита)
- **Продакшн:** `http://hotel.klientprav.tech`
- **Сервер:** `185.197.75.249`
---
## 💾 **BACKUP И ВОССТАНОВЛЕНИЕ:**
### **Важные файлы для бэкапа:**
```bash
# Конфигурация
.env
# Скрипты
process_all_hotels_embeddings.py
hybrid_audit_chukotka.py
semantic_search_api.py
natasha_ner_api.py
web_interface.py
# n8n интеграция
prompt_json.txt
questions_17.json
n8n_code_*.js
# Документация
*.md
```
### **Восстановление сессии:**
1. SSH на сервер: `ssh root@185.197.75.249`
2. Перейти в проект: `cd /root/engine/public_oversight/hotels`
3. Проверить сервисы: `ps aux | grep uvicorn`
4. Запустить недостающие сервисы (см. "Запуск сервисов")
5. Проверить прогресс: `python3 check_progress.py`
---
## 🎉 **ДОСТИЖЕНИЯ:**
✅ Создана система семантического поиска с BGE-M3
✅ Интегрирована Natasha NER для извлечения сущностей
✅ Создан гибридный аудит (3 метода)
✅ Подготовлена полная интеграция с n8n
✅ Развёрнуто в продакшене
✅ Протестировано на реальных отелях
---
**Дата создания:** 13 октября 2025
**Автор:** AI Assistant + Фёдор
**Версия:** 1.0