#!/usr/bin/env python3
"""
Упрощенный веб-интерфейс без сложных БД запросов
"""
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
import uvicorn
app = FastAPI(title="Система аудита отелей")
@app.get("/")
async def root():
return HTMLResponse("""
Аудит Отелей - Общественный Контроль
🏨 Система аудита отелей
📊 Статус по регионам
| Регион |
Отелей |
Спарсено |
Проверено |
Средний балл |
Действия |
| Камчатский край |
159 |
82 |
159 |
10.8/20 |
|
| Орловская область |
68 |
29 |
68 |
10.6/20 |
|
| Чукотский автономный округ |
12 |
4 |
12 |
11.7/20 |
Старый аудит |
""")
@app.get("/api/stats")
async def get_stats():
"""Упрощенная статистика"""
return {
"total_hotels": 33773,
"crawled_sites": 115,
"audited_hotels": 239,
"avg_score": 11.0,
"regions": [
{"region_name": "Камчатский край", "total_hotels": 159, "crawled": 82, "audited": 159, "avg_score": 10.8},
{"region_name": "Орловская область", "total_hotels": 68, "crawled": 29, "audited": 68, "avg_score": 10.6},
{"region_name": "Чукотский автономный округ", "total_hotels": 12, "crawled": 4, "audited": 12, "avg_score": 11.7}
]
}
@app.get("/api/audit/download/{region}")
async def download_audit(region: str):
"""Скачать Excel отчет по аудиту"""
import os
from fastapi.responses import FileResponse
# Ищем последний файл аудита для региона
region_safe = region.replace(' ', '_')
audit_dir = '/root/engine/public_oversight/hotels'
try:
files = [f for f in os.listdir(audit_dir) if f.startswith(f'audit_{region_safe}') and f.endswith('.xlsx')]
if not files:
return {"error": f"Файл аудита для региона '{region}' не найден. Сначала запустите аудит."}
# Берем последний файл (по дате в имени)
files.sort(reverse=True)
latest_file = files[0]
file_path = os.path.join(audit_dir, latest_file)
return FileResponse(
path=file_path,
filename=latest_file,
media_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
except Exception as e:
return {"error": str(e)}
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8889)