import asyncio import os import logging print("!!! DEBUG START !!!") from sqlalchemy import create_engine from models import Base # Setup logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler("logs/scraper.log"), logging.StreamHandler() ] ) logger = logging.getLogger("GIS-Scraper") DATABASE_URL = "sqlite:///data/gis_archive.db" def init_db(): logger.info("Initializing database...") engine = create_engine(DATABASE_URL) Base.metadata.create_all(engine) logger.info("Database initialized.") async def check_connectivity(): import aiohttp target = "https://dom.gosuslugi.ru" logger.info(f"Checking connectivity to {target}...") try: async with aiohttp.ClientSession() as session: async with session.get(target, timeout=30) as response: if response.status == 200: logger.info("✅ GIS ZHKH is accessible.") return True else: logger.warning(f"⚠️ GIS ZHKH returned status {response.status}") return False except Exception as e: logger.error(f"❌ Connection failed: {e}") return False async def send_tg_report(message): token = os.getenv("TELEGRAM_BOT_TOKEN") chat_id = os.getenv("TELEGRAM_CHAT_ID") if not token or not chat_id: return import aiohttp url = f"https://api.telegram.org/bot{token}/sendMessage" payload = {"chat_id": chat_id, "text": message, "parse_mode": "HTML"} try: async with aiohttp.ClientSession() as session: await session.post(url, json=payload) except Exception as e: logger.error(f"Failed to send TG report: {e}") async def main(): init_db() status = "OK" if await check_connectivity() else "FAILED" report = f""" 🏛️ GIS ZHKH Archiver: Stage 1 Complete ✅ Среда Docker подготовлена. ✅ База данных SQLite инициализирована. ✅ Коннект к dom.gosuslugi.ru: {status} 🚀 Проект запущен. Следующий этап: реализация Persistent Context для авторизации. """ await send_tg_report(report) logger.info("Stage 1 report sent to Telegram.") if __name__ == "__main__": asyncio.run(main())