# --- START OF FILE server.py ---

from aiohttp import web
import logging
import os
import sys
from datetime import datetime

from database import init_db
from middlewares import admin_auth_middleware
from routes import setup_routes

def setup_logging():
    os.makedirs("logs", exist_ok=True)
    log_format = "%(asctime)s [%(levelname)s] %(message)s"
    logging.basicConfig(
        level=logging.INFO,
        format=log_format,
        handlers=[
            logging.FileHandler(f"logs/server_{datetime.now().date()}.log"),
            logging.StreamHandler(sys.stdout)
        ]
    )
    return logging.getLogger("server")

logger = setup_logging()

OPENAI_API_KEY = "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"
ADMIN_API_KEY = "13542"

async def init_db_on_startup(app):
    logger.info("Инициализация базы данных...")
    await init_db()

# !!! ИЗМЕНЕНИЕ: Создаем асинхронную функцию для инициализации приложения !!!
async def create_app():
    app = web.Application(middlewares=[admin_auth_middleware]) # cors_middleware больше не нужен, Nginx будет его заменять

    app["OPENAI_API_KEY"] = OPENAI_API_KEY
    app["ADMIN_API_KEY"] = ADMIN_API_KEY

    setup_routes(app)
    app.router.add_static("/", ".", show_index=True)
    app.on_startup.append(init_db_on_startup)

    logger.info("Приложение успешно сконфигурировано.")
    return app

# !!! ИЗМЕНЕНИЕ: Убираем прямой запуск, Gunicorn будет делать это сам !!!
if __name__ == "__main__":
    # Этот блок теперь используется только для локального запуска без Docker
    app = create_app()
    web.run_app(app, port=8000, access_log=None)

# --- END OF FILE server.py ---