Проект аудита отелей: основные скрипты и документация

- Краулеры: 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
This commit is contained in:
Фёдор
2025-10-16 10:52:09 +03:00
parent 545e199389
commit 0cf3297290
105 changed files with 28743 additions and 0 deletions

110
check_rkn_status.sh Executable file
View File

@@ -0,0 +1,110 @@
#!/bin/bash
# Скрипт для проверки статуса РКН проверки
echo "═══════════════════════════════════════════════════════════════"
echo "🔍 СТАТУС ПРОВЕРКИ РКН (РОСКОМНАДЗОР)"
echo "═══════════════════════════════════════════════════════════════"
# Проверка процесса
if ps aux | grep -v grep | grep "check_rkn_registry.py" > /dev/null; then
PID=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $2}')
CPU=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $3}')
MEM=$(ps aux | grep -v grep | grep "check_rkn_registry.py" | awk '{print $4}')
echo "✅ РКН проверка РАБОТАЕТ"
echo " PID: $PID"
echo " CPU: ${CPU}%"
echo " MEM: ${MEM}%"
else
echo "❌ РКН проверка НЕ РАБОТАЕТ"
fi
echo ""
echo "───────────────────────────────────────────────────────────────"
echo "📊 ПРОГРЕСС ИЗ БАЗЫ ДАННЫХ:"
echo "───────────────────────────────────────────────────────────────"
python3 << 'EOF'
import psycopg2
from urllib.parse import unquote
from datetime import datetime, timedelta
conn = psycopg2.connect(
host='147.45.189.234',
port=5432,
database='default_db',
user='gen_user',
password=unquote('2~~9_%5EkVsU%3F2%5CS')
)
cur = conn.cursor()
# Общая статистика
cur.execute("""
SELECT
COUNT(*) as total_with_inn,
COUNT(CASE WHEN rkn_checked_at IS NOT NULL THEN 1 END) as checked
FROM hotel_main
WHERE owner_inn IS NOT NULL AND owner_inn != '' AND owner_inn != '-'
""")
row = cur.fetchone()
total = row[0]
checked = row[1]
remaining = total - checked
progress = checked * 100 / total if total > 0 else 0
print(f"Отелей с ИНН: {total}")
print(f"Проверено: {checked} ({progress:.1f}%)")
print(f"Осталось: {remaining}")
# Проверено за последние 10 минут
cur.execute("""
SELECT COUNT(*)
FROM hotel_main
WHERE rkn_checked_at > NOW() - INTERVAL '10 minutes'
""")
last_10min = cur.fetchone()[0]
if last_10min > 0:
speed = last_10min / 10 # отелей в минуту
eta_min = remaining / speed if speed > 0 else 0
print(f"\n⚡ СКОРОСТЬ (за последние 10 мин):")
print(f" {last_10min} отелей проверено")
print(f" Скорость: {speed:.1f} отелей/мин")
if eta_min > 0:
print(f" Примерное время до завершения: {eta_min/60:.1f} часов")
# Результаты
cur.execute("""
SELECT
rkn_registry_status,
COUNT(*) as count
FROM hotel_main
WHERE rkn_checked_at IS NOT NULL
GROUP BY rkn_registry_status
""")
print(f"\n📋 РЕЗУЛЬТАТЫ:")
for row in cur.fetchall():
status = row[0] if row[0] else 'NULL'
count = row[1]
percent = count * 100 / checked if checked > 0 else 0
icon = '✅' if status == 'found' else '❓' if status == 'unclear' else '❌'
print(f" {icon} {status:15} | {count:5} ({percent:5.1f}%)")
conn.close()
EOF
echo ""
echo "───────────────────────────────────────────────────────────────"
echo "📋 ПОСЛЕДНИЕ 15 СТРОК ЛОГА:"
echo "───────────────────────────────────────────────────────────────"
if [ -f "rkn_check_all.log" ]; then
tail -15 rkn_check_all.log
else
echo "❌ Лог файл не найден"
fi
echo ""
echo "═══════════════════════════════════════════════════════════════"