56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
"""
|
|
Say — голосовой ассистент с Whisper + LLM.
|
|
|
|
Точка входа. Создаёт Flask-приложение, регистрирует Blueprints,
|
|
настраивает логирование и запускает сервер.
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
|
|
from flask import Flask
|
|
|
|
from config import FLASK_HOST, FLASK_PORT, LOG_LEVEL
|
|
from routes import pages_bp, api_bp
|
|
|
|
|
|
def create_app() -> Flask:
|
|
"""
|
|
Фабрика Flask-приложения.
|
|
|
|
Собирает приложение из Blueprint'ов:
|
|
- pages_bp — HTML-страницы (/, /health)
|
|
- api_bp — REST API (/api/*)
|
|
"""
|
|
app = Flask(__name__)
|
|
|
|
# --- Blueprints ---
|
|
app.register_blueprint(pages_bp)
|
|
app.register_blueprint(api_bp)
|
|
|
|
# --- Логирование ---
|
|
logging.basicConfig(
|
|
level=getattr(logging, LOG_LEVEL.upper(), logging.INFO),
|
|
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
|
|
stream=sys.stdout,
|
|
)
|
|
|
|
return app
|
|
|
|
|
|
# =============================================================================
|
|
# Запуск
|
|
# =============================================================================
|
|
|
|
if __name__ == "__main__":
|
|
application = create_app()
|
|
logging.info("Say server starting on %s:%s", FLASK_HOST, FLASK_PORT)
|
|
application.run(
|
|
host=FLASK_HOST,
|
|
port=FLASK_PORT,
|
|
debug=False,
|
|
)
|
|
else:
|
|
# WSGI-сервер (gunicorn) импортирует `application`
|
|
application = create_app()
|