"""elmAI — точка входа Flask-приложения. Запуск через gunicorn: gunicorn -w 4 -b 127.0.0.1:8000 web.app:app Структура модулей: api/ — REST-эндпоинты, БД, скрипты brain/ — LLM-клиент, промпты obd/ — ELM327-протокол (AndrOBD) """ import sys import logging from pathlib import Path # Добавляем корень проекта в PYTHONPATH для импорта api/, brain/, obd/ sys.path.insert(0, str(Path(__file__).parent.parent)) from flask import Flask, jsonify, redirect, render_template, request, send_from_directory from api.config import load from api.routes import register as register_api from api.dtc import register as register_dtc from api.ping import register as register_ping logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(name)s] %(message)s") app = Flask(__name__) config = load() register_api(app) register_dtc(app) register_ping(app) @app.route("/") def index(): """Главная страница.""" return render_template("index.html") @app.route("/elmer.apk") def download_apk(): """Прямая ссылка на APK.""" return send_from_directory("static", "app-debug.apk", as_attachment=True, download_name="elmer.apk") if __name__ == "__main__": print(f"🌐 elmAI Web: http://localhost:5005") app.run(host="0.0.0.0", port=5005, debug=False)