- Краулеры: smart_crawler.py, regional_crawler.py - Аудит: audit_orel_to_excel.py, audit_chukotka_to_excel.py - РКН проверка: check_rkn_registry.py, recheck_unclear_rkn.py - Отчёты: create_orel_horizontal_report.py - Обработка: process_all_hotels_embeddings.py - Документация: README.md, DB_SCHEMA_REFERENCE.md
17 KiB
📚 ИСТОРИЯ СЕССИИ - ГИБРИДНЫЙ АУДИТ ОТЕЛЕЙ
Дата: 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:
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 Agentn8n_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)
✅ Запуск:
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_nameembedding(vector 1024)
4. hotel_audit_results - результаты аудита
hotel_id(UUID)total_score(FLOAT)criteria_results(JSONB)
📊 18 КРИТЕРИЕВ АУДИТА:
- Юридическая идентификация и верификация (ИНН, ОГРН)
- Адрес
- Контакты (телефон, email)
- Режим работы
- Политика ПДн (152-ФЗ)
- Роскомнадзор (реестр) ← проверяется отдельно!
- Договор-оферта / Правила оказания услуг
- Рекламации и споры
- Цены/прайс
- Способы оплаты
- Онлайн-оплата
- Онлайн-бронирование
- FAQ
- Доступность для ЛОВЗ
- Партнёры/бренды
- Команда/сотрудники
- Уголок потребителя
- Актуальность документов
🚀 ЗАПУЩЕННЫЕ СЕРВИСЫ:
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- обработка всех отелей в chunkscheck_progress.py- мониторинг прогрессаhybrid_audit_chukotka.py- гибридный аудитsemantic_audit_chukotka.py- только семантический аудитtest_comfort_hotel.py- тест на отеле Комфорт
API сервисы:
semantic_search_api.py- семантический поискnatasha_ner_api.py- Natasha NERweb_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 Agentn8n_code_check_regex.js- проверка регуляркамиn8n_code_natasha_ner.js- вызов Natasha NERnatasha_curl_example.sh- примеры cURL
Документация:
N8N_SETUP.md- настройка n8nN8N_FILES_SUMMARY.md- сводка файловN8N_HTTP_REQUEST_NATASHA.md- настройка HTTP RequestNATASHA_API_USAGE.md- использование Natasha APIQUICK_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)
📝 ВАЖНЫЕ КОМАНДЫ:
Запуск сервисов:
# 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 &
Мониторинг:
# Проверка прогресса эмбеддингов
python3 check_progress.py
# Проверка запущенных процессов
ps aux | grep uvicorn
ps aux | grep python3
# Логи
tail -f embeddings_processing.log
Тестирование:
# Гибридный аудит Чукотки
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 доступ:
ssh root@185.197.75.249
cd /root/engine/public_oversight/hotels
📊 СТАТИСТИКА:
База данных:
- Всего отелей: 116
- Всего страниц: 52,702
- Обработано отелей: 64
- Всего chunks: 52,334
- Осталось обработать: 52 отеля
Регионы:
- Всего регионов с эмбеддингами: зависит от обработки
- Протестированы: Чукотский АО, Камчатский край
🎯 СЛЕДУЮЩИЕ ШАГИ:
1. Завершить обработку эмбеддингов:
# Продолжить обработку оставшихся 52 отелей
python3 process_all_hotels_embeddings.py
2. Настроить n8n workflow:
- Импортировать промпт из
prompt_json.txt - Настроить Loop с 17 вопросами
- Подключить PostgreSQL для регулярок
- Добавить HTTP Request для Natasha NER
3. Открыть порт 8004 для Natasha API:
sudo ufw allow 8004/tcp
4. Масштабировать на все регионы:
- Запустить аудит для всех 116 отелей
- Сгенерировать отчёты по регионам
- Сохранить результаты в БД
🐛 ИЗВЕСТНЫЕ ПРОБЛЕМЫ:
- API таймауты: Решено через retry логику и уменьшение batch size
- Дубли в PostgreSQL результатах: Решено через
GROUP BYи агрегацию - n8n AI Agent не всегда ищет в базе: Решено через улучшенный промпт
- Регулярки
\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 И ВОССТАНОВЛЕНИЕ:
Важные файлы для бэкапа:
# Конфигурация
.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
Восстановление сессии:
- SSH на сервер:
ssh root@185.197.75.249 - Перейти в проект:
cd /root/engine/public_oversight/hotels - Проверить сервисы:
ps aux | grep uvicorn - Запустить недостающие сервисы (см. "Запуск сервисов")
- Проверить прогресс:
python3 check_progress.py
🎉 ДОСТИЖЕНИЯ:
✅ Создана система семантического поиска с BGE-M3
✅ Интегрирована Natasha NER для извлечения сущностей
✅ Создан гибридный аудит (3 метода)
✅ Подготовлена полная интеграция с n8n
✅ Развёрнуто в продакшене
✅ Протестировано на реальных отелях
Дата создания: 13 октября 2025
Автор: AI Assistant + Фёдор
Версия: 1.0