"""
DrHider — Managed Flask приложение на платформе Штурвал.

Приложение создаётся фабрикой create_app().
Штурвал запускает Flask самостоятельно (без Dockerfile/gunicorn).

Роуты разнесены по blueprint'ам:
- main_bp: GET /          — веб-интерфейс
- health_bp: GET /health   — проверка живости
- api_bp: POST /api/drhider — обфускация документов
"""

import os
import sys
from flask import Flask

# Добавляем корень проекта в sys.path для импорта пакета drhider
_sys_path_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if _sys_path_root not in sys.path:
    sys.path.insert(0, _sys_path_root)

# Версия приложения (меняется при изменениях)
VERSION = "0.0.29"


def create_app():
    """Создать и настроить Flask-приложение.

    Штурвал запускает из директории site/:
        from app import app

    Поэтому routes/ доступен как обычный подпакет.

    Returns:
        Экземпляр Flask с зарегистрированными blueprint'ами.
    """
    app = Flask(__name__)

    # Конфигурация
    app.config["VERSION"] = VERSION
    app.config["MAX_CONTENT_LENGTH"] = 200 * 1024 * 1024  # 200 MB

    # Регистрируем blueprint'ы
    from routes import register_routes

    register_routes(app)

    # Запрещаем кэширование — F5 всегда грузит свежую страницу
    @app.after_request
    def no_cache(response):
        response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate"
        response.headers["Pragma"] = "no-cache"
        response.headers["Expires"] = "0"
        return response

    return app


# Экземпляр приложения — точка входа для Штурвала
app = create_app()

# Штурвал запускает: cd site && python app.py
if __name__ == "__main__":
    from waitress import serve
    serve(app, host="0.0.0.0", port=5000, threads=8)



